Мои проекты

Последние комментарии и Schema.org

Выводим свой список в сайдбаре и сохраняем корректную разметку опубликованных комментариев.

Урок 18 / 22 · Commentail 1.3.2

Для списка на главной странице или в сайдбаре не нужно вставлять полный виджет обсуждения. Тег commentail_recent возвращает ограниченный набор полей для вашей разметки.

Добавим список

В нужном шаблоне:

django
{% 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:

django
{% 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:

python
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-разметка не обещает специального сниппета или роста позиций.

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.