Урок 18 / 22 · Commentail 1.3.2
Для списка на главной странице или в сайдбаре не нужно вставлять полный виджет обсуждения. Тег commentail_recent возвращает ограниченный набор полей для вашей разметки.
Добавим список
В нужном шаблоне:
{% load i18n commentail_tags %}
{% commentail_recent limit=5 as recent_comments %}
<ul>
{% for comment in recent_comments %}
<li>
<a href="{{ comment.url }}">{{ comment.author_name }}: {{ comment.text|truncatechars:120 }}</a>
<span>{{ comment.target_title }}</span>
<time datetime="{{ comment.published_at|date:'c' }}">{{ comment.published_at|date:'SHORT_DATETIME_FORMAT' }}</time>
</li>
{% empty %}
<li>{% trans "No comments yet." %}</li>
{% endfor %}
</ul>
Текст остаётся экранированным. truncatechars:120 сокращает его только в вашем списке. Никаких адресов почты и служебных токенов результат не содержит. Если нужны только корневые комментарии конкретной Page:
{% load commentail_tags %}
{% commentail_recent limit=3 page=page include_replies=False as recent_comments %}
Число и bool передаются без кавычек. page=page означает ровно одну Page, не всё её поддерево. limit=0 даёт пустой список. По умолчанию выбираются новые опубликованные сообщения доступных обсуждений текущего Site, включая ответы. Ожидающие, отклонённые, скрытые и удалённые сообщения исключаются.
Почему список пустой
Шаблону нужен request из context processor. Страница должна быть опубликована, доступна посетителю, относиться к root текущего Site и содержать обычный виджет обсуждения в своём шаблоне. Сам тег recent не включает комментарии на Page. Для объектов действуют их зарегистрированные адаптеры.
Выборка зависит от посетителя. Не кладите список или полный виджет в общий fragment cache и не заменяйте private,no-store публичным кешированием CDN. Иначе в списке могут оказаться сведения из закрытой области.
Структурированные данные
По умолчанию виджет выводит microdata и JSON-LD типа Comment для отрисованных опубликованных сообщений. Если вашему сайту достаточно JSON-LD:
COMMENTAIL = {"default": {"STRUCTURED_DATA": "json_ld"}}
Допустимы both, json_ld, microdata и off. Объединяя собственный граф Schema.org, отключите дублирующий вывод осознанно. В переопределённом block.html сохраняйте {% commentail_json_ld structured_comments %}, если используете штатный JSON-LD; не собирайте JSON строковой конкатенацией с safe.
Проверьте исходный HTML: не должно быть чужих ожидающих сообщений, почты или protected URL. В структурированные данные не добавляйте звёзды рейтинга и Review, которых нет в Commentail. Корректная Schema.org-разметка не обещает специального сниппета или роста позиций.
Другие уроки по этой задаче
- 12. Настраиваем оформление Commentail через CSS
- 16. Два языка и несколько сайтов
- 19. Рабочий сайт: nginx, кеш и данные пользователей
Выберите способ входа или оставьте комментарий как гость ниже.