我有一个使用Jekyll的网站,我想要对我的类别进行排序。我成功地按以下方式对所有类别进行了排序:
module Jekyll
class SortedCategoriesBuilder < Generator
safe true
priority :high
def generate(site)
site.config['sorted_categories'] = site.categories.sort { |a,b| a[0] <=> b[0] }
end
end
end
在插件sorted_categories.rb中。这创建了site.sorted_categories。现在我还要为每个帖子分类。我想通过添加
为site.posts中的每个帖子添加一个post.sorted_categories for post in site.posts
post.class.module_eval { attr_accessor :sorted_categories }
post.sorted_categories = post.categories.sort { |a,b| a[0] <=> b[0] }
end
到上面的代码,但它不起作用。
(我知道如何直接在帖子中对类别进行排序,但我想知道它是如何作为插件工作的)
如何更正代码,以便它可以正常工作?也许,我完全不了解Jekyll的内部结构,所以我也对其他(优雅)解决方案持开放态度。
答案 0 :(得分:1)
通过使用提到的in this question解决方法,可以使用以下方法:
module Jekyll
class Post
def sorted_categories
self.categories.sort { |a,b| a[0] <=> b[0] }
end
def to_liquid(attrs = ATTRIBUTES_FOR_LIQUID)
super(attrs + %w[
sorted_categories
])
end
end
end