跳到主要内容
  1. Posts/

航班计划|No.2:快一年了 To-Do list 也该更新了

为了逃避别的事开始重新整理博客 todo……

·· 1730 字·4 分钟

先放下一个我抽打 GPT 给我写的,在字数统计里去除 Neodb 卡片字数(是的,Neodb 卡片里那么多字都会算进字数!)的代码。

单篇文章的字数统计

由于我使用的主题是把字数统计显示的数字作为一个 partial 导入的,所以我只要修改word-count.html即可,大家可以根据自己的主题修改。请 GPT 帮我写了代码注释,应该可以比较容易地看懂,便于自行修改!

// layouts/partials/meta/word-count.html

/* 获取当前页面的 HTML 内容 */
{{ $content := .Content }}

/* 定义一个正则表达式,匹配需要忽略的 HTML 区块(class 为 db-card-abstract 的 <div>,也就是 Neodb 卡片的简介部分) */
{{ $ignorePattern := `<div class="db-card-abstract">[\s\S]*?</div>` }}

/* 在内容中查找所有符合忽略规则的内容,并返回一个数组 */
{{ $ignoredContentMatches := findRE $ignorePattern $content }}

/* 将所有被忽略的 HTML 块拼接成一个字符串 */
{{ $ignoredContent := "" }}
{{ range $ignoredContentMatches }}
  {{ $ignoredContent = printf "%s%s" $ignoredContent . }}
{{ end }}

/* 去除 HTML 标签,只保留纯文本内容 */
{{ $plainIgnoredContent := plainify $ignoredContent }}

/* 将纯文本按字符(而不是词)分割,然后计算字符数作为“忽略的字数” */
{{ $ignoredWords := len (split $plainIgnoredContent "") }}

/* 从原始字数中减去忽略的字符数,得出调整后的字数 */
{{ $adjustedWordCount := sub .WordCount $ignoredWords }}

/* 使用 i18n 翻译字符串 'article.word_count',传入调整后的字数,并支持 Markdown 和 Emoji 渲染 */
<span>
  {{- i18n "article.word_count" $adjustedWordCount | markdownify | emojify -}}
</span>
页脚的总字数统计

尝试用了 Scratch 来输出我每篇文章的修正后字数统计,并且在页脚的代码里把它加起来,但发现这个 Scratch 输出的值,只有在文章界面(也就是有字数统计功能的页面)才会不为空,并且会把所有文章的字数都当成那个值来计算……于是最后的解决办法是非常不优雅地把我在字数统计功能里写过的修正代码复制粘贴到页脚的字数统计里再来一遍()。

// layouts/partials/footer.html

/* 预先统计总字数 */
{{ $totalWords := 0 }}

/* 遍历所有 posts 分区下的页面,也就是博客文章 */
{{ range (where .Site.RegularPages "Section" "posts") }}

   /* 用上述方法重新统计每篇文章的字数 */
   {{ $content := .Content }}
   {{ $ignorePattern := `<div class="db-card-abstract">[\s\S]*?</div>` }}
   {{ $ignoredContentMatches := findRE $ignorePattern $content }}

   {{ $ignoredContent := "" }}
   {{ range $ignoredContentMatches }}
      {{ $ignoredContent = printf "%s%s" $ignoredContent . }}
   {{ end }}

   {{ $plainIgnoredContent := plainify $ignoredContent }}
   {{ $ignoredWords := len (split $plainIgnoredContent "") }}
   {{ $adjustedWordCount := sub .WordCount $ignoredWords }}

   /* 累加进总字数 */
   {{ $totalWords = add $totalWords $adjustedWordCount }}
{{ end }}

/* 显示自定义页脚文案 */
<p class="text-sm text-neutral-500 dark:text-neutral-400">
   &copy; 2023 - {{ now.Format "2006" }} | {{ with site.Copyright }}{{ . | emojify | markdownify }}{{ end }}<br>
   万象航空已平稳运营 <span id="days">0</span>  ·
   开辟航线 {{ len (where .Site.RegularPages "Section" "posts") }}  ·
   累计航程 {{ printf "%.1fk" (div (float $totalWords) 1000.0) }} 海里
</p>

页脚的总字数统计最初来源于塔塔的作业,另外还有一部分<script>代码需要添加,可参考原作业,我这边就不放了。

要统计总字数后,我才开始想要不要把笔记内容转移到别的地方去,否则总字数岂不是显得有些水分……?但当初搭博客的时候,就打算把各种乱七八糟的笔记存过来了,否则我也写不出什么多的博文了呀!

以下内容虽然不是所有点都要改(第一篇 todo 里有很多就被我废弃了),但总之先宁滥勿缺地列出来。主要起到一个存作业和有用链接的作用。

页面布局 #

样式美化 #

功能 #