【问题标题】:Liquid - parse YAML front matter in stringLiquid - 解析字符串中的 YAML 前端内容
【发布时间】:2017-04-05 09:19:25
【问题描述】:

我正在运行一个 Jekyll 站点,它使用 JSON 作为我的 _data 文件夹中的数据。我像平常一样循环文件,像{% for item in site.data.resources.items %} 这样的事情就好了。但是,我想解析字符串中的 YAML 前端内容。

例子:

\n---\nblog: http://google.com\nbackground-img: http://www.ew.com/sites/default/files/i/2013/07/23/Dumb-and-Dumber.jpg\nbuttonText: Download\n---\n

我怎样才能让 Liquid 在我的 Jekyll 站点中解析这个,以便我可以像这样使用它:

<a href="{{blog}}"><img src="{{background-img}}>Image</a>

还是类似的?

编辑:澄清一下,该字符串是我通过 ajax 调用检索的文本文件中的前置格式。所以那个字符串是我得到的响应,格式不会改变。我希望 Liquid 能够以某种方式解析这个字符串并寻找一个前端类型的格式。如果没有,我将恢复我的 JavaScript 方法。

【问题讨论】:

  • 你是在问如何使用 yaml front matter 来选择你的数据项?
  • 我不是开发人员,但background-imgbuttonText 是该结构中blog 项的子键值对吗?如果是这样,可能类似于前面的条目item: blog 和内容<a href="{{ site.data.resources.items.[page.item] }}"><img src="{{site.data.resources.items.[page.item].background-img}}>Image</a>。是这个意思吗?
  • 你的frontmatter到底是什么样的?那个长字符串实际上是你的frontmatter中的一个值? “包含”运算符会起作用吗?比如,{% if page.url contains "nbackground-img" %} background-img {% endif %}。目前尚不清楚您的设置到底是什么。
  • @TomJohnson 澄清一下,该字符串是我通过 ajax 调用检索的文本文件中的前文格式。所以那个字符串是我得到的响应,格式不会改变。我希望 Liquid 能够以某种方式解析这个字符串并寻找一个前端类型的格式。如果没有,我将恢复我的 JavaScript 方法。
  • @TBB 不,它们不是子 k-v 对。我没有格式化它,因为它只是一个字符串,这就是它在我的 JSON 文件中的方式。

标签: yaml jekyll liquid yaml-front-matter


【解决方案1】:

这是不可能的。

在生成站点时正在解析液体/YML,并且您的 JSON 字符串在生成站点后很长时间才可用:它仅在对字符串的 JSON 请求成功之后才存在。

但是,正如您已经提到的,您可以使用 javascript。只需将\n 上的字符串拆分为您的键值对,并在: 上拆分您的键和值。然后使用 jQuery(或纯 javascript)将结果写入 DOM。

祝你好运!

【讨论】:

  • 我使用 Gulp 任务首先提取该数据,然后将其存储在我的 _data 文件夹中的 json 文件中,然后运行我的构建命令。所以从技术上讲,它就在那里。我想我希望有一种方法可以在 Liquid 内部完成这项工作,但我开始看到这是不可能的。回到绘图板上,有很多方法可以解决这个问题。
猜你喜欢
  • 2011-02-18
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2014-09-09
  • 2011-10-14
  • 2015-01-13
相关资源
最近更新 更多