2012-04-02 14 views
7

ファイルと同じジキルに複数のURLの地図:ジキルは - 私はジキルのためのカスタムページを持っている

nav.html_includesディレクトリにあり、それはこのようになります
{% assign posts_per_page = 5 %} 
{% for post in site.categories.ro offset:pagination_skip limit:posts_per_page %} 
    ... 
    {{ post.content }} 
    ... 
{% endfor %} 
{% include nav.html %} 

私は次のような news.markdownのファイルを持っています
{% 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> 

URL .../ro/news/55があるpagination_skipようnews.markdownのコンテンツにマップするために何が欲しいのです。 10、15、何でも同じです。さらに、可能であれば.../ro/news/0.../ro/news/と同じにする必要があります。

できますか?どうやって?

可能な限り、私はいくつかの拡張機能を使用したいと思います。

答えて

3

あなたは間違っているようにしようとします。 URLパラメータを動的に処理する必要があります。ジキルはスタティックウェブジェネレータです。したがって、訪問するすべてのページを生成する必要があります。あなたはそれのためのジェネレータができます。私はあなたがやりたいことのために発電機に働いて、それはかなりうまく動作ページ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 Rubyコード

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

0123を含みます
<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

btw、nav.htmlが_includesフォルダにある理由はありません。あなたはnews.htmlに直接書くことができますが、私はあなたの構造を保っています。 –

+0

それは動作しませんが、それは私が追求しなければならない考えです。ありがとう。 –

+0

どういう意味ですか?「うまくいきません」、コンパイルの問題ですか?またはあなたが必要とすることをしません。 –

関連する問題