<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>博客建站 on 扎塔-Zata</title><link>https://www.zata.cc/tags/%E5%8D%9A%E5%AE%A2%E5%BB%BA%E7%AB%99/</link><description>Recent content in 博客建站 on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Thu, 24 Sep 2026 17:09:06 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/%E5%8D%9A%E5%AE%A2%E5%BB%BA%E7%AB%99/index.xml" rel="self" type="application/rss+xml"/><item><title>给hugo博客的页面增加一个自定义密码（防君子不防小人）</title><link>https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/</link><pubDate>Wed, 05 Mar 2025 17:14:05 +0800</pubDate><guid>https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/</guid><description>&lt;img src="https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index.png" alt="Featured image of post 给hugo博客的页面增加一个自定义密码（防君子不防小人）" />&lt;p>&lt;img src="https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index.png"
width="660"
height="219"
srcset="https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index_hu15667366514887267723.png 480w, https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index_hu16609420308474211687.png 1024w"
loading="lazy"
alt="演示需要输入密码查看文档"
class="gallery-image"
data-flex-grow="301"
data-flex-basis="723px"
>&lt;/p>
&lt;p>在 Hugo 的 Stack 模板中为特定文章添加自定义密码保护并不是 Hugo 内置的功能，但可以通过结合 Hugo 的前端功能和一些自定义逻辑来实现。以下是一个分步指南，帮助你在 Stack 模板中为某些文章添加密码保护：&lt;/p>
&lt;hr>
&lt;h2 id="在页面当中添加一个密码验证由于静态页面的特性仍有方法在没有密码的情况下解除锁定所以此方法不要当真防君子不防小人">在页面当中添加一个密码验证（由于静态页面的特性，仍有方法在没有密码的情况下解除锁定，所以此方法不要当真,防君子不防小人）
&lt;/h2>&lt;p>在 Hugo 的 Stack 模板中为特定文章添加自定义密码保护并不是 Hugo 内置的功能，但可以通过结合 Hugo 的前端功能和一些自定义逻辑来实现。以下是一个分步指南，帮助你在 Stack 模板中为某些文章添加密码保护：&lt;/p>
&lt;h3 id="1-前提条件">1. 前提条件
&lt;/h3>&lt;ul>
&lt;li>你需要对 Hugo 的模板文件（如 &lt;code>.html&lt;/code> 文件）有一定了解。&lt;/li>
&lt;li>你需要编辑 Stack 模板的代码（通常位于 &lt;code>themes/Stack&lt;/code> 目录下）。&lt;/li>
&lt;li>每篇文章的密码在Front Matter 中定义。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="2-为文章添加密码字段">2. 为文章添加密码字段
&lt;/h3>&lt;p>在需要密码保护的文章的 Front Matter 中添加一个自定义字段，例如 &lt;code>password&lt;/code>。例如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;受保护的文章&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2025-03-05&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">password&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;mysecretpassword&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># 自定义密码&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="l">这是一篇受保护的文章内容。&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果某篇文章没有 &lt;code>password&lt;/code> 字段，则默认不启用密码保护。&lt;/p>
&lt;hr>
&lt;h3 id="3-修改模板文件">3. 修改模板文件
&lt;/h3>&lt;p>Stack 模板通常使用 &lt;code>layouts&lt;/code> 文件夹中的模板来渲染文章页面。你需要修改渲染单篇文章的模板（通常是 &lt;code>themes/Stack/layouts/_default/single.html&lt;/code>）。&lt;/p>
&lt;h4 id="示例修改">示例修改：
&lt;/h4>&lt;p>在 &lt;code>single.html&lt;/code> 中添加逻辑，检查文章是否有密码，并要求用户输入密码。以下是一个基本的实现思路：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">define&lt;/span> &lt;span class="s2">&amp;#34;body-class&amp;#34;&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">article&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">page&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Enable&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">right&lt;/span> &lt;span class="n">sidebar&lt;/span> &lt;span class="k">if&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">Widget&lt;/span> &lt;span class="n">different&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="s1">&amp;#39;TOC&amp;#39;&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">enabled&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">TOC&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">enabled&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">empty&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*/&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">HasWidgetNotTOC&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="bp">false&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCWidgetEnabled&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="bp">false&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="nb">range&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Site&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">widgets&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">page&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">ne&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">type&lt;/span> &lt;span class="s2">&amp;#34;toc&amp;#34;&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">HasWidgetNotTOC&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">true&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCWidgetEnabled&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">true&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCManuallyDisabled&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="n">eq&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">toc&lt;/span> &lt;span class="bp">false&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCEnabled&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ow">not&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCManuallyDisabled&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCWidgetEnabled&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">hasTOC&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="n">ge&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">len&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">TableOfContents&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mi">100&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Scratch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Set&lt;/span> &lt;span class="s2">&amp;#34;TOCEnabled&amp;#34;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ow">and&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCEnabled&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">hasTOC&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span>&lt;span class="o">-&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Scratch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Set&lt;/span> &lt;span class="s2">&amp;#34;hasWidget&amp;#34;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ow">or&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">HasWidgetNotTOC&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ow">and&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">TOCEnabled&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="n">hasTOC&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">define&lt;/span> &lt;span class="s2">&amp;#34;main&amp;#34;&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">password&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">div&lt;/span> &lt;span class="n">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;password-prompt&amp;#34;&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="err">请输入密码以查看内容：&lt;/span>&lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">input&lt;/span> &lt;span class="n">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;password&amp;#34;&lt;/span> &lt;span class="n">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;password-input&amp;#34;&lt;/span> &lt;span class="o">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">button&lt;/span> &lt;span class="n">onclick&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;checkPassword()&amp;#34;&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="err">提交&lt;/span>&lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="n">button&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="n">div&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">div&lt;/span> &lt;span class="n">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span> &lt;span class="k">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span> &lt;span class="n">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;display: none;&amp;#34;&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/article.html&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">links&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/components/links&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/components/related-content&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">eq&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">comments&lt;/span> &lt;span class="bp">false&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;comments/include&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partialCached&lt;/span> &lt;span class="s2">&amp;#34;footer/footer&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partialCached&lt;/span> &lt;span class="s2">&amp;#34;article/components/photoswipe&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="n">div&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">script&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">function&lt;/span> &lt;span class="n">checkPassword&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">const&lt;/span> &lt;span class="n">input&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">document&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getElementById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;password-input&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">value&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">const&lt;/span> &lt;span class="n">correctPassword&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;{{ .Params.password }}&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">input&lt;/span> &lt;span class="o">===&lt;/span> &lt;span class="n">correctPassword&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">document&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getElementById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;password-prompt&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">style&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">document&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getElementById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">style&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;block&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">alert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;密码错误！&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="n">script&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/article.html&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">links&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/components/links&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;article/components/related-content&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">eq&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">comments&lt;/span> &lt;span class="bp">false&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;comments/include&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partialCached&lt;/span> &lt;span class="s2">&amp;#34;footer/footer&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">partialCached&lt;/span> &lt;span class="s2">&amp;#34;article/components/photoswipe&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">define&lt;/span> &lt;span class="s2">&amp;#34;right-sidebar&amp;#34;&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Params&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">password&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="o">.&lt;/span>&lt;span class="n">Scratch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Get&lt;/span> &lt;span class="s2">&amp;#34;hasWidget&amp;#34;&lt;/span> &lt;span class="p">}}{{&lt;/span> &lt;span class="n">partial&lt;/span> &lt;span class="s2">&amp;#34;sidebar/right.html&amp;#34;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">dict&lt;/span> &lt;span class="s2">&amp;#34;Context&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="s2">&amp;#34;Scope&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;page&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">}}{{&lt;/span> &lt;span class="n">end&lt;/span>&lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>&lt;img src="https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index-1.png"
width="1295"
height="784"
srcset="https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index-1_hu638043685328351914.png 480w, https://www.zata.cc/p/%E7%BB%99hugo%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%A2%9E%E5%8A%A0%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AF%86%E7%A0%81%E9%98%B2%E5%90%9B%E5%AD%90%E4%B8%8D%E9%98%B2%E5%B0%8F%E4%BA%BA/images/index/index-1_hu8409764711839253425.png 1024w"
loading="lazy"
alt="修改对应文件内容"
class="gallery-image"
data-flex-grow="165"
data-flex-basis="396px"
>&lt;/p>
&lt;p>下面是single.html中原本的内容&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;!--
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ define &amp;#34;body-class&amp;#34; }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> article-page
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{/*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Enable the right sidebar if
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Widget different from &amp;#39;TOC&amp;#39; is enabled
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - TOC is enabled and not empty
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> */}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $HasWidgetNotTOC := false -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $TOCWidgetEnabled := false -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- range .Site.Params.widgets.page -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- if ne .type &amp;#34;toc&amp;#34; -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ $HasWidgetNotTOC = true -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- else -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ $TOCWidgetEnabled = true -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- end -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- end -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $TOCManuallyDisabled := eq .Params.toc false -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $TOCEnabled := and (not $TOCManuallyDisabled) $TOCWidgetEnabled -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $hasTOC := ge (len .TableOfContents) 100 -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- .Scratch.Set &amp;#34;TOCEnabled&amp;#34; (and $TOCEnabled $hasTOC) -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- .Scratch.Set &amp;#34;hasWidget&amp;#34; (or $HasWidgetNotTOC (and $TOCEnabled $hasTOC)) -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ define &amp;#34;main&amp;#34; }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partial &amp;#34;article/article.html&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ if .Params.links }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partial &amp;#34;article/components/links&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partial &amp;#34;article/components/related-content&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ if not (eq .Params.comments false) }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partial &amp;#34;comments/include&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partialCached &amp;#34;footer/footer&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partialCached &amp;#34;article/components/photoswipe&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ define &amp;#34;right-sidebar&amp;#34; }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ if .Scratch.Get &amp;#34;hasWidget&amp;#34; }}{{ partial &amp;#34;sidebar/right.html&amp;#34; (dict &amp;#34;Context&amp;#34; . &amp;#34;Scope&amp;#34; &amp;#34;page&amp;#34;) }}{{ end}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }} --&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="解释">解释：
&lt;/h4>&lt;ul>
&lt;li>&lt;code>{{ if .Params.password }}&lt;/code> 检查文章是否有 &lt;code>password&lt;/code> 参数。&lt;/li>
&lt;li>如果有，则显示一个密码输入框和提交按钮，内容默认隐藏。&lt;/li>
&lt;li>用户输入密码后，JavaScript 会验证输入是否与文章的密码匹配。如果匹配，则显示内容；否则提示错误。&lt;/li>
&lt;li>如果没有密码，则直接显示文章内容。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="注意事项">注意事项
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>静态网站限制&lt;/strong>：Hugo 生成的是静态网站，密码保护本质上是前端逻辑，安全性有限。如果需要真正的访问控制，建议使用 CMS 或动态后端。&lt;/li>
&lt;li>&lt;strong>Stack 模板兼容性&lt;/strong>：确保你的修改不会与 Stack 模板的现有样式或脚本冲突。如果有问题，可能需要调整 CSS 或 JavaScript。&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>hugo使用过程中遇到的问题</title><link>https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/</link><pubDate>Wed, 05 Mar 2025 16:22:44 +0800</pubDate><guid>https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/</guid><description>&lt;img src="https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/head.png" alt="Featured image of post hugo使用过程中遇到的问题" />&lt;h2 id="heading">
&lt;/h2>&lt;h3 id="github-action-遇到的问题">github action 遇到的问题
&lt;/h3>&lt;h4 id="github-action提示-you-can-try-to-increase-the-timeout-config-setting">github action提示 you can try to increase the &amp;rsquo;timeout&amp;rsquo; config setting.
&lt;/h4>&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index.png"
width="1521"
height="407"
srcset="https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index_hu12791443383063193090.png 480w, https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index_hu940097100402471275.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="373"
data-flex-basis="896px"
>&lt;/p>
&lt;p>解决方法就是在这里增加一个timeout参数，可以把时间设置大一些
&lt;img src="https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index-1.png"
width="968"
height="745"
srcset="https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index-1_hu11251976675478542362.png 480w, https://www.zata.cc/p/hugo%E4%BD%BF%E7%94%A8%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/images/index/index-1_hu2192198264425451650.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
>&lt;/p></description></item><item><title>5-引入 Giscus 评论系统</title><link>https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/</link><pubDate>Wed, 05 Mar 2025 14:46:18 +0800</pubDate><guid>https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/</guid><description>&lt;img src="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/head.png" alt="Featured image of post 5-引入 Giscus 评论系统" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://www.lixueduan.com/posts/blog/02-add-giscus-comment/#1-%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F" target="_blank" rel="noopener"
>https://www.lixueduan.com/posts/blog/02-add-giscus-comment/#1-%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F&lt;/a>&lt;/p>
&lt;h2 id="stack-主题">Stack 主题
&lt;/h2>&lt;h3 id="1-登录绑定应用">1. 登录绑定应用
&lt;/h3>&lt;p>&lt;a class="link" href="https://github.com/apps/giscus" target="_blank" rel="noopener"
>https://github.com/apps/giscus&lt;/a>&lt;/p>
&lt;p>然后选择你需要绑定的仓库&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index.png"
width="1279"
height="841"
srcset="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index_hu7301991236287032117.png 480w, https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index_hu15685523468764669377.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="364px"
>&lt;/p>
&lt;h3 id="2进入仓库开启discussions">2.进入仓库开启Discussions
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-1.png"
width="1828"
height="778"
srcset="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-1_hu9122074383968530154.png 480w, https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-1_hu5656848333615452332.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="234"
data-flex-basis="563px"
>&lt;/p>
&lt;h3 id="3获取配置信息">3.获取配置信息
&lt;/h3>&lt;p>进到下面的这个网站里面&lt;/p>
&lt;p>&lt;a class="link" href="https://giscus.app/zh-CN" target="_blank" rel="noopener"
>https://giscus.app/zh-CN&lt;/a>&lt;/p>
&lt;p>然后按照这样配置就可以得到最后的配置文件&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-3.png"
width="762"
height="2795"
srcset="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-3_hu15487024619736328917.png 480w, https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-3_hu9987533574049044194.png 1024w"
loading="lazy"
alt="配置步骤"
class="gallery-image"
data-flex-grow="27"
data-flex-basis="65px"
>&lt;/p>
&lt;h3 id="4回到hugoyaml把刚刚的配置填进去">4.回到hugo.yaml把刚刚的配置填进去
&lt;/h3>&lt;p>红框里面是要改的地方&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-4.png"
width="712"
height="1248"
srcset="https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-4_hu6166443668207969849.png 480w, https://www.zata.cc/p/5-%E5%BC%95%E5%85%A5-giscus-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/images/index/index-4_hu15444406904299262961.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="57"
data-flex-basis="136px"
>&lt;/p>
&lt;h3 id="碰到的坑">碰到的坑
&lt;/h3>&lt;ol>
&lt;li>上面的参考文章里面写的页面&amp;ndash;discussion映射关系是使用pathname，但是我发现会乱码，就改成用title了&lt;/li>
&lt;/ol></description></item><item><title>4-自定义Python函数创建博客：告别繁琐的文件头输入</title><link>https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/</link><pubDate>Mon, 03 Mar 2025 16:32:39 +0800</pubDate><guid>https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/</guid><description>&lt;img src="https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index.png" alt="Featured image of post 4-自定义Python函数创建博客：告别繁琐的文件头输入" />&lt;p>&lt;img src="https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index.jpg"
width="1631"
height="929"
srcset="https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index_hu7069794274631558648.jpg 480w, https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index_hu15512260656921184801.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="175"
data-flex-basis="421px"
>&lt;/p>
&lt;p>以下是基于最新的需求重新撰写的博客文章，主题仍是“使用自定义Python函数创建博客，避免繁琐的文件头标准内容输入”。这次博客将反映新的功能：通过 &lt;code>categories&lt;/code>、&lt;code>tags&lt;/code> 和 &lt;code>title&lt;/code> 三个参数生成文件夹和文件，并将路径组合为 &lt;code>categories/tags/title&lt;/code>。&lt;/p>
&lt;hr>
&lt;h1 id="使用自定义python函数创建博客告别繁琐的文件头输入">使用自定义Python函数创建博客：告别繁琐的文件头输入
&lt;/h1>&lt;p>在维护技术博客时，每次创建新文章都需要手动设置文件夹结构和标准化的Markdown文件头，例如标题、分类、标签和日期等。这种重复劳动不仅耗时，还容易出错。想象一下，如果能通过一个简单的命令，比如 &lt;code>zata create -c Python -t github -b MyProject&lt;/code>，自动生成带有标准头部的博客文件，并按分类和标签组织目录结构，会不会让写作更高效？&lt;/p>
&lt;p>在这篇博客中，我将展示如何用Python实现这一自动化工具，并将其打包成一个命令行可执行文件。通过自定义函数，我们可以轻松创建博客文件，避免手动输入繁琐的文件头内容。&lt;/p>
&lt;hr>
&lt;h2 id="背景与目标">背景与目标
&lt;/h2>&lt;p>假设你正在用静态网站生成器（如Jekyll或Hugo）写博客，每次新建文章时需要：&lt;/p>
&lt;ol>
&lt;li>创建一个文件夹结构，比如 &lt;code>Python/github/MyProject&lt;/code>。&lt;/li>
&lt;li>在最内层文件夹中生成一个 &lt;code>index.md&lt;/code> 文件。&lt;/li>
&lt;li>为 &lt;code>index.md&lt;/code> 添加标准头部，例如：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">title: MyProject
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">description: &amp;#34;空&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">date: 2025-03-03T15:20:45+08:00
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image: images/index.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">categories:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Python
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tags:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - github
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>手动完成这些步骤虽然可行，但效率低下。我的目标是：&lt;/p>
&lt;ul>
&lt;li>编写一个Python脚本，接受 &lt;code>categories&lt;/code>、&lt;code>tags&lt;/code> 和 &lt;code>title&lt;/code> 三个参数。&lt;/li>
&lt;li>根据输入生成路径 &lt;code>categories/tags/title&lt;/code>，并创建对应的文件夹和 &lt;code>index.md&lt;/code> 文件。&lt;/li>
&lt;li>自动填充标准头部信息，日期使用当前时间。&lt;/li>
&lt;li>将脚本打包成命令行工具，支持 &lt;code>zata create -c [分类] -t [标签] -b [标题]&lt;/code> 的调用方式。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="20250303-初步实现可以使用命令行创建一个博客">2025.03.03 初步实现可以使用命令行创建一个博客
&lt;/h2>&lt;h3 id="步骤-1设计基本功能">步骤 1：设计基本功能
&lt;/h3>&lt;p>我们需要一个函数，根据输入的 &lt;code>categories&lt;/code>、&lt;code>tags&lt;/code> 和 &lt;code>title&lt;/code> 创建文件夹和文件。以下是最小化的实现：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">datetime&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">datetime&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">current_dir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getcwd&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">current_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">current_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">datetime&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">T%H:%M:%S+08:00&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">makedirs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">md_file_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;index.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">header_content&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">title: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">description: &amp;#34;空&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">date: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">current_time&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">image: images/index.png
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">categories:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">tags:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">md_file_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;w&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">encoding&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;utf-8&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">header_content&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;文件夹 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 和 &amp;#39;index.md&amp;#39; 创建成功！&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Python&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;github&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;MyProject&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这个脚本会在当前目录下创建 &lt;code>Python/github/MyProject&lt;/code> 文件夹，并在其中生成带有标准头部的 &lt;code>index.md&lt;/code>。&lt;/p>
&lt;h3 id="步骤-2添加命令行支持">步骤 2：添加命令行支持
&lt;/h3>&lt;p>为了让脚本更实用，我们引入 &lt;code>argparse&lt;/code> 模块，支持命令行参数输入：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">datetime&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">datetime&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">argparse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">current_dir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getcwd&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">current_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">current_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">datetime&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">T%H:%M:%S+08:00&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">makedirs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">md_file_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;index.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">header_content&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">title: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">description: &amp;#34;空&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">date: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">current_time&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">image: images/index.png
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">categories:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">tags:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">md_file_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;w&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">encoding&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;utf-8&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">header_content&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;文件夹 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 和 &amp;#39;index.md&amp;#39; 创建成功！&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">argparse&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ArgumentParser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prog&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;zata&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">description&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;根据categories、tags和title创建一个文件夹和index.md文件&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subparsers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_subparsers&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dest&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;可用命令&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subparsers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_parser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;create&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建文件夹和index.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--categories&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客分类&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-t&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--tags&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客标签&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-b&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--title&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客标题&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parse_args&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">command&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;create&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">print_help&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">main&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>保存为 &lt;code>zata.py&lt;/code>，运行以下命令测试：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">python zata.py create -c Python -t github -b MyProject
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="步骤-3打包成可执行文件">步骤 3：打包成可执行文件
&lt;/h3>&lt;p>为了方便使用，我们用 &lt;code>PyInstaller&lt;/code> 将脚本打包成单一的 &lt;code>.exe&lt;/code> 文件：&lt;/p>
&lt;ol>
&lt;li>安装 PyInstaller：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install pyinstaller
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>打包脚本：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pyinstaller --onefile zata.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>打包完成后，在 &lt;code>dist&lt;/code> 文件夹中找到 &lt;code>zata.exe&lt;/code>，运行：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">zata.exe create -c Python -t github -b MyProject
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="成果展示">成果展示
&lt;/h3>&lt;p>运行以下命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">zata create -c Python -t github -b MyProject
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>结果：&lt;/p>
&lt;ul>
&lt;li>生成目录结构：&lt;code>Python/github/MyProject&lt;/code>。&lt;/li>
&lt;li>在 &lt;code>MyProject&lt;/code> 文件夹中创建 &lt;code>index.md&lt;/code>，内容如下：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">title: MyProject
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">description: &amp;#34;空&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">date: 2025-03-03T15:20:45+08:00
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image: images/index.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">categories:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Python
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tags:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - github
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>控制台输出：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">文件夹 &amp;#39;Python/github/MyProject&amp;#39; 和 &amp;#39;index.md&amp;#39; 创建成功！
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>整个过程只需一条命令，省去了手动创建文件夹和输入文件头的麻烦。&lt;/p>
&lt;hr>
&lt;h2 id="20250305-增加giu可以下拉选择来创建">2025.03.05 增加giu可以下拉选择来创建
&lt;/h2>&lt;p>&lt;img src="https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index.gif"
width="1113"
height="829"
srcset="https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index_hu16068264805347207270.gif 480w, https://www.zata.cc/p/4-%E8%87%AA%E5%AE%9A%E4%B9%89python%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E5%8D%9A%E5%AE%A2%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B4%E8%BE%93%E5%85%A5/images/index/index_hu4974415188683123512.gif 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="322px"
>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">datetime&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">datetime&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">argparse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">tkinter&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">tk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tkinter&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">messagebox&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 原有函数保持不变，返回值改为元组以适应 GUI 使用&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_category&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;创建category目录&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">makedirs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Category目录 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 创建成功！&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;创建category时发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_tag&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;创建tag目录，必须指定category&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;错误：Category目录 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 不存在！请先创建category&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">makedirs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Tag目录 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 创建成功！&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;创建tag时发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;创建文章目录和index.md文件&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">current_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">datetime&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">T%H:%M:%S+08:00&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parent_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parent_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;错误：父目录 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">parent_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 不存在！请先创建相应的categories和tags目录&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">matched_paths&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">category&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_path&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">matched_paths&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">matched_paths&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;错误：未在任何category下找到tags &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39;！请先创建相应的tags目录&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">matched_paths&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">error_msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;错误：找到多个匹配的tags &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39;：&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">path&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">matched_paths&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">error_msg&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">error_msg&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;请指定具体的category以避免歧义&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">error_msg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parent_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">matched_paths&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">target_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parent_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">categories&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">basename&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dirname&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parent_path&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">makedirs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">md_file_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;index.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">header_content&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">title: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">description: &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">date: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">current_time&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">image: images/index/index.png
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">header_content&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;categories:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">header_content&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;tags:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">md_file_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">md_file_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;w&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">encoding&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;utf-8&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">header_content&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;文件夹 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 和 &amp;#39;index.md&amp;#39; 创建成功！&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;文件夹 &amp;#39;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target_path&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#39; 已存在，跳过创建 &amp;#39;index.md&amp;#39;。&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;发生错误: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 新增函数：获取现有 Category 和 Tag 列表&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_existing_categories&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">))]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_existing_tags&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tags&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">set&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tags&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">update&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">))])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">cat&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cat_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">base_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cat&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cat_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tags&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">update&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cat_path&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cat_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">))])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">sorted&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">list&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 修改后的 GUI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">create_gui&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">root&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Tk&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">root&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Zata - 博客管理工具&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">root&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">geometry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;500x400&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">notebook&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Notebook&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">root&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">notebook&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fill&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;both&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">expand&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Category选项卡&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Frame&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">notebook&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">notebook&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建Category&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Category名称:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_entry&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Entry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">40&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">create_category_btn&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">category_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showerror&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;错误&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;请输入Category名称&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_category&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showinfo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;结果&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 成功后刷新下拉框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">success&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">update_category_combobox&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Button&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建Category&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">command&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">create_category_btn&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Tag选项卡&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Frame&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">notebook&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">notebook&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建Tag&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;所属Category:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_category_entry&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Entry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">40&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_category_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Tag名称:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_entry&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Entry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">40&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">create_tag_btn&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tag_category_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tag_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">category&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showerror&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;错误&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;请输入Category和Tag名称&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_tag&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showinfo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;结果&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 成功后刷新下拉框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">success&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">update_tag_combobox&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Button&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tag_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建Tag&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">command&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">create_tag_btn&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 文章选项卡&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">post_frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Frame&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">notebook&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">notebook&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建文章&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Category 下拉框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;选择Category（可选）:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_combobox&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Combobox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">37&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;readonly&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Tag 下拉框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;选择Tag:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_combobox&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Combobox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">37&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;readonly&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Label&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;文章标题:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">post_title_entry&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Entry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">40&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">post_title_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 更新下拉框内容的函数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">update_category_combobox&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">categories&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_existing_categories&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_combobox&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;values&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">categories&lt;/span> &lt;span class="c1"># 空字符串表示可选&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">categories&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">update_tag_combobox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">event&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">selected_category&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">category_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">selected_category&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tags&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_existing_tags&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">selected_category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tags&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_existing_tags&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_combobox&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;values&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tags&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">tags&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 绑定 Category 下拉框的选择事件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;&amp;lt;ComboboxSelected&amp;gt;&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">update_tag_combobox&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 初始化下拉框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">update_category_combobox&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">update_tag_combobox&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">create_post_btn&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">category_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="kc">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tag_combobox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">post_title_entry&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">tag&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showerror&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;错误&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;请选择Tag并输入文章标题&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messagebox&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">showinfo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;结果&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ttk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Button&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">post_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建文章&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">command&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">create_post_btn&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pady&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">root&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mainloop&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">argparse&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ArgumentParser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prog&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;zata&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">description&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客目录和文件管理工具&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subparsers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_subparsers&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dest&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;可用命令&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subparsers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_parser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;create&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建文章文件夹和index.md&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--categories&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客分类（可选）&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-t&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--tags&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客标签&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-b&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--title&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;博客标题&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subparsers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_parser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;create-category&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建category目录&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--category&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;要创建的category名称&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subparsers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_parser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;create-tag&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;创建tag目录&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--category&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;所属category&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tag_parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-t&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--tag&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;要创建的tag名称&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">gui_parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subparsers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_parser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;gui&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;启动图形界面&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parse_args&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">command&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;create&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_folder_and_md&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">categories&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tags&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">command&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;create-category&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_category&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">command&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;create-tag&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">success&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">msg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">create_tag&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">category&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tag&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">command&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;gui&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">create_gui&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">print_help&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">main&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>3-hugo博客集成Netlify CMS</title><link>https://www.zata.cc/p/3-hugo%E5%8D%9A%E5%AE%A2%E9%9B%86%E6%88%90netlify-cms/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0800</pubDate><guid>https://www.zata.cc/p/3-hugo%E5%8D%9A%E5%AE%A2%E9%9B%86%E6%88%90netlify-cms/</guid><description>&lt;img src="https://www.zata.cc/p/3-hugo%E5%8D%9A%E5%AE%A2%E9%9B%86%E6%88%90netlify-cms/images/index/index.png" alt="Featured image of post 3-hugo博客集成Netlify CMS" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://ttys3.dev/blog/setup-netlify-cms-for-hugo" target="_blank" rel="noopener"
>https://ttys3.dev/blog/setup-netlify-cms-for-hugo&lt;/a> [低质量]&lt;/p>
&lt;p>&lt;a class="link" href="https://guanqr.com/tech/website/deploy-blog-to-netlify/" target="_blank" rel="noopener"
>https://guanqr.com/tech/website/deploy-blog-to-netlify/&lt;/a>&lt;/p></description></item><item><title>2-Hugo主题和配置</title><link>https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/</link><pubDate>Sun, 02 Mar 2025 00:00:00 +0800</pubDate><guid>https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/</guid><description>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/2025-03-02-03-12-15.png" alt="Featured image of post 2-Hugo主题和配置" />&lt;span style="color:red">
参考&lt;br>
https://letere-gzj.github.io/hugo-stack/
&lt;/span>
&lt;h2 id="可能遇到的问题">可能遇到的问题
&lt;/h2>&lt;h3 id="如何插入嵌入式视频">如何插入嵌入式视频
&lt;/h3>&lt;h4 id="b站">B站
&lt;/h4>&lt;ol>
&lt;li>直接可以点击分享的嵌入代码然后粘贴到md文件中&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-5.png"
width="1092"
height="461"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-5_hu9116206819239244763.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-5_hu7331500311211880407.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="236"
data-flex-basis="568px"
>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">iframe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;//player.bilibili.com/player.html?isOutside=true&amp;amp;aid=113991737148695&amp;amp;bvid=BV1qQK7eXERw&amp;amp;cid=28358870196&amp;amp;p=1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">scrolling&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;yes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">border&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">frameborder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;no&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">framespacing&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">allowfullscreen&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">iframe&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-6.png"
width="1216"
height="346"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-6_hu10969684823629374122.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-6_hu11469701848580617392.png 1024w"
loading="lazy"
alt="粘贴代码到md"
class="gallery-image"
data-flex-grow="351"
data-flex-basis="843px"
>&lt;/p>
&lt;p>&lt;code>效果如下：&lt;/code>&lt;/p>
&lt;iframe
src="//player.bilibili.com/player.html?isOutside=true&amp;aid=113991737148695&amp;bvid=BV1qQK7eXERw&amp;cid=28358870196&amp;p=1"
scrolling="yes"
border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true">
&lt;/iframe>
&lt;ol start="2">
&lt;li>使用shortcode方式&lt;/li>
&lt;/ol>
&lt;p>参考：https://zhuanlan.zhihu.com/p/622866669&lt;/p>
&lt;p>创建一个模板文件，内容可以为：&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-7.png"
width="1700"
height="512"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-7_hu850349058267175087.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-7_hu10246328103374107097.png 1024w"
loading="lazy"
alt="bilibili的嵌入视频模板"
class="gallery-image"
data-flex-grow="332"
data-flex-basis="796px"
>&lt;/p>
&lt;p>代码：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;position:relative; padding-bottom:75%; width:100%; height:0&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">iframe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;//player.bilibili.com/player.html?bvid={{.Get 0 }}&amp;amp;page={{ if .Get 1 }}{{.Get 1}}{{ else }}1{{end}}&amp;amp;as_wide=1&amp;amp;high_quality=1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">scrolling&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;no&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">border&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">frameborder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;no&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">framespacing&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">allowfullscreen&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;position:absolute; height: 100%; width: 100%;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">iframe&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后使用下面的语法使用这个模板
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-8.png"
width="587"
height="23"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-8_hu12031096918017416226.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-8_hu13637271954656825537.png 1024w"
loading="lazy"
alt="模板使用方法\{{}}"
class="gallery-image"
data-flex-grow="2552"
data-flex-basis="6125px"
>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-9.png"
width="694"
height="198"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-9_hu4734358445426960514.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-9_hu9769016256501222468.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="350"
data-flex-basis="841px"
>&lt;/p>
&lt;p>&lt;code>效果如下：&lt;/code>&lt;/p>
&lt;p>&lt;code>&amp;lt; bilibili BV1tXRAYiEYR &amp;gt;&lt;/code>&lt;/p>
&lt;div style="position:relative; padding-bottom:75%; width:100%; height:0">
&lt;iframe
src="//player.bilibili.com/player.html?bvid=BV1qQK7eXERw&amp;page=1&amp;as_wide=1&amp;high_quality=1"
scrolling="no"
border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true"
style="position:absolute; height: 100%; width: 100%;"
>
&lt;/iframe>
&lt;/div>
&lt;h3 id="hugo-文章日期设定上的小问题时区问题">Hugo 文章日期设定上的小问题（时区问题）
&lt;/h3>&lt;p>参考： &lt;a class="link" href="https://blog.hly0928.com/post/hugo-post-date-issue/" target="_blank" rel="noopener"
>https://blog.hly0928.com/post/hugo-post-date-issue/&lt;/a>&lt;/p>
&lt;p>Hugo 在生成静态页面的时候，不会生成超过当前时间的文章；而 Hugo 默认采用的是 格林尼治平时 (GMT)，比北京时间 (UTC+8) 晚了 8 个小时。也就是说，当北京时间在 08:00 之前，而你又将文章发布日期设在当天时，Hugo 就默认不会生成这个页面。&lt;/p>
&lt;p>解决方法：
最后我选择文章头增加时区信息&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">date&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2025&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">02&lt;/span>&lt;span class="n">T00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">00&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">08&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">00&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-4.png"
width="762"
height="1203"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-4_hu13132429697951786640.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-4_hu14916960223259750426.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="63"
data-flex-basis="152px"
>&lt;/p>
&lt;h2 id="stack-主题">Stack 主题
&lt;/h2>&lt;h3 id="hugo-stack-配置文件示例">hugo Stack 配置文件示例
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="n">baseurl&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">www&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">zata&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cc&lt;/span> &lt;span class="c1"># 定义网站的基础 URL，所有相对链接基于此生成，通常是域名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">languageCode&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">en&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">us&lt;/span> &lt;span class="c1"># 指定默认语言代码（如 en-us 表示美国英语）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">theme&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">hugo&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">theme&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">stack&lt;/span> &lt;span class="c1"># 指定使用的 Hugo 主题名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">title&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Example&lt;/span> &lt;span class="n">Site&lt;/span> &lt;span class="c1"># 网站的默认标题，显示在浏览器标签页或页面中&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">copyright&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Example&lt;/span> &lt;span class="n">Person&lt;/span> &lt;span class="c1"># 网站版权声明，通常显示在页脚&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Theme i18n support&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Available values: ar, bn, ca, de, el, en, es, fr, hu, id, it, ja, ko, nl, pt-br, th, uk, zh-cn, zh-hk, zh-tw&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DefaultContentLanguage&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">zh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">cn&lt;/span> &lt;span class="c1"># 指定默认内容语言，这里是简体中文（zh-cn）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Set hasCJKLanguage to true if DefaultContentLanguage is in [zh-cn ja ko]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># This will make .Summary and .WordCount behave correctly for CJK languages.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">hasCJKLanguage&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 是否启用 CJK 语言（中文、日文、韩文）的优化，这里关闭&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">languages&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">en&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">languageName&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">English&lt;/span> &lt;span class="c1"># 语言名称为“英语”&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">title&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Example&lt;/span> &lt;span class="n">Site&lt;/span> &lt;span class="c1"># 英文版本的网站标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">weight&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="c1"># 语言优先级，数字越小优先级越高&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sidebar&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subtitle&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Example&lt;/span> &lt;span class="n">description&lt;/span> &lt;span class="c1"># 英文侧边栏描述&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">zh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">cn&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">languageName&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">中文&lt;/span> &lt;span class="c1"># 语言名称为“中文”&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">title&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Zata&lt;/span>&lt;span class="s1">&amp;#39;s Blog # 中文版本的网站标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">weight&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="c1"># 优先级低于英文&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sidebar&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subtitle&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># 中文侧边栏描述（此处为空）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># ar:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># languageName: عربي # 示例：阿拉伯语名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># languagedirection: rtl # 示例：从右到左布局&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># title: موقع تجريبي # 示例：阿拉伯语标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># weight: 3 # 示例：优先级&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># params:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># sidebar:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># subtitle: وصف تجريبي # 示例：阿拉伯语侧边栏描述&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">services&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Change it to your Disqus shortname before using&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">disqus&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shortname&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;hugo-theme-stack&amp;#34;&lt;/span> &lt;span class="c1"># Disqus 评论系统的短名称，用于启用评论&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># GA Tracking ID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">googleAnalytics&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">id&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Google Analytics 的跟踪 ID（未填写）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">pagination&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pagerSize&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="c1"># 每页显示的文章数量，这里为 10 篇&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">permalinks&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">post&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">slug&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="c1"># 文章链接格式，例如 /p/my-post/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">page&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">slug&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="c1"># 普通页面链接格式，例如 /about/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mainSections&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">post&lt;/span> &lt;span class="c1"># 指定主要内容类型为 post（通常是博客文章）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">featuredImageField&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">image&lt;/span> &lt;span class="c1"># 指定文章的特色图片字段为 image（文章头的key）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rssFullContent&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># RSS 订阅输出完整文章内容，而非摘要&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">favicon&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># 网站图标路径（未设置，例如 /favicon.ico）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 网站图标路径#e.g.:favicon placed in static/favicon.ico of your site folder,then set thisfield to/favicon.ico(/is necessay)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">footer&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">since&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2020&lt;/span> &lt;span class="c1"># 显示网站起始年份（如“© 2020-2025”）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">customText&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># 自定义页脚文本（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dateFormat&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">published&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Jan&lt;/span> &lt;span class="mi">02&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2006&lt;/span> &lt;span class="c1"># 文章发布日期格式（例如“Jan 02, 2006”）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lastUpdated&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Jan&lt;/span> &lt;span class="mi">02&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2006&lt;/span> &lt;span class="mi">15&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">04&lt;/span> &lt;span class="n">MST&lt;/span> &lt;span class="c1"># 最后更新时间的格式（包含时区）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sidebar&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">emoji&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">🍥&lt;/span> &lt;span class="c1"># 侧边栏显示的表情符号&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subtitle&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Hello&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">I&lt;/span> &lt;span class="n">am&lt;/span> &lt;span class="n">Zata&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="c1"># 侧边栏副标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">avatar&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用头像&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">local&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 头像文件存储在本地&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">src&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">img&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">avatar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">jpg&lt;/span> &lt;span class="c1"># 头像文件路径&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">article&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">math&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 是否启用数学公式支持（关闭）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">toc&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用文章目录（Table of Contents）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">readingTime&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 显示阅读时间&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">license&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 是否显示许可声明（关闭）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Licensed&lt;/span> &lt;span class="n">under&lt;/span> &lt;span class="n">CC&lt;/span> &lt;span class="n">BY&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">NC&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">SA&lt;/span> &lt;span class="mf">4.0&lt;/span> &lt;span class="c1"># 默认许可文本&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">comments&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用评论&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">provider&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">disqus&lt;/span> &lt;span class="c1"># 使用 Disqus 作为评论提供者&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">disqusjs&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shortname&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># DisqusJS 的短名称（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">apiUrl&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># DisqusJS 的 API 地址（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">apiKey&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># DisqusJS 的 API 密钥（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">admin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># DisqusJS 管理员（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">adminLabel&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># DisqusJS 管理员标签（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">utterances&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Utterances 的仓库（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">issueTerm&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">pathname&lt;/span> &lt;span class="c1"># Utterances 的问题标识方式（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">label&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Utterances 的标签（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">beaudar&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Beaudar 的仓库（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">issueTerm&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">pathname&lt;/span> &lt;span class="c1"># Beaudar 的问题标识方式（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">label&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Beaudar 的标签（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">theme&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Beaudar 的主题（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">remark42&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">host&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Remark42 的主机地址（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">site&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Remark42 的站点名称（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">locale&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Remark42 的语言（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">vssue&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">platform&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Vssue 的平台（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">owner&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Vssue 的拥有者（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Vssue 的仓库（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">clientId&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Vssue 的客户端 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">clientSecret&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Vssue 的客户端密钥（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">autoCreateIssue&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># Vssue 是否自动创建问题（关闭）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Waline client configuration see: https://waline.js.org/en/reference/component.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">waline&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">serverURL&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Waline 的服务器地址（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lang&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Waline 的语言（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pageview&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Waline 的页面浏览量（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">emoji&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">unpkg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nd">@waline&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">emojis&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="mf">1.0.1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">weibo&lt;/span> &lt;span class="c1"># Waline 的表情包地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">requiredMeta&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">name&lt;/span> &lt;span class="c1"># Waline 的必填项：名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">email&lt;/span> &lt;span class="c1"># Waline 的必填项：邮箱&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">url&lt;/span> &lt;span class="c1"># Waline 的必填项：网址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">locale&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">admin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Admin&lt;/span> &lt;span class="c1"># Waline 的管理员名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">placeholder&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Waline 的占位符（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">twikoo&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">envId&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Twikoo 的环境 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">region&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Twikoo 的区域（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">path&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Twikoo 的路径（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lang&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Twikoo 的语言（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># See https://cactus.chat/docs/reference/web-client/#configuration for description of the various options&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cactus&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">defaultHomeserverUrl&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;https://matrix.cactus.chat:8448&amp;#34;&lt;/span> &lt;span class="c1"># Cactus 的默认服务器地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">serverName&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;cactus.chat&amp;#34;&lt;/span> &lt;span class="c1"># Cactus 的服务器名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">siteName&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span> &lt;span class="c1"># Cactus 的站点名称（需唯一，未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">giscus&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的仓库（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repoID&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的仓库 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">category&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的分类（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">categoryID&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的分类 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mapping&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的映射方式（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lightTheme&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的亮色主题（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">darkTheme&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Giscus 的暗色主题（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">reactionsEnabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="c1"># Giscus 是否启用反应（启用）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">emitMetadata&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="c1"># Giscus 是否输出元数据（关闭）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">gitalk&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">owner&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的拥有者（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">admin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的管理员（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">repo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的仓库（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">clientID&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的客户端 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">clientSecret&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的客户端密钥（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">proxy&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Gitalk 的代理（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cusdis&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">host&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Cusdis 的主机地址（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">id&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Cusdis 的 ID（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">widgets&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">homepage&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">search&lt;/span> &lt;span class="c1"># 主页小部件：搜索框&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">archives&lt;/span> &lt;span class="c1"># 主页小部件：归档列表&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">limit&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">5&lt;/span> &lt;span class="c1"># 归档列表限制显示 5 个&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">categories&lt;/span> &lt;span class="c1"># 主页小部件：分类列表&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">limit&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="c1"># 分类列表限制显示 10 个&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">cloud&lt;/span> &lt;span class="c1"># 主页小部件：标签云&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">limit&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="c1"># 标签云限制显示 10 个&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">page&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">toc&lt;/span> &lt;span class="c1"># 单页小部件：目录&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">opengraph&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">twitter&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Your Twitter username&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">site&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># Twitter 用户名（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Available values: summary, summary_large_image&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">card&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">summary_large_image&lt;/span> &lt;span class="c1"># Twitter 卡片类型（大图模式）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">defaultImage&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">opengraph&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 是否启用默认 Open Graph 图片（关闭）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">local&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 是否使用本地图片（否）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">src&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="c1"># 图片路径（未设置）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">colorScheme&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Display toggle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">toggle&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 显示主题切换按钮&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Available values: auto, light, dark&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">auto&lt;/span> &lt;span class="c1"># 默认使用自动主题（根据浏览器偏好）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">imageProcessing&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cover&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用封面图处理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">content&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enabled&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用内容图片处理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">### Custom menu&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">### See https://stack.jimmycai.com/config/menu&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">### To remove about, archive and search page menu item, remove `menu` field from their FrontMatter&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">menu&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">main&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[]&lt;/span> &lt;span class="c1"># 主菜单（为空）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">social&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">identifier&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">github&lt;/span> &lt;span class="c1"># 社交链接：GitHub&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">GitHub&lt;/span> &lt;span class="c1"># 显示名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">url&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">github&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zata&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">zhangtao&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ZataTree&lt;/span> &lt;span class="c1"># 链接地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">params&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">icon&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">brand&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">github&lt;/span> &lt;span class="c1"># 图标名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># - identifier: twitter # 示例：Twitter 社交链接（已注释）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># name: Twitter&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># url: https://twitter.com&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># params:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># icon: brand-twitter&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">related&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">includeNewer&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 相关文章推荐包括较新的文章&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">threshold&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">60&lt;/span> &lt;span class="c1"># 相关性阈值（越高越严格）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">toLower&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 标签/分类是否忽略大小写&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">indices&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">tags&lt;/span> &lt;span class="c1"># 根据标签匹配相关文章&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">weight&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span> &lt;span class="c1"># 标签权重&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">categories&lt;/span> &lt;span class="c1"># 根据分类匹配相关文章&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">weight&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">200&lt;/span> &lt;span class="c1"># 分类权重&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">markup&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">goldmark&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">extensions&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">passthrough&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">enable&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用原始字符渲染（例如数学公式）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">delimiters&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">block&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="o">-&lt;/span> \&lt;span class="p">[&lt;/span> &lt;span class="c1"># 块级数学公式开始分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> \&lt;span class="p">]&lt;/span> &lt;span class="c1"># 块级数学公式结束分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="err">$$&lt;/span> &lt;span class="c1"># 块级数学公式开始分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="err">$$&lt;/span> &lt;span class="c1"># 块级数学公式结束分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">inline&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="o">-&lt;/span> \&lt;span class="p">(&lt;/span> &lt;span class="c1"># 行内数学公式开始分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> \&lt;span class="p">)&lt;/span> &lt;span class="c1"># 行内数学公式结束分隔符&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">renderer&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">## Set to true if you have HTML content inside Markdown&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">unsafe&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 允许在 Markdown 中嵌入 HTML&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tableOfContents&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">endLevel&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4&lt;/span> &lt;span class="c1"># 目录包含到 4 级标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ordered&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 目录编号&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">startLevel&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="c1"># 从 2 级标题开始&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">highlight&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">noClasses&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">false&lt;/span> &lt;span class="c1"># 使用 CSS 类高亮代码&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">codeFences&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 启用代码块&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">guessSyntax&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 自动检测代码语言&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineNoStart&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="c1"># 行号从 1 开始&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineNos&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 显示行号&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lineNumbersInTable&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">true&lt;/span> &lt;span class="c1"># 行号显示在表格中&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tabWidth&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4&lt;/span> &lt;span class="c1"># 制表符宽度&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">frontmatter&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lastmod&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;:fileModTime&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;lastmod&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="c1"># 定义最后修改时间的来源（文件修改时间或 frontmatter 中的 lastmod）&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="hugo-stack-主题添加最后修改于">Hugo Stack 主题添加[最后修改于]
&lt;/h3>&lt;p>参考：&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://shitao5.org/posts/hugo-stack/" target="_blank" rel="noopener"
>https://shitao5.org/posts/hugo-stack/&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>
&lt;p>配置[最后修改于]&lt;/p>
&lt;p>在主题的.yaml文件中添加&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="n">frontmatter&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">lastmod&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;:fileModTime&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;lastmod&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-1.png"
width="878"
height="982"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-1_hu8889012725517830678.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-1_hu10408378799160670473.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="89"
data-flex-basis="214px"
>
&lt;strong>这样会显示最后更新于&lt;/strong>
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image.png"
width="1165"
height="668"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image_hu6179979274214935225.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image_hu16446997444669025875.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="418px"
>&lt;/p>
&lt;p>&lt;strong>如果要显示最后修改于&lt;/strong>
修改 themes/hugo-theme-stack/i18n 文件夹中的 zh-cn.yaml 文件
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-3.png"
width="1518"
height="1215"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-3_hu10865147821651021898.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-3_hu10863578647763158585.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="124"
data-flex-basis="299px"
>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="在文章开头就显示修改时间">在文章开头就显示修改时间
&lt;/h3>&lt;p>参考：&lt;br>
&lt;a class="link" href="https://letere-gzj.github.io/hugo-stack/p/hugo/custom-stack-theme/#3-%E6%98%BE%E7%A4%BA%E6%96%87%E7%AB%A0%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4" target="_blank" rel="noopener"
>https://letere-gzj.github.io/hugo-stack/p/hugo/custom-stack-theme/#3-%E6%98%BE%E7%A4%BA%E6%96%87%E7%AB%A0%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4&lt;/a>&lt;/p>
&lt;ol>
&lt;li>在themes\hugo-theme-satck\layouts\partials\article\components\details.html，在指定位置引入以下代码&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl"> {{- if ne .Lastmod .Date -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ partial &amp;#34;helper/icon&amp;#34; &amp;#34;clock&amp;#34; }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">time&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;article-time--published&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ T &amp;#34;article.lastUpdatedOn&amp;#34; }} {{ .Lastmod | time.Format ( or .Site.Params.dateFormat.lastUpdated &amp;#34;Jan 02, 2006 15:04 MST&amp;#34; ) }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">time&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- end -}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-2.png"
width="990"
height="661"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-2_hu12848048106209387350.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-2_hu14462126132099847529.png 1024w"
loading="lazy"
alt="在details.html中插入代码"
class="gallery-image"
data-flex-grow="149"
data-flex-basis="359px"
>&lt;/p>
&lt;ol start="2">
&lt;li>在主题的.yaml文件中添加&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 更新时间：优先读取git时间 -&amp;gt; git时间不存在，就读取本地文件修改时间&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">frontmatter&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">lastmod&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="p">:&lt;/span>&lt;span class="l">git&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="p">:&lt;/span>&lt;span class="l">fileModTime&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># 允许获取Git信息 &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">enableGitInfo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index.png"
width="925"
height="271"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index_hu15220760328662926381.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index_hu12448746280374574208.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="341"
data-flex-basis="819px"
>&lt;/p>
&lt;p>这部分指定了Hugo获取lastmod值的优先级顺序：&lt;br>
:git：优先使用Git提交历史中的最后修改时间（更准确反映内容实际更新时间）。&lt;br>
:fileModTime：如果Git信息不可用，则使用本地文件的修改时间作为备选。&lt;br>
如果不设置这个，Hugo可能无法正确填充.Lastmod，导致你的代码 {{ if ne .Lastmod .Date }} 条件永远不生效。&lt;br>
enableGitInfo: true：&lt;br>
默认情况下，Hugo不会去查询Git信息（为了性能考虑）。&lt;br>
设置 enableGitInfo: true 后，Hugo会利用Git仓库的提交历史来填充页面变量（如 .Lastmod）。&lt;br>
如果你使用的是版本控制（比如GitHub），这个设置非常有用，因为它能确保修改时间反映的是内容的实际提交时间，而不是本地文件的时间（后者可能因环境不同而变化）。&lt;/p>
&lt;ol start="3">
&lt;li>修改github action文件.github/workflows/xxx.yaml，让可以读取git信息&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Git Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global core.quotePath false
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global core.autocrlf false
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global core.safecrlf true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global core.ignorecase false &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-1.png"
width="1018"
height="671"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-1_hu16774370750001245115.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-1_hu8364093984618991152.png 1024w"
loading="lazy"
alt="代码修改位置"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="364px"
>&lt;/p>
&lt;p>这些配置确保Git在构建过程中能够正确处理文件路径和换行符等问题，避免因环境差异导致的异常。&lt;br>
core.quotePath false：确保特殊字符的文件名不会被转义。&lt;br>
core.autocrlf false：避免换行符转换问题（不同系统可能处理不同）。&lt;br>
core.safecrlf true：确保换行符处理安全。&lt;br>
core.ignorecase false：保持文件名大小写敏感。&lt;br>
这些设置虽然不直接决定.Lastmod，但能确保Git仓库的行为一致，避免潜在问题。&lt;/p>
&lt;h3 id="代码块过长折叠展开">代码块过长折叠&amp;amp;展开
&lt;/h3>&lt;ol>
&lt;li>准备一张图片作为代码展开的按钮，放到assets/icons文件夹下，并命名为codeMore.png&lt;/li>
&lt;li>将下面代码复制粘贴到layouts/partials/footer/custom.html中(文件没有就新建)，有报错不要管&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">highlight&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* 你可以根据需要调整这个高度 */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">400&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">overflow&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">hidden&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-show&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">none&lt;/span> &lt;span class="cp">!important&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-box&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">padding-top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">78&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background-image&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kp">-webkit-&lt;/span>&lt;span class="nf">gradient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">linear&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kc">left&lt;/span> &lt;span class="kc">top&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kc">left&lt;/span> &lt;span class="kc">bottom&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nf">from&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">rgba&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="nf">to&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">#fff&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">position&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">left&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">right&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">bottom&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">z-index&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-btn&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">block&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">auto&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">44&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">22&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f0f0f5&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-top-left-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-top-right-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">padding-top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">cursor&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">pointer&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-img&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">cursor&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">pointer&lt;/span> &lt;span class="cp">!important&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">block&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">auto&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">22&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">16&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">function&lt;/span> &lt;span class="nx">initCodeMoreBox&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">let&lt;/span> &lt;span class="nx">codeBlocks&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.highlight&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="nx">codeBlocks&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlocks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeBlock&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 校验是否overflow
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollHeight&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">clientHeight&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 元素初始化
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// codeMoreBox
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">let&lt;/span> &lt;span class="nx">codeMoreBox&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-box&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// codeMoreBtn
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">let&lt;/span> &lt;span class="nx">codeMoreBtn&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-btn&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">addEventListener&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;click&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-show&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">style&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;none&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 触发resize事件，重新计算目录位置
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dispatchEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">new&lt;/span> &lt;span class="nx">Event&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;resize&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// img
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">let&lt;/span> &lt;span class="nx">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;img&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-img&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">src&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{{&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">resources&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Get&lt;/span> &lt;span class="s2">&amp;#34;icons/codemore.png&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">Permalink&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 元素添加
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">img&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">initCodeMoreBox&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-7.png"
width="200"
height="200"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-7_hu1571281051582635187.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-7_hu8309077573045533805.png 1024w"
loading="lazy"
alt="挖掘机图片作为展开按钮"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-6.png"
width="1194"
height="905"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-6_hu5363306755399736069.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-6_hu5765167908079644630.png 1024w"
loading="lazy"
alt="文件绝对位置"
class="gallery-image"
data-flex-grow="131"
data-flex-basis="316px"
>&lt;/p>
&lt;h3 id="添加返回顶部按钮">添加’返回顶部’按钮
&lt;/h3>&lt;ol>
&lt;li>图片还是和代码块过长一样放在/assets/icons文件夹下，命名为backtop.png&lt;/li>
&lt;li>修改layouts/partials/footer/custom.html文件，下面的代码是直接在代码块折叠的基础上又加了返回最顶按钮.粘贴代码一样也是，vscode报错也别理&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">highlight&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">400&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">overflow&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">hidden&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">position&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">relative&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-show&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">none&lt;/span> &lt;span class="cp">!important&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-box&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">padding-top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">78&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background-image&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">linear-gradient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">to&lt;/span> &lt;span class="kc">bottom&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">rgba&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">255&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="mh">#fff&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">position&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">absolute&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">left&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">bottom&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">z-index&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-btn&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">block&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="kc">auto&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">44&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">22&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f0f0f5&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-top-left-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-top-right-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">padding-top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">cursor&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">pointer&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">code-more-img&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">block&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="kc">auto&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">22&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">16&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">#&lt;/span>&lt;span class="nn">backTopBtn&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">none&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">position&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">fixed&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">bottom&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">30&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">right&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">z-index&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">99&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">cursor&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">pointer&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">30&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">30&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background-image&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">url&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sx">{{ (resources.Get &amp;#34;icons/backtop.png&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">RelPermalink&lt;/span> &lt;span class="p">}&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="o">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">background-size&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nt">cover&lt;/span>&lt;span class="o">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">background-repeat&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nt">no-repeat&lt;/span>&lt;span class="o">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">function&lt;/span> &lt;span class="nx">initCodeMoreBox&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">codeBlocks&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.highlight&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="nx">codeBlocks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">length&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlocks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeBlock&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollHeight&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">clientHeight&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">codeMoreBox&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-box&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">codeMoreBtn&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-btn&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;img&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-more-img&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">src&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;{{ (resources.Get &amp;#34;&lt;/span>&lt;span class="nx">icons&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nx">codemore&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">png&lt;/span>&lt;span class="s2">&amp;#34;).RelPermalink }}&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">alt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;Show more&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">addEventListener&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;click&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;code-show&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">style&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;none&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dispatchEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">new&lt;/span> &lt;span class="nx">Event&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;resize&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">img&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeMoreBtn&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">codeBlock&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">codeMoreBox&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Error in initCodeMoreBox:&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">error&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">function&lt;/span> &lt;span class="nx">initScrollTop&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">rightSideBar&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.right-sidebar&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="nx">rightSideBar&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">warn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Right sidebar not found&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">btn&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">createElement&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;div&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">btn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;backTopBtn&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">btn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">onclick&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">backToTop&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">rightSideBar&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">appendChild&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">btn&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">onscroll&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kd">function&lt;/span> &lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollTop&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">20&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">documentElement&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollTop&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">btn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">style&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;block&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">btn&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">style&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">display&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Error in initScrollTop:&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">error&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">function&lt;/span> &lt;span class="nx">backToTop&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollTo&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">top&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">behavior&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;smooth&amp;#34;&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">addEventListener&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;DOMContentLoaded&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">initCodeMoreBox&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">initScrollTop&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-8.png"
width="200"
height="200"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-8_hu10187646418117058825.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-8_hu11643217485349635283.png 1024w"
loading="lazy"
alt="小火箭图标"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-5.png"
width="1065"
height="753"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-5_hu2824378096675725717.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/index-5_hu10185707607907486310.png 1024w"
loading="lazy"
alt="代码粘贴位置"
class="gallery-image"
data-flex-grow="141"
data-flex-basis="339px"
>&lt;/p>
&lt;h3 id="如何修改导航栏">如何修改导航栏
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-14.png"
width="1130"
height="494"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-14_hu9894920497085083178.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-14_hu16678959993143435909.png 1024w"
loading="lazy"
alt="导航栏"
class="gallery-image"
data-flex-grow="228"
data-flex-basis="548px"
>&lt;/p>
&lt;p>修改content文件夹中的page文件夹下的文件夹，每一个文件夹代表一个导航栏&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-15.png"
width="373"
height="217"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-15_hu5722755495075117734.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-15_hu18388577968467041600.png 1024w"
loading="lazy"
alt="page下每一个文件夹代表一个导航栏"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="412px"
>&lt;/p>
&lt;p>文件夹中的md文件就是&lt;code>页面&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-16.png"
width="1366"
height="472"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-16_hu9922154855368550930.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-16_hu13558857067107159546.png 1024w"
loading="lazy"
alt="md文件"
class="gallery-image"
data-flex-grow="289"
data-flex-basis="694px"
>&lt;/p>
&lt;p>这里有一个奇怪的页面archives&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-17.png"
width="1725"
height="946"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-17_hu12520433806162984328.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-17_hu10329728828398592193.png 1024w"
loading="lazy"
alt="archives"
class="gallery-image"
data-flex-grow="182"
data-flex-basis="437px"
>&lt;/p>
&lt;p>看到源码，实际上主要是layout这个属性&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-18.png"
width="544"
height="267"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-18_hu1045298879603298109.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-18_hu9495342891954455137.png 1024w"
loading="lazy"
alt="layout"
class="gallery-image"
data-flex-grow="203"
data-flex-basis="488px"
>&lt;/p>
&lt;p>这个layout属性对应的就是一个html页面，在主题中定义
&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-19.png"
width="537"
height="685"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-19_hu2758287370579651446.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-19_hu408243992053446535.png 1024w"
loading="lazy"
alt="定义位置"
class="gallery-image"
data-flex-grow="78"
data-flex-basis="188px"
>&lt;/p>
&lt;h3 id="archives页面中卡片对应的图片在哪里">archives页面中，卡片对应的图片在哪里
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-20.png"
width="1419"
height="885"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-20_hu4526935283047031264.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-20_hu6669957132286804951.png 1024w"
loading="lazy"
alt="archives页面卡片图片"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>这些图片对应的也是页面，在content根目录下面创建两个文件夹，分别是categories和tags就可以了&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-21.png"
width="988"
height="435"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-21_hu130895926152210267.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-21_hu13303519006153169300.png 1024w"
loading="lazy"
alt="categories和tags"
class="gallery-image"
data-flex-grow="227"
data-flex-basis="545px"
>&lt;/p>
&lt;h2 id="其他主题还没使用的">其他主题（还没使用的
&lt;/h2>&lt;h3 id="book">Book
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-10.png"
width="1401"
height="954"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-10_hu8311496147984711683.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-10_hu8674962086948646443.png 1024w"
loading="lazy"
alt="BOOK主题"
class="gallery-image"
data-flex-grow="146"
data-flex-basis="352px"
>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-12.png"
width="1378"
height="804"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-12_hu18012281254532100943.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-12_hu11122258968500007807.png 1024w"
loading="lazy"
alt="关于tags"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="411px"
>&lt;/p>
&lt;hr>
&lt;p>后续： 2025-05-08&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-13.png"
width="1241"
height="911"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-13_hu11110108557110793532.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-13_hu7000390127835302310.png 1024w"
loading="lazy"
alt="我的尝试"
class="gallery-image"
data-flex-grow="136"
data-flex-basis="326px"
>&lt;/p>
&lt;p>我去试了一些，直接修改主题并没有它示例上面的功能，但是想要改配置的话也没有教程可以参考，所以放弃&lt;/p>
&lt;h3 id="lovelt">Lovelt
&lt;/h3>&lt;p>&lt;img src="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-11.png"
width="1875"
height="954"
srcset="https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-11_hu16687914566386816004.png 480w, https://www.zata.cc/p/2-hugo%E4%B8%BB%E9%A2%98%E5%92%8C%E9%85%8D%E7%BD%AE/images/index/image-11_hu12898208092670260077.png 1024w"
loading="lazy"
alt="Lovelt"
class="gallery-image"
data-flex-grow="196"
data-flex-basis="471px"
>&lt;/p></description></item><item><title>1-hugo安装使用</title><link>https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/</guid><description>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/head.png" alt="Featured image of post 1-hugo安装使用" />&lt;h1 id="hugo">hugo
&lt;/h1>&lt;h2 id="常用命令">常用命令
&lt;/h2>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># start the hugo server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hugo server -D
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># build the hugo site&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hugo -D
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="hugo使用注意事项">hugo使用注意事项
&lt;/h2>&lt;ol>
&lt;li>&lt;code>文件命名必须是index.xxxx.md&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>md文件+图片的组合，文件夹的名称是随意命名的，但文件夹里md文件的命名，必须为index.md或index.zh-cn.md否则图片资源可能在打包上传时会消失。&lt;/p>
&lt;ol start="2">
&lt;li>&lt;code>图片资源的放置位置有讲究&lt;/code>
看下面两张图，三张图片在md文件中本地查看都是可以的，但是在打包上传时，最后一个图片资源可能会消失。&lt;/li>
&lt;/ol>
&lt;p>&lt;code>图片资源必须和.md文件在同一个文件夹下，否则图片资源可能在打包上传时会消失。&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index.jpg"
width="1920"
height="1016"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index_hu16210632772650124683.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index_hu6449132482289204781.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="453px"
>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index-1.jpg"
width="1908"
height="891"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index-1_hu11921329357507897251.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/index/index-1_hu9180039650867633966.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="214"
data-flex-basis="513px"
>&lt;/p>
&lt;h2 id="hugo在ubuntu系统下安装使用">hugo在ubuntu系统下安装使用
&lt;/h2>&lt;p>&lt;span style="color:red" > 2025年5月5日，本来想要在服务器上部署到，试了没成功，感觉挺难的，最后把服务器改成了windows系统 &lt;/span>
&lt;span style="color:red" > 2025年7月14日，我在mac到容器中执行apt install hugo 很容易就安装上了啊 &lt;/span>&lt;/p>
&lt;p>&lt;a class="link" href="https://gohugo.io/getting-started/quick-start/" target="_blank" rel="noopener"
>https://gohugo.io/getting-started/quick-start/&lt;/a>&lt;/p>
&lt;ol>
&lt;li>安装hugo&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install hugo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>安装git&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install git-all
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="hugo在windwos安装使用">hugo在windwos安装使用
&lt;/h2>&lt;ul>
&lt;li>download 下载&lt;/li>
&lt;/ul>
&lt;p>&lt;a class="link" href="https://github.com/gohugoio/hugo/releases" target="_blank" rel="noopener"
>https://github.com/gohugoio/hugo/releases&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8.jpg"
width="1912"
height="996"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8_hu17113566868376367491.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8_hu2480089921267885810.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="191"
data-flex-basis="460px"
>&lt;/p>
&lt;ul>
&lt;li>unzip to local 解压到本地 , example : here I created a folder&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-1.jpg"
width="1744"
height="972"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-1_hu6308411271341146571.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-1_hu10100391200030252032.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="179"
data-flex-basis="430px"
>&lt;/p>
&lt;ul>
&lt;li>run the cmd command under the directory 在目录下面运行cmd命令 ,example : here I created a folder named zata&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo new site zata
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-2.jpg"
width="1113"
height="626"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-2_hu6076851551550793527.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-2_hu860166904581307373.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>copy hugo.exe to zata folder 把hugo.exe复制到zata文件夹&lt;/p>
&lt;/li>
&lt;li>
&lt;p>run the cmd command under the directory 在目录下面运行cmd命令,example : here I created a folder named zata
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-3.jpg"
width="1787"
height="951"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-3_hu15713463188735219293.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-3_hu16324140096998634908.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>then you can see the example site
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-4.jpg"
width="1908"
height="948"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-4_hu11639859572822230581.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-4_hu8196742127013815323.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="201"
data-flex-basis="483px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>next step, you need to install the theme
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-5.jpg"
width="1908"
height="891"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-5_hu11690653603472481323.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-5_hu12912525806492148694.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="214"
data-flex-basis="513px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>choose the theme you want to install , example : here I choose the theme named Stack
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-6.jpg"
width="1908"
height="896"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-6_hu15725832044261330917.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-6_hu286637356239147652.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="212"
data-flex-basis="511px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-7.jpg"
width="1908"
height="891"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-7_hu3529339632070551541.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-7_hu15531316359361679505.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="214"
data-flex-basis="513px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-8.jpg"
width="1908"
height="891"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-8_hu3627550054184280575.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-8_hu18287453062319878760.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="214"
data-flex-basis="513px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-9.jpg"
width="1908"
height="891"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-9_hu13695251667230783657.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-9_hu12433595740479426673.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="214"
data-flex-basis="513px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>unzip the theme to the zata/themes folder, and delete the version number
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-10.jpg"
width="1744"
height="833"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-10_hu12910458764700619227.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-10_hu4508713524552970344.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="209"
data-flex-basis="502px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>copy [your-theme-name]/exampleSite/config.toml&amp;amp;content to zata/
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-11.jpg"
width="1744"
height="875"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-11_hu3261007449696839644.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-11_hu2282616671580614301.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="199"
data-flex-basis="478px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>delete the toml file, because the toml file is not used, the yaml file is used
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-12.jpg"
width="1744"
height="728"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-12_hu10040987687623478614.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-12_hu435537850710442610.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="239"
data-flex-basis="574px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-13.jpg"
width="1904"
height="709"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-13_hu11567434890688418696.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-13_hu3188427348478047399.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="268"
data-flex-basis="644px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>delete rich-content folder,because the rich-content folder is cite some website, and the website is not used
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-14.jpg"
width="1744"
height="717"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-14_hu7864802073797376886.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-14_hu7403729431339096405.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="243"
data-flex-basis="583px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>run the cmd command under the directory in zata folder, then you can see:
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-15.jpg"
width="1113"
height="626"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-15_hu1529786268679249648.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-15_hu7737275257581732366.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-16.jpg"
width="1908"
height="943"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-16_hu8923223115840126472.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-16_hu17962429128623728023.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="202"
data-flex-basis="485px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>then you can create a new post
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-17.jpg"
width="1113"
height="626"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-17_hu487498202997223794.jpg 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/image/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8-17_hu2924432490108029008.jpg 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo new content post/myFristBlog/index.md
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>myFtistBlog is the name of the page&lt;/strong>
In hugo, a folder is a page, then the default language of index.md that you can modify in the hugo.yaml, the default language of index.zh-cn.md is Chinese, and the images used in md will be placed in this folder.&lt;/p>
&lt;h2 id="使用github部署hugo的静态页面常规方式下面一节使用github-action">使用github部署hugo的静态页面常规方式（下面一节使用github action）
&lt;/h2>&lt;h3 id="将hugo的编译成静态页面">将hugo的编译成静态页面
&lt;/h3>&lt;ol>
&lt;li>修改配置文件中的baseurl,具体如何修改可以看下一节 :&lt;a class="link" href="#push-%e4%b8%8a%e4%b8%80%e6%ad%a5%e7%94%9f%e6%88%90%e7%9a%84pulic%e6%96%87%e4%bb%b6%e5%a4%b9%e5%88%b0github" >如何对应github静态页面的域名&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-4.png"
width="735"
height="324"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-4_hu7542179556551362073.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-4_hu15814733005732997075.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="226"
data-flex-basis="544px"
>&lt;/p>
&lt;ol start="2">
&lt;li>在根目录下面使用hugo -D 命令生成静态页面
using &amp;ldquo;hugo -D&amp;rdquo; command to generate static pages in the root directory
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo -D
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>这将生成一个public文件夹
This will generate a public folder&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image.png"
width="1701"
height="626"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image_hu16241520916839569986.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image_hu1171907236490871539.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="271"
data-flex-basis="652px"
>&lt;/p>
&lt;h3 id="push-上一步生成的pulic文件夹到github">push 上一步生成的pulic文件夹到github
&lt;/h3>&lt;ol>
&lt;li>首先需要在github上创建一个仓库，这个仓库名如果是&amp;quot;[你的用户名].github.io&amp;quot; 那么后续生成的静态页面的地址就不会有后缀，不然就会有后缀，例如我的github名字是zata-zhangtao,我创建了一个仓库为zata-zhangtao.github.io，那么生成的静态页面的地址就是zata-zhangtao.github.io，而如果仓库名为zata-zhangtao, 那么生成的静态页面地址就会是zata-zhangtao.github.io/zata-zhangtao/&lt;/li>
&lt;/ol>
&lt;p>First, you need to create a repository on github, and if the repository name is &amp;ldquo;[your-username].github.io&amp;rdquo;, then the static pages will not have a suffix, otherwise there will be a suffix, for example, my github username is zata-zhangtao, I created a repository named zata-zhangtao.github.io, then the static pages address will be zata-zhangtao.github.io, but if the repository name iszata-zhangtao, then the static pages address will be z&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-1.png"
width="2537"
height="1312"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-1_hu16234192655568166130.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-1_hu1894947867173020098.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/p>
&lt;ol start="2">
&lt;li>把刚刚的public文件夹push到github上&lt;/li>
&lt;/ol>
&lt;p>push the public folder to github&lt;/p>
&lt;p>具体的push命令和方式不在具体说明&lt;/p>
&lt;p>the specific push command and way are not detailed&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-2.png"
width="2377"
height="1288"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-2_hu6437247496178885478.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-2_hu7927162917699179823.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="184"
data-flex-basis="442px"
>&lt;/p>
&lt;ol start="3">
&lt;li>设置github静态页面
setting up github pages&lt;/li>
&lt;/ol>
&lt;p>进入仓库的设置页面，然后点击pages,然后再选你那个分支作为你的静态页面，选择完成之后，稍等几分钟，看到页面产生就可以使用了
into the repository settings page, click pages, then choose your branch as your static page, select complete, wait a few minutes, and see if the page is generated, and you can use it&lt;/p>
&lt;p>&lt;code>如果你前面配置文件中的baseurl没有配置正确，可能会出现点击域名之后发现页面有问题，解决：&lt;/code>
重新修改baseurl，并重新编译和push，并且注意编译的时候有没有报错
if the baseurl in the hogo.yaml is not configured correctly, you will find that the page is not displayed correctly after clicking the domain, solve it by modifying the baseurl, recompiling and pushing, and pay attention to whether there are any errors when compiling&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-3.png"
width="2552"
height="1219"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-3_hu6281486776499999538.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-3_hu15839095071176640038.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="209"
data-flex-basis="502px"
>&lt;/p>
&lt;ol start="4">
&lt;li>然后你就可以看见你的静态页面了
then you can see your static page&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-5.png"
width="2505"
height="1333"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-5_hu15806227923097101262.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-5_hu10533883703515526931.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="451px"
>&lt;/p>
&lt;h2 id="github-自动部署hugo的静态页面">github 自动部署hugo的静态页面
&lt;/h2>&lt;p>automatically deploy hugo&amp;rsquo;s static page by github action&lt;/p>
&lt;p>参考网址：&lt;/p>
&lt;pre>&lt;code>https://www.bilibili.com/video/BV1bovfeaEtQ?p=4
https://gohugo.io/hosting-and-deployment/hosting-on-github/#build-hugo-with-github-action
&lt;/code>&lt;/pre>
&lt;p>“GitHub 自动部署 Hugo 的静态页面”是指利用 GitHub Actions（GitHub 提供的工作流自动化工具）来实现以下过程：当你推送 Hugo 项目代码到 GitHub 仓库时，自动完成 Hugo 静态网站的构建并将其部署到某个目标位置（通常是 GitHub Pages），无需手动操作。&lt;/p>
&lt;ol>
&lt;li>在自己的根路径下面创建一个.github/workflows/hugo.yaml文件,并将如下代码复制粘贴进去
&lt;code>配置文件中有几点值得注意：&lt;/code>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;p>需要修改你的分支名，我这里是hugo,需要改成你自己的分支名&lt;/p>
&lt;/li>
&lt;li>
&lt;p>注意一下版本的问题，这里我默认版本是0.141.0，&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Sample workflow for building and deploying a Hugo site to GitHub Pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Deploy Hugo site to Pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Runs on pushes targeting the default branch&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">push&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">hugo &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># 注意要要修改你的分支名&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Allows you to run this workflow manually from the Actions tab&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">workflow_dispatch&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">permissions&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">contents&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">read&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pages&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">write&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">id-token&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">write&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">concurrency&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">group&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;pages&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cancel-in-progress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Default to bash&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">defaults&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">shell&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">bash&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">jobs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Build job&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">build&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">HUGO_VERSION&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0.141.0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Install Hugo CLI&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;amp;&amp;amp; sudo dpkg -i ${{ runner.temp }}/hugo.deb&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Install Dart Sass&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">sudo snap install dart-sass&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Checkout&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/checkout@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">submodules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">recursive&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fetch-depth&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Setup Pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/configure-pages@v5&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Install Node.js dependencies&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;[[ -f package-lock.json || -f npm-shrinkwrap.json ]] &amp;amp;&amp;amp; npm ci || true&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Build with Hugo&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">HUGO_CACHEDIR&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${{ runner.temp }}/hugo_cache&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">HUGO_ENVIRONMENT&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">production&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">TZ&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">America/Los_Angeles&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> hugo \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> --gc \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> --minify \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> --baseURL &amp;#34;${{ steps.pages.outputs.base_url }}/&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Upload artifact&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/upload-pages-artifact@v3&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">./public&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Deployment job&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">deploy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">environment&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">github-pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${{ steps.deployment.outputs.page_url }}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">needs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">build&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Deploy to GitHub Pages&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">deployment&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/deploy-pages@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>
&lt;p>创建一个github仓库，然后进入setting，将build and development 改成Github Action ，并且修改环境变量
ctreate a github repository, then enter setting, change build and development to Github Action, and modify the environment variable&lt;/p>
&lt;p>&lt;strong>修改Github Action&lt;/strong>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-6.png"
width="2520"
height="1250"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-6_hu1009664941356908568.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-6_hu765690174291251485.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="201"
data-flex-basis="483px"
>&lt;/p>
&lt;p>&lt;strong>修改环境变量&lt;/strong>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-7.png"
width="1176"
height="704"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-7_hu18045451282021316823.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-7_hu5947992990023786840.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="167"
data-flex-basis="400px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-8.png"
width="1274"
height="1190"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-8_hu16781337876240894301.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-8_hu12382550358200024092.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="107"
data-flex-basis="256px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>需要将自己的根目录上传到github的一个仓库中，push之前可以把public文件夹和resources文件夹忽略掉,因为这两个文件夹是hugo编译生成的,自动部署可以自己生成，就不需要了。同时你许要修改根路径下面的yaml文件，主要是其中的baseurl，修改为&lt;code>https://&amp;lt;username&amp;gt;.github.io/&amp;lt;repository&amp;gt;&lt;/code> 当然如果你的仓库名是&lt;code>&amp;lt;username&amp;gt;.github.io&lt;/code>就可以修改为&lt;code>https://&amp;lt;username&amp;gt;.github.io&lt;/code>
you need to upload your root directory to a github repository, the repository name is not important, you can ignore the public folder and resources folder before pushing,because these two folders are generated by hugo, you don&amp;rsquo;t need them. Also you need to modify the yaml file in the root directory, mainly the baseurl, modify it to &lt;code>https://&amp;lt;username&amp;gt;.github.io/&amp;lt;repository&amp;gt;&lt;/code>, of course if your repository name is &lt;code>&amp;lt;username&amp;gt;.github.io&lt;/code> you can modify it to &lt;code>https://&amp;lt;username&amp;gt;.github.io&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-9.png"
width="2537"
height="1118"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-9_hu2013084756410934727.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-9_hu1292145593084476861.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="226"
data-flex-basis="544px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-10.png"
width="2552"
height="905"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-10_hu2957884498825007842.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-10_hu4156372245550788799.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="281"
data-flex-basis="676px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>准备好之后就可以push了，注意别push错了，必须要是之前配置环境变量和workflows里面的分支,push之后可以到action里面查看进度，稍后就可访问静态页面了
You are ready to push, don&amp;rsquo;t push wrong, you must push to the branch you configured in the environment variable and workflows,push it, you can see the progress in the action, and you can access the static page later&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-11.png"
width="1573"
height="912"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-11_hu11516027236674178049.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-11_hu14411781741341770723.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="172"
data-flex-basis="413px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-12.png"
width="1987"
height="718"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-12_hu5487970392212061495.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-12_hu5422377005620018830.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="276"
data-flex-basis="664px"
>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="怎么使用自己的域名访问github-pages">怎么使用自己的域名访问github pages
&lt;/h2>&lt;ol>
&lt;li>配置DNS
登录你自己的域名服务商,我的域名服务商是阿里云，这里配置两条记录,无论你原本是不是访问需要加分支名或者什么，解析地址都是&lt;code>&amp;lt;username&amp;gt;.github.io&lt;/code>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-14.png"
width="850"
height="636"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-14_hu14414195123956723021.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-14_hu12161744166587141023.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-15.png"
width="850"
height="636"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-15_hu260045937749327974.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-15_hu6943772577854092524.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/li>
&lt;li>到github仓库当中，修改如下配置：setting-&amp;gt;Pages-&amp;gt;Custom domain-&amp;gt;输入你的域名-&amp;gt;保存
注意如果允许勾选enforce HTTPS，就一定勾选它，这会让你访问的时候浏览器显示安全
&lt;img src="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-16.png"
width="1786"
height="881"
srcset="https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-16_hu17235491872153744284.png 480w, https://www.zata.cc/p/hugo%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8/images/index/image-16_hu3039270918547776473.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="202"
data-flex-basis="486px"
>&lt;/li>
&lt;/ol>
&lt;h2 id="配置相关">配置相关
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>配置页面的样式
可以在项目的根目录下的config.yaml文件中进行配置。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>默认index.md文件头&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">title&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Chinese&lt;/span> &lt;span class="n">Test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">description&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">这是一个副标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">date&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2020&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">slug&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">test&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">chinese&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">image&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">helena&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">hertz&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">wWZzXlDpMog&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">unsplash&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">jpg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">categories&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">Test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">测试&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>内容解释&lt;/li>
&lt;/ol>
&lt;p>在 Hugo（一个流行的静态网站生成器）中，&lt;strong>&amp;ldquo;slug&amp;rdquo;&lt;/strong> 是一个用于控制页面 URL 的重要概念。它通常在文件的**前端事项（front matter）**中定义，用于自定义页面或文章的 URL 路径的最后一段。以下是关于 Hugo 中 &amp;ldquo;slug&amp;rdquo; 的详细解释：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>什么是 slug？&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;strong>定义&lt;/strong>：Slug 是一个简洁、URL 友好的字符串，通常由小写字母、数字和连字符（&lt;code>-&lt;/code>）组成，用于标识页面或内容的 URL。&lt;/li>
&lt;li>&lt;strong>作用&lt;/strong>：它替代了默认的文件名或标题生成的 URL 片段，让 URL 更简洁、可读，并且对搜索引擎优化（SEO）更友好。&lt;/li>
&lt;li>&lt;strong>默认行为&lt;/strong>：如果没有在前端事项中定义 slug，Hugo 会使用文件名（去掉扩展名）或标题（经过处理，如空格转为连字符）来生成 URL 的最后一段。&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>&lt;strong>在 Hugo 中使用 slug&lt;/strong>
你可以在 Markdown 文件的&lt;strong>前端事项&lt;/strong>中手动设置 slug。例如：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;我的第一篇文章&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;my-first-post&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;strong>效果&lt;/strong>：假设文件位于 &lt;code>content/posts/&lt;/code> 目录下，默认情况下，URL 可能是 &lt;code>/posts/我的第一篇文章/&lt;/code>（或根据配置转为拼音/其他形式）。设置了 &lt;code>slug: &amp;quot;my-first-post&amp;quot;&lt;/code> 后，URL 会变成 &lt;code>/posts/my-first-post/&lt;/code>。&lt;/li>
&lt;li>&lt;strong>适用范围&lt;/strong>：Slug 只影响 URL 的最后一段（文件名部分），不会改变目录结构（即 &lt;code>posts&lt;/code> 部分仍由文件路径决定）。&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>&lt;strong>slug vs 文件名&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>如果不设置 slug，Hugo 默认使用文件名。例如，文件名为 &lt;code>my-first-post.md&lt;/code>，URL 会是 &lt;code>/posts/my-first-post/&lt;/code>。&lt;/li>
&lt;li>设置 slug 后，它会覆盖文件名。例如：
&lt;ul>
&lt;li>文件名：&lt;code>article-001.md&lt;/code>&lt;/li>
&lt;li>前端事项：&lt;code>slug: &amp;quot;new-article&amp;quot;&lt;/code>&lt;/li>
&lt;li>结果 URL：&lt;code>/posts/new-article/&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>&lt;strong>slug 的规则和注意事项&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;strong>字符限制&lt;/strong>：建议使用小写字母、数字和连字符，避免空格、特殊字符或大写字母，以符合 URL 标准。&lt;/li>
&lt;li>&lt;strong>与 url 的区别&lt;/strong>：Hugo 中还有一个 &lt;code>url&lt;/code> 前端事项选项，它可以完全覆盖整个路径（包括目录部分），而 slug 只修改最后一段。例如：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;my-post&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;/custom/path/to/my-post/&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>slug&lt;/code> 只影响 &lt;code>/my-post&lt;/code> 部分。&lt;/li>
&lt;li>&lt;code>url&lt;/code> 会覆盖整个路径为 &lt;code>/custom/path/to/my-post/&lt;/code>。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>多语言支持&lt;/strong>：在多语言网站中，可以为每种语言设置不同的 slug。例如：
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># content/post/my-post.en.md&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;my-post&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># content/post/my-post.fr.md&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;mon-article&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul></description></item></channel></rss>