あなたは間違っているようにしようとします。 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>
あなたがそれを好きなら、私に教えてください。
btw、nav.htmlが_includesフォルダにある理由はありません。あなたはnews.htmlに直接書くことができますが、私はあなたの構造を保っています。 –
それは動作しませんが、それは私が追求しなければならない考えです。ありがとう。 –
どういう意味ですか?「うまくいきません」、コンパイルの問題ですか?またはあなたが必要とすることをしません。 –