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