偶尔顾影自怜,偶尔肆意开怀。

hugo的rss问题

2024.05.04

由于自己换成 hugo 博客之后对于 rss 这个问题似乎没什么在意,但是因为使用的主题是很早以前的,所以最开始 rss 提示以下错误,但是似乎还是能用,询问 chagpt 后解决这一问题。

WARN  deprecated: .Site.RSSLink was deprecated in Hugo v0.114.0 and will be removed in a future release. Use the Output Format's Permalink method instead, e.g. .OutputFormats.Get "RSS".Permalink

AI 回答:

看起来你在 Hugo 中遇到了一个弃用警告。这条消息表明,自 Hugo v0.114.0 版本以来,你正在使用的**.Site.RSSLink**功能已被弃用,并且可能会在将来的版本中被移除。

为了解决这个警告并使你的代码具有未来的兼容性,你应该更新你的代码,使用推荐的方法,这涉及到使用输出格式的 Permalink 方法。以下是建议的方法:

不再使用**.Site.RSSLink**,而是通过访问名为“RSS”的输出格式的 Permalink 方法来获取 RSS 链接。你可以使用以下代码实现这一点:

.Site.OutputFormats.Get("RSS").Permalink

将你模板或配置文件中的所有**.Site.RSSLink**替换为上述代码片段。

这样的调整确保你的代码与 Hugo 的将来版本保持兼容。

但是继续报错:

ERROR Rebuild failed: process: "/Users/yy/Library/CloudStorage/OneDrive-个人/blog/themes/zozo/layouts/partials/header.html:18:1": parse failed unexpected "(" in operand

在你提供的模板文件中,问题出现在使用了.Site.OutputFormats.Get("RSS").Permalink这一行,它包含了双引号嵌套在双引号内的情况,这会导致 Go 模板引擎无法正确解析。为了解决这个问题,你可以通过将内部的双引号改为单引号,或者使用反引号将整个表达式包裹起来,以避免嵌套引号的问题。

以下是两种可能的解决方法:

  1. 使用单引号替换内部的双引号:
<a href="{{ .Site.OutputFormats.Get('RSS').Permalink }}" type="application/rss+xml" title="rss" target="_blank"><i class="ri-rss-fill"></i></a>
  1. 使用反引号包裹整个表达式:
<a href="{{`{{ .Site.OutputFormats.Get("RSS").Permalink }}`}}" type="application/rss+xml" title="rss" target="_blank"><i class="ri-rss-fill"></i></a>

无论选择哪种方法,都会确保在 Go 模板中正确地处理这个表达式,避免了嵌套引号引起的问题。

最后选择第二种方案没报错。ps:最后还是出现错误了,修改目标为:

<a hrel="alternate" type="application/rss+xml" href="https://wangyunzi.com/index.xml" title="rss"><i class="ri-rss-fill"></i></a>