From e53dac8180748da3e0b8c93df7aec74c30983cee Mon Sep 17 00:00:00 2001 From: erjemin Date: Fri, 13 Feb 2026 15:46:56 +0300 Subject: [PATCH] =?UTF-8?q?mod:=20=D0=9D=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D0=B9=D0=BD=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=B1=D0=BB=D0=BE=D0=B3=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D1=8F=20v.0.2.5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 13 +- README.md | 2 +- etpgrf_site/__init__.py | 2 +- .../blog/templates/blog/post_list.html | 138 +++++++++--------- .../typograph/templates/typograph/base.html | 2 +- public/static/css/etpgrf.css | 25 +++- 6 files changed, 102 insertions(+), 80 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bb06c4..2a8b0e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,14 +5,19 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), и этот проект придерживается [Semantic Versioning](https://semver.org/lang/ru/). -## [Unreleased] — 2025–02–13 +## [0.2.5] — 2025–02–13 ### Добавлено -- Поле `updated_at` (_Дата обновления_) в модели, админке, блогах, страницах и `sitemaps.xml` для улучшения SEO, GEO и LLMO. +- Редизайн списка постов в блоге: шахматный порядок, вертикальные разделители, улучшенная адаптивность для мобильных устройств. +- Поле `updated_at` (_Дата обновления_) в модели, админке, блогах, страницах и `sitemaps.xml` и микроразметке `Schema.org` для улучшения SEO, GEO и LLMO. - `README.md` с описанием проекта онлайн-типографа, его особенностей, технического стека и инструкциями по установке и запуску. +- Автоматическая генерация URL (slug) из заголовка поста с транслитерацией (при сохранении в админке). +- Отображение заголовков постов в списке админки без HTML-мнемоник (декодирование ` ` и др.). -### Исправлено -- Исправлены ошибки в шаблоне `post_list.html` (и дизайн в целом). +### Изменено +- Исправлены ошибки в шаблоне `post_list.html` (и полностью переработан дизайн в целом). + - Улучшено отображение даты и скрытие декоративных изображений в списке постов на мобильных устройствах. + - Оптимизированы отступы и типографика в списке постов. - Формирование `slag` из `title` при сохранении поста или страницы с использованием библиотеки `pytils` для транслитерации с очистикой от HTML-мнемоник и создания URL-дружественных строк. - Дизайн и вёрстка страниц для постов блога и вспомогательных страниц для мобильных устройств (адаптивность, скрытие картинки-обложки). diff --git a/README.md b/README.md index 212b753..178cc41 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ETPGRF Site — Онлайн-типограф -![Version](https://img.shields.io/badge/version-0.2.4-blue) +![Version](https://img.shields.io/badge/version-0.2.5-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Python](https://img.shields.io/badge/python-3.13-yellow) ![Django](https://img.shields.io/badge/django-6.0-green) diff --git a/etpgrf_site/__init__.py b/etpgrf_site/__init__.py index c4cc724..2f78204 100644 --- a/etpgrf_site/__init__.py +++ b/etpgrf_site/__init__.py @@ -2,7 +2,7 @@ Основные возможности: - Веб-интерфейс для ввода текста и настройки параметров типографики. """ -__version__ = "0.2.4" +__version__ = "0.2.5" __author__ = "Sergei Erjemin" __email__ = "erjemin@gmail.com" __license__ = "MIT" diff --git a/etpgrf_site/blog/templates/blog/post_list.html b/etpgrf_site/blog/templates/blog/post_list.html index 90b03a7..57bb0a0 100644 --- a/etpgrf_site/blog/templates/blog/post_list.html +++ b/etpgrf_site/blog/templates/blog/post_list.html @@ -1,76 +1,82 @@ {% extends 'typograph/base.html' %} +{% load static typograph_extras %} {% block title %}Блог — ETPGRF{% endblock %} {% block content %} -
-
-

Блог

+
+
+

Блог

+

Здесь мы делимся новостями типографа ETPGRF и его онлайн версии, рассказываем о тонкостях типографики и показываем, как сделать текст в вебе лучше.

+ {# СПИСОК ПОСТОВ #}{% for post in page_obj %} +
+ {# Колонка с датой и картинкой #} +
+ {# Дата #}

+ + {{ post.published_at|date:"d.M.Y"|lower }} + +

+ {# Картинка (скрыта на мобильных) #} + {% if post.image %}{{ post.title|striptags|unescape }} + {% else %}{{ post.title|striptags|unescape }}{% endif %} + +
+ {# Колонка с текстом (заголовок, тизер и ссылка #}
+ {# Заголовок #}

+ {{ post.title|safe }} +

+ {# Тизер #}
+ {{ post.excerpt|safe|linebreaks }} +
+ {# Ссылка #} +
+
+ {# Горизонтальный разделитель только на мобильных (на десктопе есть вертикальный бордер) #}{% if not forloop.last %}
{% endif %} + {% empty %} +

Пока нет записей.

+ {% endfor %} - {% for post in page_obj %} -
- {% if post.image %} - {{ post.title }} - {% endif %} -
-

- {{ post.title }} -

-

- {{ post.published_at|date:"d E Y" }} -

-

- {% if post.excerpt %} - {{ post.excerpt|linebreaks }} - {% else %} - {{ post.content|striptags|truncatewords:30 }} - {% endif %} -

- Читать далее → -
-
- {% empty %} -

Пока нет записей.

- {% endfor %} + {# Пагинация #} + {% if page_obj.has_other_pages %} + + {% endif %}
-
+
{% endblock %} diff --git a/etpgrf_site/typograph/templates/typograph/base.html b/etpgrf_site/typograph/templates/typograph/base.html index 841cfaf..c534334 100644 --- a/etpgrf_site/typograph/templates/typograph/base.html +++ b/etpgrf_site/typograph/templates/typograph/base.html @@ -81,7 +81,7 @@
© Sergei Erjemin, 2025–{% now 'Y' %}. - v0.1.4 / v0.2.4 + v0.1.4 / v0.2.5 {# Сводная статистика (HTMX) #} ... diff --git a/public/static/css/etpgrf.css b/public/static/css/etpgrf.css index 33c0308..6e0ebd8 100644 --- a/public/static/css/etpgrf.css +++ b/public/static/css/etpgrf.css @@ -127,12 +127,12 @@ body { position: relative; } -/* Фикс для мобильных версий: ширина по контенту, прижатие вправо, логотипы */ +/* Фикс для мобильной версии: ширина по контенту и прижатие вправо */ @media (max-width: 991.98px) { - .nav-item { - width: fit-content; - margin-left: auto; - } + .nav-item { + width: fit-content; + margin-left: auto; + } .navbar-collapse { margin-top: -10px; @@ -389,13 +389,24 @@ footer.footer a:hover { /*color: var(--bs-secondary-color);*/ } -.post-page-content a { +/* Общий класс для ссылок в контенте и списках */ +.link-dashed, .post-page-content a { color: var(--bs-linkcolor); text-decoration: none; border-bottom: 1px dotted var(--bs-linkcolor); } -.post-page-content a:hover { +.link-dashed:hover, .post-page-content a:hover { color: var(--bs-linkclolor-hover); border-bottom: 1px solid var(--bs-linkclolor-hover); } + +/* Утилита для бордера только на больших экранах */ +@media (min-width: 992px) { + .border-lg-start { + border-left: 1px solid var(--bs-border-color) !important; + } + .border-lg-end { + border-right: 1px solid var(--bs-border-color) !important; + } +}