我正在开发一个插件来帮助多语言Jekyll网站,作为其中的一部分,我必须根据他们的语言对帖子进行分类。
我正在尝试根据其语言标记帖子,因此我覆盖了aggregate_post_info
方法,但是当我打印site.tags
变量时,它是空的 。
module Jekyll
class Site
alias_method :_aggregate_post_info, :aggregate_post_info
def aggregate_post_info(post)
_aggregate_post_info(post)
@tags[post.data['lang']] << post
end
end
end
答案 0 :(得分:0)
我通过定义我自己的语言特定变量来实现类似的功能,例如在这个简化示例中:
for post in site.posts.docs do
lang = post.data['lang']
for tag in post.data['tags'] do
slug = jekyll_tagging_slug(tag)
site.config['t'][lang]['tagnames'] = slug
end
end
我还使用不同插件的不同方法自动生成标记页面(和类别页面),避免多种语言的名称冲突,并预先计算聚合计数以获得更好的性能。整篇文章在两篇博文http://www.guido-flohr.net/multilang-with-jekyll/和http://www.guido-flohr.net/jekyll-multilang-tags/中进行了描述。
答案 1 :(得分:-1)
您可以简单地将帖子语言添加为标记,即tags: [english, ruby, etc]
,完全避免猴子修补。因此,当您只想显示lang
个标记的帖子时,您只需过滤它们:
<ul class="posts">
{% for post in site.tags.english %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
这样,大部分工作都是由杰基尔完成的,为您节省了一些时间和精力。 :)