Инструменты пользователя

Инструменты сайта


bitrix_comments:faq:review_button

Это старая версия документа!


Не работает кнопка «Оставить отзыв», слетают стили, отзывы не обновляются

Описание проблемы

При установке модуля «Универсальные отзывы, комментарии и рейтинги» на некоторых проектах наблюдаются следующие ошибки:

  • Слетают стили модуля при обновлении страницы
  • Кнопка «Оставить отзыв» не работает
  • Отзывы не отображаются сразу после добавления

Причина

Чаще всего проблема возникает из-за подключения компонентов модуля в кешируемой области шаблона другого компонента.

Для оформления и реализации front-end логики компонента, в его шаблоне доступны не обязательные файлы - style.css, который определяет стили, необходимые данному шаблону - script.js, который определяет и подключает скрипты, необходимые данному шаблону.

Эти файлы подключаются при исполнении кода компонента. Однако, если вызов одного компонента находится внутри другого, при отработке кеша вложенный компонент не вызывается, а значит его скрипты и стили не подключаются на странице.

Для компонентов нашего модуля это приводит к следующему:

  • Не подключаются скрипты и стили
  • Отзывы и комментарии кешируются
  • Новые отзывы не отображаются без сброса кеша

Решение

  • Вариант 1. (Не рекомендуется) Отключить кеш родительского компонента. Такой подход решает проблему, но ухудшает производительность страницы
  • Вариант 2. Вынести вызов компонента из кешируемой области шаблона в файл component_epilog.php родительского компонента. Этот вариант самый простой, но может не подойти в конкретном случае из-за несоответствия верстке.
  • Вариант 3. Буфферизация вывода шаблона родительского компонента с последующей заменой контента. Подробнее gdecider.github.io/articles-bx-inner-component.html
  • Вариант 4. Подходит только для комплексных компонентов. Вынести вызов компонента отзывов в из конкретного компонента в шаблон страницы. Например, для товара в каталоге нужно вынести вызов компонента комментариев из шаблона компонента catalog.element в файл в element.php шаблона комплексного компонента catalog.
  • Вариант 5. В вызов компонента комментариев добавить четвертым параметром переменную $component. Пример:
$APPLICATION->IncludeComponent('chililab:page.reviews.list', '', [], $component);

Итог

Для корректной работы компонента нужно учитывать особенности кеширования Битрикс

bitrix_comments/faq/review_button.1774770768.txt.gz · Последнее изменение: admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki