Hugo | 给cactus主题加上隐藏文章功能

527字

起因是一个名叫“川流”的博客聚合页面不经允许就收录了朋友们和我的博客,朋友发邮件去沟通撤下,结果却反遭对方破防,在网站上单开整个页面,对她的邮件内容进行了高达17条的辱骂。整个事件之离谱下作自不待言,挂出后比较意外的是,川流的站长对自己的个人信息相当不在意,友邻见义勇为检索之迅速,很难让人不生出进一步隔离个人信息的警惕心。博客建立三年,写了一百来篇博客,三十几万字,把过往文章隐藏一下的想法其实也存在很久了,正好趁此机会实现。

感谢 ChatGPT,我负责说需求,它负责写。

我的需求是:

  1. 在文章 Yaml 区加入 hidden: true 隐藏文章
  2. 隐藏文章后不影响全站字数/篇数统计。
  3. 隐藏后还能通过超链接访问。

操作:修改 layouts\_default\list.html 为以下内容

{{ define "main" }}
<div id="archive">
  <ul class="post-list">

  {{ $allPages := .Pages }} <!-- 获取所有页面 -->
  {{ $visiblePages := where $allPages "Params.hidden" "ne" true }} <!-- 过滤掉隐藏文章 -->

  <!-- 设置分页 -->
  {{ $paginator := .Paginate $visiblePages }}
  
  {{ range $paginator.Pages }}
    {{ $pageYear := (.Date.Format "2006") }}
    {{ if (ne $pageYear ($.Scratch.Get "year")) }}
    {{ $.Scratch.Set "year" $pageYear }}
    <h2>{{ $pageYear }}</h2>
    {{ end }}
    <li class="post-item">
      <div class="meta">
        <time datetime="{{ .Date.Format "2006-01-02" }}" itemprop="datePublished">{{ .Date.Format (.Site.Params.dateFormat | default "2006-01-02") }}</time>
      </div>
      <span>    
        <a class="" href="{{ .Permalink }}">{{ if .Title }} {{ .Title }} {{ else }} Untitled {{ end }}</a>
      </span>
    </li>
  {{ end }}

  </ul>

  {{ if gt $paginator.TotalPages 1 }}
    {{ partial "pagination.html" . }}
  {{ end }}

</div>
{{ end }}

小球飞鱼博客建立于2021年8月26日,今天正好满三年,隐藏了2021、2022、2023三年除年终总结之外的半月记内容。同时隐藏了 posts 下随着时间流逝已相对失效的内容。

祝我三周年快乐。