Уже довольно давно прошёл тот период, когда я бился головой об стену, пытаясь понять почему в битриксе что-то не получается или работает не так, как я предполагаю. Большая часть проблем решается после беглого взгляда на код компонента или модуля. Но сегодня битрикс меня удивил!
Заказчик попросил добавить <link rel="next" href=""/> и подобные на те страницы, где есть пейджинация. Решается всё очень просто - в component_epilog.php смотрим в переменную $arResult["NAV_RESULT"] и берём оттуда нужные нам параметры, после чего вызывает $APPLICATION->AddHeadString. Единственный нюанс, что содержимое $arResult по ключу NAV_RESULT должно кэшироваться, но делается это тоже просто
И вот, очередь дошла до страницы поиска. Безобидный компонент search.page заботливо вытаскивает из базы всю интересующую нас информацию. Добавляем файлs result_modifier и component_epilog, вписываем уже известные нам заклинания. И тут... оно не работает. Как? Почему?
После недолгих изысканий обнаруживаем, что component_epilog не сработал...
Наверное, опечатался в имени файла. Подумаешь, с кем не бывает. Переименовываем, пробуем, видим.... опять ничего не видим. Как же так?
В итоге я бился часа 2 - перепроверил пермишены к этому файлу, владельца и группу, путь к шаблону на наличие каких-нибудь экзотических символов, кодировку файла, даже скопировал component_epilog из другого файла, в котором он был точно рабочий, даже сделал
из template.php
И опять НИ-ЧЕ-ГО.
Я перерыл всю информацию о component_epilog, какую только можно было найти. поисковая фраза "component_epilog не подключается" ведёт разьве что на форумы, где отписываются новички с обычными опечатка/непонятками в работе системы.
Последний шаг - написал обращение в ТП. Сегодня в ответ мне задают вопрос - "а в каком компоненте проблема?". Вот тут то у меня и закрались подозрения...
"search.page component_epilog.php" - первая ссылка в гугле "Подключение component_epilog.php - Идея! - 1С-Битрикс" ведёт на страницу с идеями пользователей. (кстати, в яндексе вообще ничего нет). И там
Проверил - да, оно и есть! Шаблон в этом компоненте подключается не стандартной функцией IncludeComponentTemplate, а двумя вышеуказанными!
В документации - ни слова! Ни одного коммента ни на одном форуме! А почему этот пост в разделе "Идея!" я так и не понял...
Надеюсь, мой пост поможет кому-то сэкономить несколько часов времени и пучок нервов.
Заказчик попросил добавить <link rel="next" href=""/> и подобные на те страницы, где есть пейджинация. Решается всё очень просто - в component_epilog.php смотрим в переменную $arResult["NAV_RESULT"] и берём оттуда нужные нам параметры, после чего вызывает $APPLICATION->AddHeadString. Единственный нюанс, что содержимое $arResult по ключу NAV_RESULT должно кэшироваться, но делается это тоже просто
$cp = $this->__component;
if (is_object($cp)) {
$cp->SetResultCacheKeys(array("NAV_RESULT"));
} |
И вот, очередь дошла до страницы поиска. Безобидный компонент search.page заботливо вытаскивает из базы всю интересующую нас информацию. Добавляем файлs result_modifier и component_epilog, вписываем уже известные нам заклинания. И тут... оно не работает. Как? Почему?
После недолгих изысканий обнаруживаем, что component_epilog не сработал...
Наверное, опечатался в имени файла. Подумаешь, с кем не бывает. Переименовываем, пробуем, видим.... опять ничего не видим. Как же так?
В итоге я бился часа 2 - перепроверил пермишены к этому файлу, владельца и группу, путь к шаблону на наличие каких-нибудь экзотических символов, кодировку файла, даже скопировал component_epilog из другого файла, в котором он был точно рабочий, даже сделал
echo(htmlspecialchars(file_get_contents(__dir__ . "/component_epilog.php"))); |
И опять НИ-ЧЕ-ГО.
Я перерыл всю информацию о component_epilog, какую только можно было найти. поисковая фраза "component_epilog не подключается" ведёт разьве что на форумы, где отписываются новички с обычными опечатка/непонятками в работе системы.
Последний шаг - написал обращение в ТП. Сегодня в ответ мне задают вопрос - "а в каком компоненте проблема?". Вот тут то у меня и закрались подозрения...
"search.page component_epilog.php" - первая ссылка в гугле "Подключение component_epilog.php - Идея! - 1С-Битрикс" ведёт на страницу с идеями пользователей. (кстати, в яндексе вообще ничего нет). И там
| Предложил Кудряшов Игорь 09.04.2013 11:23:51 Подключение component_epilog.php при подключении в компоненте шаблона с помощью $this->InitComponentTemplate($templatePage) и $this->ShowComponentTemplate(); не подключается component_epilog.php см. компонент bitrix:search.page |
В документации - ни слова! Ни одного коммента ни на одном форуме! А почему этот пост в разделе "Идея!" я так и не понял...
Надеюсь, мой пост поможет кому-то сэкономить несколько часов времени и пучок нервов.