Мои проекты

Меняем шаблоны и страницы подтверждения

Копируем только нужный шаблон и сохраняем отправку, доступность, JS и структурированные данные.

Урок 13 / 22 · Commentail 1.3.2

Переопределение шаблона нужно, когда CSS недостаточно: например, вы меняете расположение даты и автора или подключаете оформление сайта к странице подтверждения. Начните с самого маленького шаблона, который решает задачу.

Найдём исходник установленной версии

В окружении сайта выполните:

sh
python -c "import commentail; from pathlib import Path; print(Path(commentail.__file__).parent / 'templates' / 'commentail')"

Откройте напечатанную папку. Копируйте нужный файл в templates/commentail/ своего проекта с тем же относительным путём. Папка проекта должна стоять перед app loaders в TEMPLATES[...]["DIRS"]. Не редактируйте файл внутри .venv: переустановка пакета сотрёт изменения.

comment.html отвечает за карточку, replies.html — список ответов, block.html — оболочку, form.html — основную/ответную форму, edit-form.html — правку. captcha.html и provider-captcha.html относятся к проверке гостя. Скопируйте только нужное, а не всё дерево на будущее.

Оформим страницу действия

Скопируйте штатный base.html в templates/commentail/base.html. Найдите существующий блок extra_head и замените только его содержимое:

django
{% block extra_head %}
  {% load static %}
  <link rel="stylesheet" href="{% static 'css/commentail-custom.css' %}">
{% endblock %}

Внешний документ имеет .commentail-document; добавьте его оформление в тот же CSS. Сохраните блоки title, heading, content, return_label, язык документа, viewport и referrer policy strict-origin. Политика no-referrer может нарушить обычную CSRF-проверку. Подтверждение и отписка должны оставаться POST-действиями с кнопкой; открытие письма не должно выполнять действие само.

Что нельзя потерять в форме

При изменении разметки сохраните action и {% csrf_token %}, скрытые key, reply_to, challenge, form_age, поля text, name, email, answer, honeypot commentail_contact. При правке нужны edit_comment, серверный адрес и проверка can_edit. Не собирайте защищённые URL сами.

Для улучшенного поведения нужны .commentail[data-discussion], якоря commentail-<id>, классы форм, data-commentail-navigation, состояния ответов и область сетевой ошибки. Полный список не стоит восстанавливать по памяти: сравните файл с контрактом шаблонов. Сохраните labels, aria-атрибуты, объявления ошибок и работу клавиатуры.

Текст пользователя не пропускайте через safe. body штатной карточки уже подготовлен библиотекой; это не разрешение считать безопасной любую строку. Сохраните JSON-LD/microdata при изменении оболочки, если не отключили их осознанно.

Проверьте отправку, ответ, отмену, правку, ошибку сети и восстановление черновика. С арифметикой проверьте также обычные формы без JavaScript; внешняя CAPTCHA при обязательной проверке требует JS. После каждого обновления сравнивайте свои копии с шаблонами новой версии. Старый скопированный form.html может скрыть новые исправления.

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

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

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

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

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

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

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

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