Урок №8. Добавляем возможность комментирования материалов

На примере темы «Корпоративный сайт».

Предже всего необходимо установить модуль «Комментарии»:

Пример

Решение 1. Добавление виджета комментирования в текст материала.

Первый, самый простой, способ добавления возможности оставлять комментарии к материалам — это просто добавить соответствующий виджет в текст материала:

Пример

В окне настройки виджета, измените, если нужно, кол-во комментариев на странице. Больше никаких настроек делать не нужно:

Пример

В результате, на странице этого материала будет показан блок комментариев:

Пример

Решение 2. Добавление виджета комментирования в шаблон материала.

Основной недостаток такого решения №1 — необходимость ручного добавления виджета в каждый материал. Попробуем добавить виджет комментирования в шаблон материала, чтобы комментарии автоматически появились во всех материалах.

В теме «Корпоративный сайт» все материалы выводятся через виджет Material. Соответственно, нам нужно внести изменения в стандартный шаблон этого виджета «default.twig»:

{# расширяем стандартный шаблон #}
{% extends '@widget_distrib/material/default.twig' %}

{% block html %}
    {{ parent() }}
    
    {# добавляем виджет комментирования #}
    {% widget 'Comments.List' %}
    
{% endblock %}

Задача решена.

Очевидно, может возникнуть потребность управлять возможностью оставлять комментарии для тех или иных материалов. Для решения этой задачи добавим в материалы поле «Запретить комментарии» с помощью которого мы будем управлять видимойтью блока комментирования. Перейдем на панель «Типы материалов» и добавим логическое поле «disable_comments» к материалам:

Пример

Далее модифицируем шаблон default.twig виджета Material:

{# расширяем стандартный шаблон материала #}
{% extends '@widget_distrib/material/default.twig' %}

{% block html %}
    {{ parent() }}
    
    {% if not widget.material.disable_comments %}
       {# покажем комментарии только если не установлен флаг disable_comments #}
        {% widget 'Comments.List' %}
    {% endif %}
    
{% endblock %}

Готово! Теперь комментарии к материалу будут скрыты, если установлен флаг «Запретить комментарии»:

Пример