我正在使用 Markdown 文件的 YAML 标题将 excerpt
变量添加到我可以在其他地方使用的博客文章中。在其中一个摘录中,我通过 markdown 链接标记引用了一篇较早的博客文章,我使用液体模板数据变量 {{ site.url }}
代替网站的基本 URL。
所以我有类似的东西(稍微修剪了一下)
---
title: "Decluttering ordination plots in vegan part 2: orditorp()"
status: publish
layout: post
published: true
tags:
- tag1
- tag2
excerpt: In the [earlier post in this series]({{ site.url }}/2013/01/12/
decluttering-ordination-plots-in-vegan-part-1-ordilabel/ "Decluttering ordination
plots in vegan part 1: ordilabel()") I looked at the `ordilabel()` function
----
然而,jekyll 和 Maruku md 解析器不喜欢这样,这让我怀疑你不能在 YAML header 中使用液体标记。
是否可以在由 jekyll 处理的页面的 YAML header 中使用液体标记?
- 如果是,我在所示示例中做错了什么?
- 如果不允许,还有谁可以达到我的预期?我目前正在我的笔记本电脑上开发我的网站,不想对基本 URL 进行硬编码,因为当我准备好部署时它必须更改。
我从 Maruku 得到的错误是:
| Maruku tells you:
+---------------------------------------------------------------------------
| Must quote title
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-o
| --------------------------------------|-------------------------------------
| +--- Byte 40
和
| Maruku tells you:
+---------------------------------------------------------------------------
| Unclosed link
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-or
| --------------------------------------|-------------------------------------
| +--- Byte 41
和
| Maruku tells you:
+---------------------------------------------------------------------------
| No closing ): I will not create the link for ["earlier post in this series"]
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-or
| --------------------------------------|-------------------------------------
| +--- Byte 41
最佳答案
今天我遇到了类似的问题。作为一个解决方案,我创建了以下简单的 Jekyll 过滤器插件,它允许扩展嵌套的液体模板(例如 YAML 前面的液体变量):
module Jekyll
module LiquifyFilter
def liquify(input)
Liquid::Template.parse(input).render(@context)
end
end
end
Liquid::Template.register_filter(Jekyll::LiquifyFilter)
过滤器可以添加到 Jekyll 站点,方法是将它们放在站点根目录的“_plugins”子目录中。上面的代码可以简单地粘贴到 yoursite/_plugins/liquify_filter.rb 文件中。
之后是一个模板,比如...
---
layout: default
first_name: Harry
last_name: Potter
greetings: Greetings {{ page.first_name }} {{ page.last_name }}!
---
{{ page.greetings | liquify }}
... 应该呈现一些输出,例如“Greetings Harry Potter!”。扩展也适用于更深的嵌套结构——只要在内部液体输出 block 上也指定了液化过滤器。像 {{ site.url }} 这样的东西当然也可以。
更新 - 看起来现在可以作为 Ruby gem 使用:https://github.com/gemfarmer/jekyll-liquify .
关于ruby - 在 YAML 变量中包含 jekyll/liquid 模板数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14487110/