如何从 Hugo 的 RSS 输出中排除短代码

我和很多人一样,在博文中使用了豆瓣/NeoDB 卡片短代码,效果如下:

「週刊少年ジャンプ」で連載されるや読者から圧倒的な支持を受け、同誌が前人未到の最大発行部数653万部を達成した1995年新年3・4合併号では全ページフルカラーで巻頭を飾った、ジャンプを代表する国民的漫画『SLAM DUNK』(スラムダンク)。 その『SLAM DUNK』のイラスト130点超をまとめたイラスト集『PLUS/ SLAM DUNK ILLUSTRATIONS 2 』 (プラス/ スラムダンク イラストレーションズ 2)が2020年4月3日に発売決定。『SLAM DUNK』のイラスト集としては、1997年6月に刊行され、今なお版を重ねている『INOUE TAKEHIKO ILLUSTRATIONS』に続く、第2弾となります。 本イラスト集では、2018年に装いを新たに刊行した『SLAM DUNK』新装再編版(全20巻)のカバーイラストを中心に、『SLAM DUNK』完全版(全24巻/2001~2002年)や『SLAM DUNK』1億冊感謝記念新聞広告(2004年)など様々な出版物・企画・商品のために描かれたイラスト130点超を収録予定。もちろん全イラスト初収録。この中には、スケッチや習作段階の未公開イラストも複数含まれ、さらにカバーイラストを含めた11点を井上雄彦氏が新たに描き下ろします。 約30cm四方の大型特殊判型本のページをめくるたびに現れる、鮮烈かつ美麗なイラストからは個性豊かなキャラクターたちの“息吹"が感じられます。 また、初版限定特典として、カバーイラストをタテ12cm×ヨコ24cmサイズに印刷した特製ポストカードが封入されます。

在 RSS 阅读器中这个卡片会失去样式变成混乱的内容堆叠,因此想在 RSS 输出中排除掉短代码。不过这也是因为我是全文输出,RSS 只输出摘要的不会有此烦恼。

本来我想改 Hugo 的 rss.xml 文件,在 <description> 部分添加筛选条件去除包含短代码的内容,但不知为何总是不成功,让 ChatGPT 改了好多遍还是失败。

没想到最后直接 Google 关键词在 Hugo 的讨论区找到答案了, Exclude shortcode output from RSS?

简单来说就是在 layouts/shortcodes 下直接创建一个同名文件,比如我的豆瓣卡片是 douban.html,那就新建一个 douban.xml,内容为空就是在 RSS 中彻底移除短代码,也可以在这个文件里加上特定内容取代原本短代码的输出(我图省事只创建了空白文件)。

原本我想在 rss.xml 中的 <description> 部分加上一个 if 语句通过判断是否有内容被移除,以此来确定是否在 RSS 文章内容顶端添加提醒,比如“某些样式在 RSS 中无法显示,请点击原文查看”。但是现在的 shortcode 替换并不发生在 rss.xml 中,就无法如此操作。考虑了下我把 <description> 改成了下面这样,不进行判断,只要在 RSS 阅读器阅读都会看到提醒。(但我之前在 Inoreader 试了下怎么好像也看不到这行字?不知哪里出了问题,下次再解决吧……)

<description>
    <p>The specific style in some posts may have been removed in RSS feed. <a href="{{ .Permalink }}">Click here</a> to view the original post.</p>
    {{ .Content | html }}
</description>

Comments