使用Liquid标签链接节点

时间:2011-12-14 15:50:36

标签: jekyll liquid

我有一个节点网络,其中一些节点彼此相关。我正在使用Jekyll为网站提供支持,并且希望使用液体标签来映射这些关系。

所以,我一直试图这样做的方式如下。

A ,属于 1 类别,与 B 相关 B ,属于 2 类别,与 A C

相关

当我访问A的页面时,我希望看到B列为相关的。

我已经定义了YAML前端问题:

title: A
category: 1
tags:
- B.html

title: B
category: 2
tags:
- A.html
- C.html

我的液体模板如下:

<h2>{{ page.title }} <span class="label important">{{ page.category }}</span></h2>
<p>Last edited: {{ post.date | date_to_string }}</p>
<p><em>{{ content }}</em></p>

<h4>Related</h4>
<ul>
 {% for post in site.tag.{{ post.url }} %}
 <li><a href="{{ post.url }}">{{ post.title }}</a></li>
 {% endfor %}
</ul>

对我来说,看起来它应该有效。实际上,它没有。

欢迎提出建议!

,相关的Github页面在这里: https://raw.github.com/salmonhabitat/salmonhabitat.github.com/master/_posts/2011-12-12-bycatch.md

https://raw.github.com/salmonhabitat/salmonhabitat.github.com/master/_posts/2011-12-12-accidental.md

https://github.com/salmonhabitat/salmonhabitat.github.com/blob/master/_layouts/post.html

我打算发生的事情是“意外受伤”出现在“海洋兼捕”的相关节点下......

1 个答案:

答案 0 :(得分:1)

第一个问题是帖子对jekyll中的其他帖子基本上是“盲目的”。从jekyll的另一个帖子里面的一个帖子的网址(或标题)是不可能的,只有前者的id。您的site.tag.{{ post.url }}虽然具有创意,但却无效:)。

首先,你的前面的事情(不幸的是)需要更复杂才能做到这一点:

title: A
category: 1
related_posts:
- title: B
  href: /2010/01/01/B.html
- title: C
  href: /2011/11/11/C.html

请注意,我已将名称从“tags”更改为“related_posts”。我觉得这种方式更清楚。

现在您可以尝试以下代码:

<h2>{{ post.title }} <span class="label important">{{ post.category }}</span></h2>
<p>Last edited: {{ post.date | date_to_string }}</p>
<p><em>{{ content }}</em></p>

{% if post.related_posts %}
  <h4>Related</h4>
  <ul>
  {% for related_post in post.related_posts %}
    <li><a href="{{ related_post.href }}">{{ related_post.title }}</a></li>
  {% endfor %}
  </ul>
{% endif %}

虽然这比你的版本更冗长,但它有一个优点 - 你可以在相关帖子中指定你自己的标题,而不必被迫使用B或C.

如果您对此有疑问,请告诉我,祝您好运!