Модуль комментариев (отзывов) к магазину

На данной странице показан пример работы модуля комментариев к магазину (модуль загружает отзывы к магазину с Flamp и/или с Yandex, а также позволяет локальным посетителям оставлять свои комментарии к магазину). Этот модуль я писал в своё время для Magento 1 (в то время еще можно было получать отзывы с Яндекса). А это порт под Magento 2.

Исходники модуля находится по адресу https://github.com/smirnov-a/emagento_comments.
Там же описан процесс установки и настройки.
Подключение модуля и внешний вид зависит от вашей текущей темы.
Разместите в каталоге темы необходимые xml-файл(ы) - хэндлы Например, для отображения на опрделенной CMS-странице это будет файл app/design/frontend/<Vendorname>/<themename>/Magento_Theme/layout/cms_page_view_id_<page_identitfier>.xml.
Допустим у вас двухколоночная верстка с шаблоном 2 columns with left bar. И вы хотите вывести блок с комментариями в левую колонку.
Тогда нужно в layout прописать:
<referenceContainer name="sidebar.main">
<block class="Emagento\Comments\Block\ReviewList" name="your_name" template="Emagento_Comments::review_list.phtml">
<!-- агрументы для javascript -->
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="reviews" xsi:type="array">
<item name="component" xsi:type="string">Emagento_Comments/js/reviews</item>
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">Emagento_Comments/reviews_template</item>
<!-- передать в яваскрипт параметр: кол-во комментариев для показа (без учета ответа на них) -->
<item name="count" xsi:type="string">2</item>
<!-- можно передавать и другие параметры в javascript
<item name="heading" xsi:type="string">Hello World!</item>
-->
</item>
</item>
</item>
</argument>
</arguments>
</block>
</referenceContainer>
Дальше в файле review_list.phtml происходит вывод блока для построения дорожки с комментариями (в данном случае <div id="review_list">):
<div id="reviews-list" data-bind="scope: 'reviews'">
<!-- ko template: getTemplate() --><!-- /ko -->
</div>
И собственно запуск Javascript: построение списка с помощью KnockoutJS (с параметрами, сформированными выше в layout в xml)
<script type="text/x-magento-init">
{
"#reviews-list": {
"Magento_Ui/js/core/app": <?= /* @escapeNotVerified */ $block->getJsLayout() ?>
}
}
</script>
В результате в указанный блок загрузит ajax’ом дорожку с отзывами и форму нового комментария к магазину Также есть возможность обойтись без Javascript’а и выводить комментарии в нужное место страницы с помощью соответсвюущего виджета (он принимает параметром кол-во отображаемых комментариев):
{{ widget type="Emagento\Comments\Block\Widget\Reviews" limit="10" }}
В этом случае просто выведет дорожку с отзывами, но без формы добавления нового отзыва