JastaFly
@JastaFly

Простой компонент внутри простого компонента Битрикс?

Слышал что в Битриксе нельзя вызывать компонент внутри простого компонента, мол это нарушает принципы Bitrix Framework и может привести к проблемам с кэшированием. Так ли это?!?? И если да, то что делать если вызов компонента, внутри простого компонента необходим, переделывать компонент родитель под комплексный компонент?!?
  • Вопрос задан
  • 486 просмотров
Решения вопроса 1
@PetrPo
Зависит от компонента:
1. Если подключение шаблона (result_modifier.php и template.php) находится в кешироемой области (см. как написан компонент) то проблемы будут при изменении/добавлении/удалении элементов инфоблока к которому подключен вложенный компонент
2. Файл component_epilog.php всегда находится в НЕкешируемой области. Если только это НЕ случай из твоего вопроса, поэтому размещать простые компоненты в нем можно

Цитата в ответе Елена
Вот этот $component решает проблему кеширования.

Этот параметр никак не влияет на кеширование))

что делать если вызов компонента, внутри простого компонента необходим, переделывать компонент родитель под комплексный компонент?!?

Зависит от ситуации, например
- получать нужные данные в result_modifier
- или вызывать компонент в component_epilog, а потом закидывать js-ом в нужное место
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lenchik_boldireva
Веб-разработчик
Это ничего не нарушает, взять тех же лидеров маркетплейса Аспро, у них простые компоненты добавлены в код других простых. Проблемы с кешированием действительно есть, но их можно решить простой конструкцией, привожу пример кода вызова компонента внутри другого:
"USE_PRICE_COUNT" => "Y",
    		"USE_PRODUCT_QUANTITY" => "N"
    	),
        $component
    );?>


Вот этот $component решает проблему кеширования.
Отключать кеш родительского компонента - вот всем костылям костыль, и нарушение методологии Битрикс...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы