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

На данной странице показан пример работы модуля комментариев к магазину (модуль загружает отзывы к магазину с 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" ⎬⎬

В этом случае просто выведет дорожку с отзывами, но без формы добавления нового отзыва