2012-06-05 14 views
5

में साइट साइट.संबंधित_पोस्ट फ़िल्टर करें मैं जैकिल और रूबी (अभी तक, बहुत उत्साहित) के लिए बहुत नया हूं।जेकिल

प्लगइन का उपयोग किए बिना, मैं site.related_posts फ़िल्टर करने का कोई तरीका ढूंढने का प्रयास कर रहा हूं।

उदाहरण के लिए, मैं शीर्षक Foo और श्रेणियों A, B शीर्षक के साथ पोस्ट पढ़ रहा हूं।

साइट कुल 3 पदों में शामिल हैं:

  1. Foo (वर्ग: ए, बी)
  2. Bar (वर्ग: ए, सी, डी)
  3. Zoo (वर्ग: बी, एफ)

डिफ़ॉल्ट रूप से, Jekyll में हम ऐसा करते हैं:

{site.related_posts सीमा में इस पद के लिए%: 5%}
{% endfor%}

हालांकि, इसके बाद के संस्करण कोड सभी (3) पदों देता है।

एक पोस्ट में कई श्रेणियां हैं, इसलिए श्रेणियां एक सरणी होनी चाहिए।

मैं कोड को कैसे संशोधित कर सकता हूं और केवल उन लोगों को वापस कर सकता हूं जिनकी श्रेणियां वर्तमान पोस्ट की श्रेणियों के साथ छेड़छाड़ करती हैं?

(इस उदाहरण में, मैं कोड केवल Foo और Zoo वापसी करना चाहते हैं।)

+0

ध्यान दें कि डिफ़ॉल्ट रूप से, "संबंधित पोस्ट" वास्तव में केवल हालिया पोस्ट हैं। _config.yml में 'lsi: true' सेट करें या उच्च गुणवत्ता वाले परिणाम प्राप्त करने के लिए '--lsi' के साथ जेकील चलाएं। –

उत्तर

5

मैं अब इस अधिकार का परीक्षण करने की क्षमता नहीं है, लेकिन कुछ इस तरह Liquid's सीमित वाक्य रचना दी काम करेंगे:

{% for post in site.related_posts limit:5 %} 
    {% assign match = false %} 
    {% for category in post.categories %} 
    {% if page.categories contains category %} 
     {% assign match = true %} 
    {% endif %} 
    {% endfor %} 
    {% if match %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
    {% endif %}      
{% endfor %} 
+0

बेहतर परिणामों के लिए, मैं 'site.prelated_posts सीमा: 5' के बजाय' site.posts' का उपयोग कर एक ही कोड का प्रयास कर रहा हूं। आपका बहुत बहुत धन्यवाद! –

+0

तरल के दस्तावेज के लिए महान लिंक, जिसने मेरी आंखें खोली हैं। – kiewic

1

यकीन है कि प्रत्येक पोस्ट YAML सामने इस मामले में एक वर्ग हो, और फिर जहां पोस्ट संबंधित CATEGORY_NAME दिखाना चाहते हैं से जोड़ें:

{% for post in site.categories.CATEGORY_NAME %} 
    <li> 
     <a href="{{ post.url }}"> 
      <img src="{{ post.thumbnail }}"> 
      <p>{{ post.excerpt }}</p> 
     </a> 
    </li> 
{% endfor %} 
संबंधित मुद्दे