0

ノードのネットワークがあり、そのうちのいくつかは互いに関連しています。私は Jekyll を使用して Web サイトを強化しており、リキッド タグを使用してそれらの関係をマッピングしたいと考えていました。

それで、私がこれをやろうとしてきた方法は次のとおりです。

1のカテゴリにあるAはB に関連し、 2のカテゴリにあるBは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

私が意図していたのは、「海の混獲」の関連ノードの下に「偶発的な傷害」が表示されるようにすることでした...

4

1 に答える 1

1

最初の問題は、投稿が jekyll の他の投稿に対して基本的に「ブラインド」であることです。前者のIDだけでは、jekyllの別の投稿内からある投稿のURL(またはタイトル)を取得することは不可能です。あなたの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 を強制的に使用することなく、関連する投稿で独自のタイトルを指定できます。

これに問題がある場合はお知らせください。幸運を祈ります。

于 2011-12-15T18:53:49.720 に答える