Урок №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 %}
Готово! Теперь комментарии к материалу будут скрыты, если установлен флаг «Запретить комментарии»: