2015-12-08 12 views
10

私は会社の現在のサイトをJekyllで再構築しており、属性(キーと値のペア)を持つオブジェクト(コレクション内のファイル)を使用してコンテンツモデルの構造を設定しようとしています。 YAMLフロントマター)。私のチームに効果的なコンテンツモデリングを実証するために設計された、単純な概念的なもの。Jekyllのコレクションから特定のアイテムを取得

再利用されるサイト上のすべてのものが、そのファイルを含む特定のコレクションによって定義されたオブジェクトの種類のオブジェクトになります。だから私は会社が提供するサービスのための「サービス」コレクション、「クライアント」コレクション、そして各人のためのファイルを備えた「人々」コレクションを持っています。

私が抱えている問題は、コレクション内の特定のアイテムを参照していることです。たとえば、私の投稿に作者が必要です。私は_dataを使ってこのための解決策を見つけましたが、私は著者にページを持たせ、コレクションは自動的に各人のページを出力します。私はページを生成するために_dataを取得することができましたが、アイテムがリストされる順序を制御することはできませんが、コレクションを使用すると、順序を制御する方法がたくさんあります。

私の現在の解決策はハッキリです。私は各人に "ファーストネーム - ラストネーム"と等しいIDを与えていますので、YAMLのフロントマターではid: steve-hickeyと言います。次に、次のコードを使用して、サイトのすべての人をループし、投稿に指定されたauthor-idに一致するものを返します。なければならないように思え

--- 
id: steve-hickey 
first-name: Steve 
last-name: Hickey 
job: User Experience Strategist & AUX Director 
layout: person 
nav-area: about 
portrait-url: 
--- 

ポストレイアウトテンプレート:

--- 
layout: default 
--- 

<header class="intro post-header"> 
    <h1>{{ page.title }}</h1> 
    {% assign people = site.people | where:"id", page.author-id %} 
    {% for person in people %} 
    <p>Written by <a href="/about/{{ page.author-id }}/">{{ person.first-name }} {{ person.last-name }}</a> on <p>{{ page.date | date: '%B %d, %Y' }}</p></p> 
    {% endfor %} 
</header> 
<div class="post-body"> 

{{ content }} 

</div> 

ポストのフロントマター:

--- 
title: User Offboarding 
layout: post 
nav-area: blog 
author-id: steve-hickey 
--- 

人のコレクションから人物ファイルに既に所有している固有の属性に基づいて特定のファイルまたはオブジェクトを識別する方法名前またはURL。そうすることで、私が書く必要のある固有のプロパティをすべて評価するのではなく、特定のオブジェクトを指すことができます。しかし、3日間の検索の後、私はこれに対して良い答えを見つけることができません。

答えて

12

あなたのコレクション内の人がユニークである場合、{% assign author = site.people | where:"id", page.author-id %}は1つの要素を持つ配列を返します。直接この要素にアクセスするために は行います

{% assign author = site.people | where:"id", page.author-id | first %} 

このグラブあなた、配列の最初の(そして唯一の)要素。今すぐ{{ author.anykey }}してください。

+0

ありがとうございました!私はどこかでこの解決策を見つけることになった。あなたとは少し異なった構文ですが、まったく同じ考えです。あなたのものはそれほど冗長ではないので、私はそれに交換すると思います。 '{%assign author = site.people | 'id'、page.author-id%} {%assign author = author [0]%} ' –

関連する問題