<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hugo on dedinit()</title><link>https://dedinit.ru/tags/hugo/</link><description>Recent content in Hugo on dedinit()</description><generator>Hugo -- 0.165.0</generator><language>ru-ru</language><lastBuildDate>Sat, 18 Apr 2026 09:44:39 +0300</lastBuildDate><atom:link href="https://dedinit.ru/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>Как автоматизировать создание постов в Hugo: slugs, архетипы и бандлы</title><link>https://dedinit.ru/2026/hugo-slugs-archetypes-bundles/</link><pubDate>Sat, 18 Apr 2026 09:44:39 +0300</pubDate><guid>https://dedinit.ru/2026/hugo-slugs-archetypes-bundles/</guid><description>Настраиваем Hugo так, чтобы не копировать index.md вручную, не мучиться с транслитерацией и получать красивые URL с датами</description><content:encoded><![CDATA[<figure class="entry-cover"><img src="https://dedinit.ru/2026/hugo-slugs-archetypes-bundles/hero.svg" alt="Автоматизация Hugo"></figure><h2 id="проблема-рутина-при-создании-постов">Проблема: рутина при создании постов</h2>
<p>Когда я только начинал вести блог на Hugo, каждый новый пост создавался через боль и страдания:</p>
<ol>
<li>Создать папку вручную <code>content/posts/название-поста/</code></li>
<li>Скопировать туда <code>index.md</code> из соседней папки</li>
<li>Отредактировать front matter (дату, заголовок, теги)</li>
<li>Придумать slug для красивого URL</li>
<li>&hellip;и не забыть, что папку лучше назвать на латинице</li>
</ol>
<p>На всё это уходило пара минут чисто механической работы. А когда постов 10–20, это начинает реально бесить.</p>
<p>В этой статье я расскажу, как я решил эту проблему с помощью штатных возможностей Hugo: <strong>архетипов (archetypes)</strong>, <strong>пермалинков (permalinks)</strong> и правильной организации <strong>бандлов (bundles)</strong>.</p>
<h2 id="что-такое-бандл-и-зачем-папка-для-каждого-поста">Что такое бандл и зачем папка для каждого поста</h2>
<p>Hugo поддерживает три типа контента:</p>
<p>Три способа хранения контента в Hugo</p>
<ol>
<li>Простой файл .md (без папки)</li>
</ol>
<p>Самый простой способ — просто положить файл мой-пост.md в папку content/posts/:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">5
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>content/
</span></span><span style="display:flex;"><span>└── posts/
</span></span><span style="display:flex;"><span>    ├── первый-пост.md
</span></span><span style="display:flex;"><span>    ├── второй-пост.md
</span></span><span style="display:flex;"><span>    └── третий-пост.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>Плюсы:</p>
<ul>
<li>Максимально просто, ничего создавать не нужно</li>
<li>Подходит для простых постов без изображений</li>
</ul>
<p>Минусы:</p>
<ul>
<li>Все изображения нужно класть в общую папку static/images/</li>
<li>Нельзя прикрепить к посту специфичные файлы (PDF, архивы и т.д.)</li>
<li>Изображения нужно называть уникально, чтобы не пересекались с другими постами</li>
</ul>
<ol start="2">
<li>Leaf bundle (папка + index.md)</li>
</ol>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">6
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>content/
</span></span><span style="display:flex;"><span>└── posts/
</span></span><span style="display:flex;"><span>    └── мой-пост/
</span></span><span style="display:flex;"><span>        ├── index.md
</span></span><span style="display:flex;"><span>        ├── hero.jpg
</span></span><span style="display:flex;"><span>        └── code-example.py
</span></span></code></pre></td></tr></table>
</div>
</div><p>Плюсы:</p>
<ul>
<li>Все ресурсы поста в одном месте</li>
<li>Можно ссылаться на изображения относительно: <img loading="lazy" src="hero.jpg" alt="герой"  />
</li>
<li>Не нужно думать об уникальности имён файлов</li>
</ul>
<p>Минусы:</p>
<ul>
<li>Нужно создавать папку (но мы это автоматизировали)</li>
</ul>
<ol start="3">
<li>Branch bundle (папка + _index.md)</li>
</ol>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">6
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>content/
</span></span><span style="display:flex;"><span>├── posts/
</span></span><span style="display:flex;"><span>│   ├── _index.md          &lt;- описывает секцию /posts/
</span></span><span style="display:flex;"><span>│   ├── первый-пост.md
</span></span><span style="display:flex;"><span>│   └── мой-пост/
</span></span><span style="display:flex;"><span>│       └── index.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>Плюсы:</p>
<ul>
<li>_index.md позволяет задать заголовок, описание для всей секции</li>
<li>Можно настроить отдельный шаблон для списка постов</li>
</ul>
<p>Структура моего блога:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">9
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>content/
</span></span><span style="display:flex;"><span>├── posts/
</span></span><span style="display:flex;"><span>│ ├── hugo-slugs-archetypes-bundles/
</span></span><span style="display:flex;"><span>│ │ ├── index.md
</span></span><span style="display:flex;"><span>│ │ ├── images/
</span></span><span style="display:flex;"><span>│ │ │ └── diagram.png
</span></span><span style="display:flex;"><span>│ │ └── code-example.txt
</span></span><span style="display:flex;"><span>│ └── другой-пост/
</span></span><span style="display:flex;"><span>│ └── index.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>Плюсы такого подхода:</p>
<ul>
<li>Все посты хранятся одинаково — папка + index.md. Не нужно думать, какой способ выбрать.</li>
<li>Все файлы поста в одном месте</li>
<li>Можно удобно ссылаться на изображения: <code>![схема](images/diagram.png)</code></li>
<li>Не нужно придумывать уникальные имена для картинок глобально</li>
<li>Если я захочу экспортировать пост в другой блог, достаточно скопировать одну папку со всеми ресурсами.</li>
</ul>
<h2 id="почему-папку-бандла-нужно-называть-на-латинице">Почему папку бандла нужно называть на латинице</h2>
<p>Здесь кроется важный момент. Hugo позволяет использовать любые символы в именах папок, включая кириллицу. Но есть <strong>две причины использовать латиницу</strong>:</p>
<ol>
<li><strong>Чистые URL.</strong> Если папка называется <code>мой-пост</code>, то URL будет <code>/%D0%BC%D0%BE%D0%B9-%D0%BF%D0%BE%D1%81%D1%82/</code>. Браузер это поймёт, но выглядит ужасно.</li>
<li><strong>Slug без транслитерации.</strong> Имя папки удобно использовать как <code>slug</code> — последний сегмент URL. А латиница в URL — это стандарт и хороший тон.</li>
</ol>
<p><strong>Правило:</strong> папку называем на латинице (например, <code>my-awesome-post</code>), а заголовок внутри пишем по-русски.</p>
<h2 id="как-автоматизировать-создание-бандла-через-консоль">Как автоматизировать создание бандла через консоль</h2>
<p>Команда для создания бандла с одной папкой:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo new content posts/название-папки/index.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>Hugo сам создаст папку, сгенерирует index.md с front matter из архетипа.</p>
<p>Важно: эта команда появилась в Hugo 0.112. В старых версиях нужно было сначала создать папку, потом файл.</p>
<h2 id="настройка-архетипа-archetype">Настройка архетипа (archetype)</h2>
<p>Архетип — это шаблон для новых файлов. Он лежит в archetypes/default.md (или в archetypes/post-bundle.md для конкретного типа).</p>
<p>Мой архетип выглядит так (TOML-формат):</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">12
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">13
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">14
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">15
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">16
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">17
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>date = <span style="color:#a5d6ff">&#39;{{ .Date }}&#39;</span>
</span></span><span style="display:flex;"><span>lastmod = <span style="color:#a5d6ff">&#39;{{ .Date }}&#39;</span>
</span></span><span style="display:flex;"><span>draft = <span style="color:#79c0ff">true</span>
</span></span><span style="display:flex;"><span>title = <span style="color:#a5d6ff">&#39;{{ replace .File.ContentBaseName &#34;-&#34; &#34; &#34; | title }}&#39;</span>
</span></span><span style="display:flex;"><span>slug = <span style="color:#a5d6ff">&#39;{{ .File.ContentBaseName }}&#39;</span>
</span></span><span style="display:flex;"><span>description = <span style="color:#a5d6ff">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>author = <span style="color:#a5d6ff">&#39;Кразя&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>categories = [
</span></span><span style="display:flex;"><span>  <span style="color:#a5d6ff">&#39;uncategorized&#39;</span>
</span></span><span style="display:flex;"><span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>tags = [
</span></span><span style="display:flex;"><span>  <span style="color:#a5d6ff">&#39;draft&#39;</span>
</span></span><span style="display:flex;"><span>]
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></td></tr></table>
</div>
</div><p>Разберём ключевые моменты:
Поле Значение
title Берёт имя папки, заменяет дефисы на пробелы и делает заглавные буквы. my-awesome-post → My Awesome Post
slug Просто берёт имя папки как есть: my-awesome-post
.File.ContentBaseName Встроенная переменная Hugo — имя текущей папки без расширения и пути</p>
<p>После создания поста я вручную меняю title на русский и заполняю description, categories, tags.</p>
<h2 id="настройка-permalinks-для-красивых-url">Настройка permalinks для красивых URL</h2>
<p>Чтобы URL выглядел как 2025/03/my-awesome-post/, а не как posts/my-awesome-post/, добавляем в hugo.toml:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[permalinks]
</span></span><span style="display:flex;"><span>  posts = <span style="color:#a5d6ff">&#34;/:year/:month/:slug/&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Теперь при сборке сайта Hugo сам построит нужную структуру. При этом внутри content/ всё остаётся по-прежнему — папка в posts/.</p>
<h2 id="полный-цикл-создания-поста-без-лишних-телодвижений">Полный цикл создания поста (без лишних телодвижений)</h2>
<p>Вот как теперь выглядит создание нового поста в моём блоге:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">12
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># 1. Создаём бандл с латинским именем папки</span>
</span></span><span style="display:flex;"><span>hugo new content posts/hugo-best-practices/index.md
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># 2. Открываем файл и правим русский заголовок, описание, теги</span>
</span></span><span style="display:flex;"><span>vim content/posts/hugo-best-practices/index.md
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># 3. Пишем пост в markdown</span>
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># 4. Смотрим локально</span>
</span></span><span style="display:flex;"><span>hugo server -D
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># 5. Публикуем</span>
</span></span><span style="display:flex;"><span>make deploy
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="что-ещё-можно-добавить-в-front-matter">Что ещё можно добавить в front matter</h2>
<p>В процессе настройки я выяснил, что Hugo поддерживает много полезных полей:</p>
<table>
	<thead>
			<tr>
					<th>Поле</th>
					<th>Назначение</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>publishDate</code></td>
					<td>Отложенная публикация (не рендерится до указанной даты)</td>
			</tr>
			<tr>
					<td><code>expiryDate</code></td>
					<td>Автоматическое снятие с публикации</td>
			</tr>
			<tr>
					<td><code>lastmod</code></td>
					<td>Дата последнего изменения (для SEO)</td>
			</tr>
			<tr>
					<td><code>aliases</code></td>
					<td>Редиректы со старых URL</td>
			</tr>
			<tr>
					<td><code>weight</code></td>
					<td>Ручная сортировка в списке (меньше — выше)</td>
			</tr>
			<tr>
					<td><code>images</code></td>
					<td>Изображение для Open Graph и Twitter Cards</td>
			</tr>
			<tr>
					<td><code>params</code></td>
					<td>Кастомные параметры для темы</td>
			</tr>
	</tbody>
