【问题标题】:Jekyll - Parsing and finding some info and pairJekyll - 解析和查找一些信息和配对
【发布时间】:2015-10-03 02:48:05
【问题描述】:
我正在为播客制作 Jekyll 主题。我已经放置了 RSS 渲染,所以我想使用 <audio> 标签在页面中添加 HTML5 播放器。
在播客帖子的前端,我有以下结构:
- audio
- type: typeA
url: urlA
- type: typeB
url: urlB
我想找到一个特定的类型并将关联的 URL 用作播放器的文件。有没有一种简单的方法来捕捉正确的条目(如果我可以在输入正确之前进行测试)还是应该解析所有 audio frontmatter 条目直到找到我想要的条目?
PS:该页面托管在 Github Pages - http://github.com/hufflepuffbr/hufflepuffbr.github.io
【问题讨论】:
标签:
html
jekyll
github-pages
yaml-front-matter
【解决方案1】:
你的方式
使用您定义的YAML 前面的内容,只能循环遍历列表。这是一个未排序的列表,因此根据定义搜索是 N 阶(即,我们必须遍历整个列表)。
{% assign desired_type = "typeA" %}
{% capture audio_source %}{% for a in page.audio %}{% if a.type == desired_type %}{{ a.url }}{% endif %}{% endfor %}{% endcapture %}
<audio src="{{ audio_source }}">
更好的方法
但是,如果您将 YAML 前面的内容切换为地图/字典/哈希格式,如下所示:
audio:
typeA: urlA
typeB: urlB
您可以直接在变量中查找类型:
{% assign desired_type = "typeB" %}
audio src="{{ page.audio[desired_type] }}">
像往常一样,小心包含: 的网址,因为这会破坏YAML 解析器。这些可以在" 中转义。