add:
- Микроразметка `Schema.org` (JSON-LD) для постов и страниц для улучшения SEO и понимания контента поисковиками и ИИ. - Файл `llms.txt` для предоставления информации о сайте и API для больших языковых моделей (LLM). fix: - Экранирования кавычек в JSON-LD, Title и Description. - Перезапуск watchtower при его остановке.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
Основные возможности:
|
||||
- Веб-интерфейс для ввода текста и настройки параметров типографики.
|
||||
"""
|
||||
__version__ = "0.2.2"
|
||||
__version__ = "0.2.4"
|
||||
__author__ = "Sergei Erjemin"
|
||||
__email__ = "erjemin@gmail.com"
|
||||
__license__ = "MIT"
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
{% extends 'typograph/base.html' %}
|
||||
{% load static %}
|
||||
{% load typograph_extras %}
|
||||
|
||||
|
||||
{% load static typograph_extras %}
|
||||
|
||||
{# --- SEO --- #}
|
||||
{% block title %}{% if page.seo_title %}{{ page.seo_title }}{% else %}{{ page.title|striptags|unescape|safe }}{% endif %} — ETPGRF{% endblock %}
|
||||
{% block description %}{% if page.seo_description %}{{ page.seo_description }}{% else %}{{ page.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %}
|
||||
{% block keywords %}{% if page.seo_keywords %}{{ post.seo_keywords }}{% else %}типограф, типографика, блог типограф, онлайн типограф, подготовка текста для веба, html типограф, неразрывные пробелы, кавычки елочки, длинное тире, очистка текста от мусора, интернет верстка, муравьев, лебедев{% endif %}{% endblock %}
|
||||
|
||||
{# --- Schema.org --- #}
|
||||
{% block schema %}<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebPage",
|
||||
"headline": "{{ page.seo_title|default:page.title|striptags|unescape|escapejs }}",
|
||||
"description": "{% if page.seo_description %}{{ page.seo_description|striptags|unescape|escapejs }}{% else %}{{ page.excerpt|default:page.content|striptags|unescape|truncatechars:160|escapejs }}{% endif %}",
|
||||
"image": "{% if page.image %}{{ request.scheme }}://{{ request.get_host }}{{ page.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "ETPGRF",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}"
|
||||
}
|
||||
},
|
||||
"datePublished": "{{ page.published_at|date:'Y-m-d' }}",
|
||||
"dateModified": "{{ page.published_at|date:'Y-m-d' }}"
|
||||
}
|
||||
</script>{% endblock %}
|
||||
|
||||
{% block og_title %}{% if page.seo_title %}{{ page.seo_title }}{% else %}{{ page.title|striptags|unescape|safe }}{% endif %}{% endblock %}
|
||||
{% block og_description %}{% if page.seo_description %}{{ page.seo_description }}{% else %}{{ page.excerpt|safe|striptags|unescape|truncatechars:160 }}{% endif %}{% endblock %}
|
||||
{% block og_image %}{% if page.image %}{{ request.scheme }}://{{ request.get_host }}{{ page.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}{% endblock %}
|
||||
@@ -31,7 +50,6 @@
|
||||
|
||||
{# Правая колонка: Контент #}
|
||||
<div class="col-lg-10 border-start ps-lg-4 post-page-content">
|
||||
|
||||
<h1 class="display-4 mb-4">{{ page.title|safe }}</h1>
|
||||
|
||||
{% if page.excerpt %}
|
||||
|
||||
@@ -1,11 +1,36 @@
|
||||
{% extends 'typograph/base.html' %}
|
||||
{% load static %}
|
||||
{% load typograph_extras %}
|
||||
{% load static typograph_extras %}
|
||||
|
||||
{% block title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe }}{% endif %} — ETPGRF{% endblock %}
|
||||
{% block description %}{% if post.seo_description %}{{ post.seo_description }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %}
|
||||
{# --- SEO --- #}
|
||||
{% block title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe|escapejs }}{% endif %} — ETPGRF{% endblock %}
|
||||
{% block description %}{% if post.seo_description %}{{ post.seo_description|escapejs }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160|escapejs }}{% endif %}{% endblock %}
|
||||
{% block keywords %}{% if post.seo_keywords %}{{ post.seo_keywords }}{% else %}типограф, типографика, блог типограф, онлайн типограф, подготовка текста для веба, html типограф, неразрывные пробелы, кавычки елочки, длинное тире, очистка текста от мусора, интернет верстка, муравьев, лебедев{% endif %}{% endblock %}
|
||||
|
||||
{# --- Schema.org --- #}
|
||||
{% block schema %}<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
"headline": "{{ post.seo_title|default:post.title|striptags|unescape|escapejs }}",
|
||||
"description": "{% if post.seo_description %}{{ post.seo_description|striptags|unescape|escapejs }}{% else %}{{ post.excerpt|default:post.content|striptags|unescape|truncatechars:160|escapejs }}{% endif %}",
|
||||
"image": "{% if post.image %}{{ request.scheme }}://{{ request.get_host }}{{ post.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "Sergei Erjemin"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "ETPGRF",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}"
|
||||
}
|
||||
},
|
||||
"datePublished": "{{ post.published_at|date:'Y-m-d' }}",
|
||||
"dateModified": "{{ post.published_at|date:'Y-m-d' }}"
|
||||
}
|
||||
</script>{% endblock %}
|
||||
|
||||
{% block og_title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe }}{% endif %}{% endblock %}
|
||||
{% block og_description %}{% if post.seo_description %}{{ post.seo_description }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %}
|
||||
{% block og_image %}{% if post.image %}{{ request.scheme }}://{{ request.get_host }}{{ post.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}{% endblock %}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<meta name="description" content="{% block description %}Бесплатный онлайн-типограф для подготовки текстов к публикации в вебе. Расставка неразрывных пробелов, правильных кавычек («ёлочки»), тире, спецсимволы, отбивка, компоновка, висячая пунктуация. Идеально для верстки сайтов, статей и постов.{% endblock %}">
|
||||
<meta name="keywords" content="{% block keywords %}типограф, типографика, онлайн типограф, подготовка текста для веба, html типограф, неразрывные пробелы, кавычки елочки, длинное тире, очистка текста от мусора, интернет верстка, муравьев{% endblock %}">
|
||||
<meta name="author" content="Sergei Erjemin">
|
||||
{# --- Schema.org (JSON-LD) --- #}{% block schema %}{% endblock %}
|
||||
{# --- Open Graph (Facebook, VK, LinkedIn, Telegram) --- #}<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="ETPGRF" />
|
||||
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
||||
@@ -20,12 +21,12 @@
|
||||
<meta name="twitter:description" content="{% block twitter_description %}Сделайте ваш текст профессиональным и готовым к публикации в интернете за один клик.{% endblock %}" />
|
||||
<meta name="twitter:image" content="{% block twitter_image %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endblock %}" />
|
||||
{# --- Favicons --- #}<link rel="icon" href="{{ request.scheme }}://{{ request.get_host }}{% static 'favicon.ico' %}" type="image/x-icon" />
|
||||
<link rel="icon" type="image/png" href="{% static 'favicon-96x96.png' %}" />
|
||||
<link rel="icon" href="{% static 'favicon-light.svg' %}" type="image/svg+xml" media="(prefers-color-scheme: light)" />
|
||||
<link rel="icon" href="{% static 'favicon-dark.svg' %}" type="image/svg+xml" media="(prefers-color-scheme: dark)" />
|
||||
<link rel="icon" type="image/svg+xml" href="{% static 'favicon.svg' %}" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'apple-touch-icon.png' %}" />
|
||||
<link rel="manifest" href="{% static 'site.webmanifest' %}" />
|
||||
{# --- Favicons --- #}<link rel="icon" type="image/png" href="{% static 'favicon-96x96.png' %}" />
|
||||
{# --- Favicons --- #}<link rel="icon" href="{% static 'favicon-light.svg' %}" type="image/svg+xml" media="(prefers-color-scheme: light)" />
|
||||
{# --- Favicons --- #}<link rel="icon" href="{% static 'favicon-dark.svg' %}" type="image/svg+xml" media="(prefers-color-scheme: dark)" />
|
||||
{# --- Favicons --- #}<link rel="icon" type="image/svg+xml" href="{% static 'favicon.svg' %}" />
|
||||
{# --- Favicons --- #}<link rel="apple-touch-icon" sizes="180x180" href="{% static 'apple-touch-icon.png' %}" />
|
||||
{# --- Favicons --- #}<link rel="manifest" href="{% static 'site.webmanifest' %}" />
|
||||
{# Bootstrap 5 CSS #}<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
{# Bootstrap Icons #}<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"/>
|
||||
<style>
|
||||
@@ -79,7 +80,8 @@
|
||||
{# Футер #}<footer class="footer mt-auto py-2 mt-4">
|
||||
<div class="container d-flex justify-content-between align-items-center">
|
||||
<span class="text-muted small nowrap me-2">© Sergei Erjemin, 2025–{% now 'Y' %}.</span>
|
||||
<nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i><a href="/changelog">v0.1.4 / v0.2.3</a></nobr>
|
||||
<nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i>v0.1.4 / v0.2.4
|
||||
</nobr>
|
||||
{# Сводная статистика (HTMX) #}<span class="text-muted small ms-2" hx-get="{% url 'stats_summary' %}" hx-trigger="load">
|
||||
...
|
||||
</span>
|
||||
|
||||
Reference in New Issue
Block a user