1. Стили дочернего компонента. При первом исполнении шаблона дочерний компонент передает информацию вызывающему компоненту: "Друг, у меня тут есть файл(ы) стилей, учти это!". Родительский компонент сохраняет список файлов стилей в своем кеше. При хите в кеш извлекается список файлов и добавляется на страницу через $APPLICATION->SetAdditionalCSS(). Интересно, что поддерживаются вложенные вызовы компонентов, т.е. дочерний компонент передает не только свой файл стилей, но и файлы всех компонентов, которые он сам вызывает.
Чтобы такая схема заработала, необходимо, чтобы дочерний компонент знал, что его вызывает родительский компонент. Делается это через передачу в параметрах ф-ии $APPLICATION->IncludeComponent() объекта текущего компонента (переменная $component , доступная в шаблоне). Код template.php родительского компонента:
Решение работает. Была такая проблема - вложенные компоненты в карточке ломались при выходе из админа и повторном обновлении страницы. Копал в сторону кеша, подключения скриптов (в component_epilog.php) и прочее, вплоть до $APPLICATION->ShowHead() в самом компоненте. Банальное добавление переменной $component спасло.
1. Стили дочернего компонента. При первом исполнении шаблона дочерний компонент передает информацию вызывающему компоненту: "Друг, у меня тут есть файл(ы) стилей, учти это!". Родительский компонент сохраняет список файлов стилей в своем кеше. При хите в кеш извлекается список файлов и добавляется на страницу через $APPLICATION->SetAdditionalCSS(). Интересно, что поддерживаются вложенные вызовы компонентов, т.е. дочерний компонент передает не только свой файл стилей, но и файлы всех компонентов, которые он сам вызывает.
Чтобы такая схема заработала, необходимо, чтобы дочерний компонент знал, что его вызывает родительский компонент. Делается это через передачу в параметрах ф-ии $APPLICATION->IncludeComponent() объекта текущего компонента (переменная $component , доступная в шаблоне). Код template.php родительского компонента: