Рейтинг: 12.4894  
На голосовании
Предложил Лавриненко Максим 21.09.2015 14:57:04

События для компонентов

Очень бы пригодились события на уровне компонентов, т.к. бывают ситуации когда стандартный компонент устраивает вплоть до шаблона, но требуется внести небольшую обработку данных (которая тем не менее не изменяет формата данных).

OnBeforeComponent($componentName, $templateName, &$arParams);
OnBeforeComponentTemplate($componentName, $templateName, &$arParams, &$arResult);
+ After-версии без передачи данных по ссылке

Идея особенно актуальна для корпоративного портала где модифицировать стандартные компоненты и шаблоны оказывается очень нежелательно, т.к. после обновлений нередко возникают проблемы.

Серьёзные изменения с помощью таких событий не сделать, кроме того они могут и запутать, однако в некоторых случаях будут очень к месту.
Рейтинг: 1.8443  
На голосовании
Предложил Шишкин Алексей 17.08.2015 17:10:55

Режим AJAX для компонентов с проверкой id компонента

Если на странице 2 аяксовых компонента, то отрабатывает первый из них. (Проверялось на корзине и веб формах).
В компоненте корзины

if ($_REQUEST["AJAX_CALL"] == "Y" || $_REQUEST["is_ajax_post"] == "Y") {
 die();
}
Все что после - идёт лесом.
По идее данные должны соотносится с компонентом, которому они предназначаются.

З.Ы. Я не говрю уже о

preg_match_all('/action=(["\']{1})(.*?)\1/i', $arData[$key], $arAction);
$url = $arAction[2][0];

if ($url === '' || $this->__isAjaxURL($url))
{
 $arData[$key] = CAjax::GetForm($arData[$key+1], 'comp_'.$this->componentID, $this->componentID, true, $this->bShadow);
}
else
{
 $new_url = str_replace(CAjax::GetSessionParam($this->componentID), '', $url);
 $arData[$key] = str_replace($url, $new_url, $arData[$key]);
}

$bDataChanged = true; 
в CComponentAjax.
В общем возмущению нет предела.
Спрашивается, для чего нужны компоненты, если ничего толком не работает?
З.Ы.Ы Битрикс такой битрикс
Рейтинг: 2.1453  
На голосовании
Предложил Ерофеев Анатолий 05.06.2015 10:15:17

Частичное обновление профиля пользователя

Компонент профиль пользователя (main.profile) всегда обновляет пользователя целиком. Он каждый раз ожидает, что в $_REQUEST к нему придут EMAIL, LOGIN, NAME и все остальные обычные поля.

Получается, если мы хотим дать пользователю редактировать только, например, пароль, то все остальные поля нужно выводить в hidden-инпутах. Это неудобно и небезопасно - пользователь может подделать значения hidden полей и всё-таки обновить скрытые поля (поля обычно скрыты если не используются или содержат служебную информацию).

Предлагаю добавить в компонент настройку - какие именно поля разрешать редактировать, выводить в стандартном шаблоне только их и вытаскивать из $_REQUEST только их.
Рейтинг: 10.9725  
На голосовании
Предложил Ерофеев Анатолий 19.05.2015 07:52:24

События импорта справочников (highload блоков)

В компоненте импорта торгового каталога из 1С (catalog.import.1c) есть удачные события: OnBeforeCatalogImport1C и OnSuccessCatalogImport1C.
Очень хотелось бы увидеть аналоги в компоненте импорта справочника (catalog.import.hl).
Рейтинг: 5.7085  
На голосовании
Предложил Бугай Максим 13.04.2015 03:29:58

Раздельные компоненты каталога с SKU и без

Поддержка SKU - это огромные портянки кода, иногда в самых неожиданных местах, и в тех случаях, когда они не нужны, их приходится очень долго и очень аккуратно вычищать. К тому же приличная часть этого кода расположена в шаблонах, что не по фен-шую. Поэтому, собственно, предложение - разделить ветки компонентов на "простые" - текущую ветку, с убранными наворотами, и "продвинутые" - с кодом поддержки SKU, включенным в компонент, а не в шаблон.
Рейтинг: 0.3311  
Внедрено
Предложил Терещенко Вячеслав 11.12.2014 22:19:21

Настраиваемый зуммер в карточке товара

Добрый вечер!
Сделайте пожалуйста в карточке товара встроенный зуммер с различными настраиваемыми параметрами. Что-то наподобие «Magic Zoom Plus». Очень нужен такой компонент!
Я думаю многие эту идею одобрят и поддержат. Спасибо!
Рейтинг: 0  
Ответил Жуков Евгений 02.02.2015 10:56:00
Реализовано в iblock 14.5.4
Рейтинг: 1.2265  
На голосовании
Предложил Мелюков Сергей 26.09.2014 17:02:16

Дать возможность указывать в методе CBitrixComponent::clearComponentCache id кеша

Есть компонент A который выводит инфо об элементе инфоблока.
Вывод кешируется по ID элемента.
Иногда возникает необходимость сбросить кеш компонента A когда в компоненте B происходит какое-то событие.
К сожалению, CBitrixComponent::clearComponentCache сбрасывает кеш всего компонента.
А необходимо иметь возможность сбросить кеш только частично.
Например компонентом A закешировано 100 элементов.
Если я сброшу весь кеш компонента A через CBitrixComponent::clearComponentCache, то при следующих обращениях к компоненту, его кеш будет заполняться заново, даже если был изменен только один элемент. А если бы была возможность указывать ID кеша, то можно было бы сбросить только часть кеша компонента.
Рейтинг: 2.5479  
На голосовании
Предложил Тулунин Константин 23.09.2014 19:46:08

Добавить редактирование параметров компонента встроенного в шаблон другого компонента

Для корректного подключения скриптов и стилей компонента находящегося в шаблоне другого компонента необходимо добавить объект объект компонента в код вызова. ( $component ). Однако при этом пропадает кнопка редактирования настроек компонента.
Хотелось бы иметь какой-нибудь параметр в настройках, разрешающих принудительную настройку компонентов( например в массиве $arFunctionParams).
Рейтинг: 10.1607  
На голосовании
Предложил Сальников Дмитрий 12.08.2014 12:41:59

Полное наследование компонентов

Сейчас реализована возможность наследоваться от других компонентов следующим образом:
CBitrixComponent::includeComponentClass("bitrix:catalog.viewed.products");
class CSaleBestsellersComponent extends CCatalogViewedProductsComponent{ 
... 
}
Но так происходит наследование только class.php. т.е. если я хочу только чуть-чуть изменить логику обхода элементов полученных в getlist, я все равно должен скопировать и шаблон, и описание, и параметры, и языковые файлы.

Как не странно, но указание напрямую адреса наследуемого файла параметров приводит к ошибке в публичке (повторные ajax запросы и зависание в визуальном редакторе при попытке отредактировать параметры компонента).

include($_SERVER['DOCUMENT_ROOT'].'/bitrix/components..../.parameters.php') ;
Хотелось бы увидеть что-то вроде:
CBitrixComponen::includeParametrsByParentName("bitrix:catalog.viewed.products");  
CBitrixComponen::includeTenplateByParentName("bitrix:catalog.viewed.products",'.default');

поскольку файл параметров да и шаблон, могут быть переопределены в шаблонах сайта, то стоит в таких функциях добавить второй параметр шаблон сайта.
Рейтинг: 26.0777  
На голосовании
Предложил Шерлок Холмс 15.07.2014 14:29:48

Подписи компонентов в режиме правки

Добавить возможнжость задавать свои подписи для компонентов в режиме правки