2012-04-02 8 views
7

मैं एक कस्टम पृष्ठ है: मैं एक news.markdown फ़ाइल निम्नलिखित की तरह है:Jekyll - मानचित्र ही Jekyll करने के लिए कई फ़ाइल URL Jekyll के लिए

{% assign posts_per_page = 5 %} 
{% for post in site.categories.ro offset:pagination_skip limit:posts_per_page %} 
    ... 
    {{ post.content }} 
    ... 
{% endfor %} 
{% include nav.html %} 

कहाँ nav.html_includes निर्देशिका में है और यह इस तरह दिखता है:

{% if pagination_skip %} 
    {% capture pagination_skip %} 
    {{pagination_skip | plus: posts_per_page}} 
    {% endcapture %} 
{% else %} 
    {% assign pagination_skip = posts_per_page %} 
{% endif %} 

<div class="next"> 
    <a rel="prev" href="{{site.basepath}}ro/news/{{ pagination_skip }}">Next</a> 
</div> 

क्या मैं चाहता हूँ यूआरएल .../ro/news/5 के लिए है की है news.markdown ऐसे pagination_skip कि वहाँ 5 सामग्री के लिए मैप किया। 10, 15, जो कुछ भी के लिए वही है। इसके अलावा, .../ro/news/0 यदि संभव हो तो .../ro/news/ जैसा होना चाहिए।

क्या मैं ऐसा कर सकता हूं? कैसे?

मैं जितना संभव हो उतना एक्सटेंशन उपयोग करना चाहता हूं।

उत्तर

3

आप इसे गलत करने का प्रयास करते हैं। आप एक यूआरएल पैरामीटर की गतिशील हैंडलिंग चाहते हैं। जैकिल स्थिर वेब जनरेटर है। तो आपको उन सभी पेजों को उत्पन्न करने की आवश्यकता है जिन्हें देखा जाएगा। आप इसके लिए जनरेटर कर सकते हैं। कृपया पेज https://github.com/mojombo/jekyll/wiki/Plugins

मैं आप क्या करना चाहते हैं के लिए एक जनरेटर पर काम किया और यह बहुत अच्छी तरह से काम करता है पर जेनरेटर खंड पर एक नजर है, मैं भी 'पिछला' और 'अगले' बटन बनाया। कृपया एक नज़र डालें और इसे आजमाएं। यह सभी श्रेणियों के लिए काम करता है (न केवल ro एक), लेकिन यदि आप चाहें तो इसे अनुकूलित कर सकते हैं।

फ़ोल्डर संरचना

| -- _plugins 
    ` news.rb 
| -- _layouts 
    ` news.html 
| -- _includes 
    ` nav.html 
| -- _config.yml 
| -- ro 
    ` -- _posts 
     | -- 2012-04-10-test.textile 
     | -- 2012-04-10-test2.textile 
     | -- 2012-04-10-test4.textile 
     | -- 2012-04-10-test6.textile 
     | -- 2012-04-10-test15.textile 
     | -- 2012-04-10-test3.textile 
     ` -- 2012-04-10-test5.textile 
    ` _site 

genrator news.rb गहरे लाल रंग का कोड

module Jekyll 

    class NewsPage < Page 
    def initialize(site, base, dir, category, posts_number, posts_per_page, pagination_skip) 
     @site = site 
     @base = base 
     @dir = dir 
     @name = "news_#{pagination_skip}.html" 

     self.process(@name) 
     self.read_yaml(File.join(base, '_layouts'), 'news.html') 
     self.data['category'] = category 
     self.data['posts_per_page'] = posts_per_page 
     self.data['pagination_skip'] = pagination_skip 
     if pagination_skip != 0 
     self.data['prev_pagination_skip'] = pagination_skip - posts_per_page 
     end 
     if pagination_skip + posts_per_page < posts_number 
     self.data['next_pagination_skip'] = pagination_skip + posts_per_page 
     end 
    end 
    end 

    class NewsGenerator < Generator 
    safe true 
    def generate(site) 
     if site.layouts.key? 'news' 
     dir = site.config['category_dir'] || 'categories' 
     site.categories.keys.each do |category| 
      posts_number = site.categories[category].length 
      pagination_skip = 0; 
      posts_per_page = 5; 
      begin 
      write_news_page(site, File.join(dir, category), category, posts_number, posts_per_page, pagination_skip) 
      pagination_skip += posts_per_page; 
      end while pagination_skip < posts_number 
     end 
     end 
    end 

    def write_news_page(site, dir, category, posts_number, posts_per_page, pagination_skip) 
     index = NewsPage.new(site, site.source, dir, category, posts_number, posts_per_page, pagination_skip) 
     index.render(site.layouts, site.site_payload) 
     index.write(site.dest) 
     site.pages << index 
    end 
    end 
end 

news.html फ़ाइल के लेआउट

--- 
--- 

{% for post in site.categories[page.category] offset:page.pagination_skip limit:page.posts_per_page %} 
    {{ post.content }} 
{% endfor %} 
{% include nav.html %} 

नेविगेशन nav.html

में शामिल
<div class="nav"> 
    {% if page.prev_pagination_skip %} 
    <a rel="prev" href="{{site.basepath}}categories/{{page.category}}/news_{{page.prev_pagination_skip}}.html">Prev</a> 
    {% endif %} 
    {% if page.next_pagination_skip %} 
    <a rel="next" href="{{site.basepath}}categories/{{page.category}}/news_{{page.next_pagination_skip}}.html">Prev</a> 
    {% endif %} 
</div> 

इसे आज़माएं और मुझे यह बताने दें कि आपको यह पसंद है।

+1

बीटीडब्ल्यू, कोई कारण नहीं है कि nav.html फ़ोल्डर में शामिल है, आप इसे सीधे news.html में लिख सकते हैं, लेकिन मैंने आपकी संरचना को रखा है। –

+0

यह काम नहीं करता है लेकिन यह एक विचार है जिसे मुझे आगे बढ़ाना है। धन्यवाद। –

+0

आपका क्या मतलब है: 'यह काम नहीं करता', यह एक संकलन समस्या है? या यह आपको जो चाहिए वह नहीं करता है। –

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