</table>
<h2 id="итог">Итог</h2>
<p>После всех настроек создание нового поста занимает ровно столько времени, сколько нужно на написание контента. Никакой ручной возни с папками и копированием index.md.</p>
<p>Ключевые выводы:</p>
<ul>
<li>
<p>Используйте leaf bundles (папка + index.md) для хранения всех ресурсов поста в одном месте</p>
</li>
<li>
<p>Папки называйте на латинице — это даст чистые URL и автоматический slug</p>
</li>
<li>
<p>Настройте архетип с переменной {{ .File.ContentBaseName }} для автоматической генерации title и slug</p>
</li>
<li>
<p>Добавьте [permalinks] в конфиг для красивых URL с датами</p>
</li>
</ul>
<p>Создавайте новый пост одной командой: <code>bash hugo new content posts/имя-папки/index.md</code></p>
<p>Теперь можно сосредоточиться на том, ради чего всё затевалось — на содержании.</p>
<p>Если у тебя есть свои лайфхаки по Hugo или ты знаешь, как сделать транслитерацию slug прямо из заголовка — пишите мне в Telegram <a href="https://t.me/kpa39l">https://t.me/kpa39l</a>. Обсудим.</p>
]]></content:encoded></item><item><title>Исправление ошибок в Hugo сайте</title><link>https://dedinit.ru/2026/%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B2-hugo-%D1%81%D0%B0%D0%B9%D1%82%D0%B5/</link><pubDate>Sat, 31 Jan 2026 22:45:00 +0300</pubDate><guid>https://dedinit.ru/2026/%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B2-hugo-%D1%81%D0%B0%D0%B9%D1%82%D0%B5/</guid><description>&lt;h2 id="проблема"&gt;Проблема&lt;/h2&gt;
&lt;p&gt;При запуске команды &lt;code&gt;hugo server&lt;/code&gt; возникала ошибка:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ERROR html/template:_partials/head.html:153:13: no such template &lt;span style="color:#a5d6ff"&gt;&amp;#34;_internal/google_analytics.html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="решение"&gt;Решение&lt;/h2&gt;
&lt;h3 id="1-исправление-ошибки-с-google-analytics"&gt;1. Исправление ошибки с Google Analytics&lt;/h3&gt;
&lt;p&gt;В новых версиях Hugo внутренний шаблон &lt;code&gt;_internal/google_analytics.html&lt;/code&gt; был удален.
Необходимо заменить его использование на частичный шаблон из темы PaperMod:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;&amp;lt;!-- Было --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{- template &amp;#34;_internal/google_analytics.html&amp;#34; . }}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;&amp;lt;!-- Стало --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{- partial &amp;#34;google_analytics.html&amp;#34; . }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2-обновление-шаблона-google-analytics"&gt;2. Обновление шаблона Google Analytics&lt;/h3&gt;
&lt;p&gt;В шаблоне &lt;code&gt;themes/PaperMod/layouts/partials/google_analytics.html&lt;/code&gt; также
потребовалось обновить способ получения ID Google Analytics, так как в новых
версиях Hugo поле &lt;code&gt;.Site.GoogleAnalytics&lt;/code&gt; было заменено на
&lt;code&gt;.Site.Config.Services.GoogleAnalytics.ID&lt;/code&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="проблема">Проблема</h2>
<p>При запуске команды <code>hugo server</code> возникала ошибка:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>ERROR html/template:_partials/head.html:153:13: no such template <span style="color:#a5d6ff">&#34;_internal/google_analytics.html&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="решение">Решение</h2>
<h3 id="1-исправление-ошибки-с-google-analytics">1. Исправление ошибки с Google Analytics</h3>
<p>В новых версиях Hugo внутренний шаблон <code>_internal/google_analytics.html</code> был удален.
Необходимо заменить его использование на частичный шаблон из темы PaperMod:</p>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">5
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic">&lt;!-- Было --&gt;</span>
</span></span><span style="display:flex;"><span>{{- template &#34;_internal/google_analytics.html&#34; . }}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic">&lt;!-- Стало --&gt;</span>
</span></span><span style="display:flex;"><span>{{- partial &#34;google_analytics.html&#34; . }}
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="2-обновление-шаблона-google-analytics">2. Обновление шаблона Google Analytics</h3>
<p>В шаблоне <code>themes/PaperMod/layouts/partials/google_analytics.html</code> также
потребовалось обновить способ получения ID Google Analytics, так как в новых
версиях Hugo поле <code>.Site.GoogleAnalytics</code> было заменено на
<code>.Site.Config.Services.GoogleAnalytics.ID</code>.</p>
<h3 id="3-исправление-ошибок-с-устаревшим-sitesocial">3. Исправление ошибок с устаревшим .Site.Social</h3>
<p>В шаблонах <code>twitter_cards.html</code> и <code>opengraph.html</code> использовались устаревшие
обращения к <code>.Site.Social</code>, которые были заменены на <code>.Site.Params.Social</code>.</p>
<h3 id="4-исправление-путей-к-частичным-шаблонам">4. Исправление путей к частичным шаблонам</h3>
<p>Также были исправлены неправильные пути к частичным шаблонам в нескольких файлах:</p>
<ul>
<li><code>twitter_cards.html</code></li>
<li><code>schema_json.html</code></li>
<li><code>opengraph.html</code></li>
</ul>
<h2 id="результат">Результат</h2>
<p>После всех исправлений сайт успешно запускается командой <code>hugo server</code> и
доступен по адресу <a href="http://localhost:1313/">http://localhost:1313/</a></p>
<h2 id="вывод">Вывод</h2>
<p>При обновлении Hugo или тем важно следить за изменениями в API и устаревшими
функциями. Использование устаревших элементов может привести к ошибкам сборки сайта.</p>
]]></content:encoded></item><item><title>Тестовая статья</title><link>https://dedinit.ru/2026/%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F/</link><pubDate>Sat, 31 Jan 2026 22:45:00 +0300</pubDate><guid>https://dedinit.ru/2026/%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F/</guid><description>&lt;h2 id="тестовая-статья"&gt;Тестовая статья&lt;/h2&gt;
&lt;p&gt;Это пример статьи в формате bundle. В этом формате все связанные файлы (изображения, код и т.д.) находятся в одной папке с основным файлом.&lt;/p&gt;
&lt;h3 id="блок-кода"&gt;Блок кода&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;hello_world&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#a5d6ff"&gt;&amp;#34;Привет, мир!&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Это важно для подсветки синтаксиса&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="изображения"&gt;Изображения&lt;/h3&gt;
&lt;p&gt;&lt;img loading="lazy" src="image.jpg" alt="Alt текст" /&gt;
&lt;/p&gt;
&lt;h2 id="заключение"&gt;Заключение&lt;/h2&gt;
&lt;p&gt;Формат bundle позволяет удобно организовывать статьи и связанные с ними ресурсы в одной директории.&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="тестовая-статья">Тестовая статья</h2>
<p>Это пример статьи в формате bundle. В этом формате все связанные файлы (изображения, код и т.д.) находятся в одной папке с основным файлом.</p>
<h3 id="блок-кода">Блок кода</h3>
<div class="highlight"><div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679">4
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ff7b72">def</span> <span style="color:#d2a8ff;font-weight:bold">hello_world</span>():
</span></span><span style="display:flex;"><span>    print(<span style="color:#a5d6ff">&#34;Привет, мир!&#34;</span>)
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span><span style="color:#8b949e;font-style:italic"># Это важно для подсветки синтаксиса</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="изображения">Изображения</h3>
<p><img loading="lazy" src="image.jpg" alt="Alt текст"  />
</p>
<h2 id="заключение">Заключение</h2>
<p>Формат bundle позволяет удобно организовывать статьи и связанные с ними ресурсы в одной директории.</p>
]]></content:encoded></item></channel></rss>