Jekyll

2015-12-08 7 views
10
में एक संग्रह से कोई विशिष्ट आइटम हो रही

मैं Jekyll में मेरी कंपनी के वर्तमान साइट के पुनर्निर्माण कर रहा हूँ और (एक संग्रह में फ़ाइलें) वस्तुओं है कि गुण (में कुंजी/मान जोड़े का उपयोग कर एक सामग्री मॉडल के आसपास संरचना स्थापित करने के लिए प्रयास कर रहा वाईएएमएल फ्रंट-पदार्थ)। मेरी टीम को प्रभावी सामग्री मॉडलिंग का प्रदर्शन करने के लिए डिज़ाइन की गई सरल वैचारिक सामग्री। साइट पुन: उपयोग किया जाता है कि परJekyll

कुछ भी वस्तु के प्रकार के विशिष्ट संग्रह है कि इसके फ़ाइल द्वारा परिभाषित के साथ, एक वस्तु बन जाता है। इसलिए, मेरे पास कंपनी द्वारा प्रदान की जाने वाली सेवाओं के लिए "सेवाएं" संग्रह है, एक "ग्राहक" संग्रह, और प्रत्येक व्यक्ति के लिए एक फ़ाइल के साथ "लोगों" संग्रह।

समस्या मैं एक संग्रह में एक विशिष्ट आइटम संदर्भित कर रहा है हो रही है। उदाहरण के लिए, मैं चाहता हूं कि मेरी पोस्ट लेखकों के पास हों। मुझे _data का उपयोग करके इसके लिए कई समाधान मिल गए हैं, लेकिन मैं चाहता हूं कि मेरे लेखकों के पास पृष्ठ हों और संग्रह स्वचालित रूप से प्रत्येक व्यक्ति के लिए एक पृष्ठ आउटपुट करें। मैं पृष्ठों को उत्पन्न करने के लिए _डेटा प्राप्त करने में सक्षम हूं, लेकिन मेरे आदेश पर कोई नियंत्रण नहीं है जिसमें आइटम सूचीबद्ध हैं, जबकि संग्रह के साथ आदेश को नियंत्रित करने के लिए मेरे कई तरीके हैं।

मेरे वर्तमान समाधान hacky महसूस करता है। मैं प्रत्येक व्यक्ति को एक आईडी देता हूं जो "प्रथम नाम-अंतिम नाम" के बराबर है, इसलिए वाईएएमएल फ्रंट-मामले में यह id: steve-hickey कहता है। फिर मैं साइट पर प्रत्येक व्यक्ति के माध्यम से लूप को निम्न कोड का उपयोग करता हूं और पोस्ट में निर्दिष्ट लेखक-आईडी से मेल खाता हूं।

पोस्ट लेआउट टेम्पलेट:

--- 
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 
--- 

लोगों संग्रह से एक व्यक्ति फ़ाइल:

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

यह की तरह लगता है नहीं होनी चाहिए एक विशिष्ट फ़ाइल या ऑब्जेक्ट को पहचानने का एक तरीका जो कि एक अद्वितीय विशेषता के आधार पर है, जैसे कि यह पहले से ही है एस नाम या यूआरएल। इस तरह से मैं उन सभी को एक अद्वितीय संपत्ति के लिए मूल्यांकन करने की बजाय एक विशिष्ट वस्तु को इंगित कर सकता हूं जो मुझे लिखना है। लेकिन खोज के 3 दिनों के बाद मुझे इसका अच्छा जवाब नहीं मिल रहा है।

उत्तर

12

यदि लोग आपकी संग्रह {% assign author = site.people | where:"id", page.author-id %} में अद्वितीय एक तत्व के साथ एक सरणी वापस आ जाएगी है। आदेश सीधे इस तत्व का उपयोग करने के लिए कार्य करें:

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

यह हड़पने पहली (और केवल) आप सरणी में तत्व। अब आप {{ author.anykey }} सीधे करें।

+0

धन्यवाद! मैं कहीं इस समाधान को खोजने के लिए समाप्त हो गया। आपकी तुलना में थोड़ा अलग वाक्यविन्यास, लेकिन एक ही सटीक विचार। यद्यपि आपका कम वर्बोज़ है, इसलिए मुझे लगता है कि मैं उस पर स्वैप करूंगा। '{% असाइन लेखक = साइट। लोग | कहां: 'आईडी', पृष्ठ। लेखक-आईडी%} {% असाइन लेखक = लेखक [0]%} ' –

संबंधित मुद्दे