【问题标题】:Include HTML in Jekyll front matter (post title)在 Jekyll 前文中包含 HTML(帖子标题)
【发布时间】:2020-10-01 11:07:17
【问题描述】:

如何在 Jekyll 帖子(YAML 编码)的前端内容中放置 HTML 标签,并阻止该 HTML 在最终输出中被转义?我的内容,包括帖子标题,除了主页语言之外还使用多种语言,这需要使用 span lang="XX" 标记进行适当的标记,以便屏幕阅读器和某些自动提取。但是,尝试编写以下内容:

---
layout: post
title: A post that says <span lang="fr">Bonjour</span> and <span lang="es">Hola</span>
---

导致这些标签被转义的 HTML 输出:

<h1 class="post-title p-name" itemprop="name headline">A post that says &lt;span lang=&quot;fr&quot;&gt;Bonjour&lt;/span&gt; and &lt;span lang=&quot;es&quot;&gt;Hola&lt;/span&gt;</h1>

我正在使用 Jekyll minima 主题。

【问题讨论】:

  • 你是什么版本的 Jekyll?我无法重现我的一面,我确实从前面的问题中得到了正确的 html。也许还可以向我们展示您如何显示您的标题(所以液体部分)?
  • 最新版本的 Jekyll 可从 gem 安装,4.1.0。我昨天刚刚根据官方 Jekyll 快速入门安装,然后根据相同的文档从我的旧 Wordpress 博客中导入所有帖子。 Wordpress 博客上的帖子标题大量使用 span 标签,因为 WP 允许这样做。然而,杰基尔按照描述逃脱了他们。我没有对任何主题等进行任何更改。这是使用 minima 主题的完全默认安装。
  • 我发现安装某些其他主题并切换到它们后不会遇到这个问题。也许我应该在 Minima 主题或 Jekyll 为前 Wordpress 用户提供的官方快速入门中将其报告为错误。
  • 我猜,如果这样,每个设计都有一个过滤器集。
  • 尝试打开文件_layout/post.html。并寻找标题显示,应该有你的罪魁祸首

标签: jekyll


【解决方案1】:

所以在您正在使用的 Jekyll 的 minima theme 上,有一个 escape 过滤器已在 page.title 上为每个设计设置。

来自文档:

通过用转义序列替换字符来转义字符串(例如,该字符串可以在 URL 中使用)。它不会更改没有任何要转义的字符串。

来源:https://shopify.github.io/liquid/filters/escape/

如果您希望您的 span 显示,您应该编辑文件 _layouts/post.html 并删除此 espace 过滤器。

这个文件的第 7 行应该是这样的

    <h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1>

来源:https://github.com/jekyll/minima/blob/49f6dce0727a2441f0b0c265b41b5efc7b042eb6/_layouts/post.html#L7

改成这样写

    <h1 class="post-title p-name" itemprop="name headline">{{ page.title }}</h1>

你会得到你所期望的行为。

【讨论】:

  • 谢谢,这解决了我的问题。还应该提到,主题的布局文件 home.html 中存在类似的转义过滤器,必须将其删除才能在索引页面上正确显示帖子标题。
  • 最小主题的用法就是这里的指针。很高兴我能帮上忙。你可以考虑accepting this answer
猜你喜欢
  • 1970-01-01
  • 2015-07-24
  • 2016-05-13
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多