Описание проблемы
При установке модуля «Универсальные отзывы, комментарии и рейтинги» на некоторых проектах наблюдаются следующие ошибки:
Слетают стили модуля при обновлении страницы
Кнопка «Оставить отзыв» не работает
Отзывы не отображаются сразу после добавления
Причина
Чаще всего проблема возникает из-за подключения компонентов модуля в кешируемой области шаблона другого компонента.
Для оформления и реализации front-end логики компонента, в его шаблоне доступны не обязательные файлы
style.css, который определяет стили, необходимые данному шаблону
script.js, который определяет и подключает скрипты, необходимые данному шаблону.
Эти файлы подключаются при исполнении кода компонента. Однако, если вызов одного компонента находится внутри другого, при отработке кеша вложенный компонент не вызывается, а значит его скрипты и стили не подключаются на странице.
Для компонентов нашего модуля это приводит к следующему:
Не подключаются скрипты и стили
Отзывы и комментарии кешируются
Новые отзывы не отображаются без сброса кеша
Решение
Вариант 1. (Не рекомендуется) Отключить кеш родительского компонента. Такой подход решает проблему, но ухудшает производительность страницы
Вариант 2. Вынести вызов компонента из кешируемой области шаблона в файл component_epilog.php родительского компонента. Этот вариант самый простой, но может не подойти в конкретном случае из-за несоответствия верстке.
-
Вариант 4. Подходит только для комплексных компонентов. Вынести вызов компонента отзывов в из конкретного компонента в шаблон страницы. Например, для товара в каталоге нужно вынести вызов компонента комментариев из шаблона компонента catalog.element в файл в element.php шаблона комплексного компонента catalog. Подробный пример можно найти
в статье
Вариант 5. В вызов компонента комментариев добавить четвертым параметром переменную $component. Пример:
$APPLICATION->IncludeComponent('chililab:page.reviews.list', '', [], $component);
Итог
Для корректной работы компонента нужно учитывать особенности кеширования Битрикс