Bạn cố gắng làm điều đó sai. Bạn muốn có một xử lý động của một tham số URL. Jekyll là một máy phát điện web tĩnh. Vì vậy, bạn cần tạo tất cả các trang sẽ được truy cập. Bạn có thể một máy phát điện cho điều đó. Vui lòng xem Máy phát điện phần trên trang https://github.com/mojombo/jekyll/wiki/Plugins
Tôi đã làm việc trên máy phát điện cho những gì bạn muốn làm và hoạt động khá độc đáo, tôi cũng đã tạo nút 'trước' và 'tiếp theo'. Xin hãy xem và thử nó. Nó hoạt động cho tất cả các loại (không chỉ ro một), nhưng bạn có thể tùy chỉnh nó nếu bạn muốn.
cấu trúc thư mục
| -- _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
mã ruby 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
Cách bố trí của các tập tin news.html
---
---
{% for post in site.categories[page.category] offset:page.pagination_skip limit:page.posts_per_page %}
{{ post.content }}
{% endfor %}
{% include nav.html %}
Các bao gồm chuyển hướng 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>
Hãy thử và cho tôi biết nếu bạn thích.
btw, không có lý do nào nav.html nằm trong _includes thư mục, bạn có thể viết nó trực tiếp trong news.html, nhưng tôi đã giữ cấu trúc của bạn. –
Nó không hoạt động nhưng đó là một ý tưởng tôi phải theo đuổi. Cảm ơn. –
Ý của bạn là gì: 'nó không hoạt động', đó là vấn đề biên dịch? hoặc nó không làm những gì bạn cần. –