Ruby 无法从Jekyll插件修改site.tags
我正在开发一个插件来帮助多语言的Jekyll网站,作为这项工作的一部分,我必须根据他们的语言对帖子进行分类 我试图根据帖子的语言对帖子进行标记,因此我覆盖了Ruby 无法从Jekyll插件修改site.tags,ruby,jekyll,Ruby,Jekyll,我正在开发一个插件来帮助多语言的Jekyll网站,作为这项工作的一部分,我必须根据他们的语言对帖子进行分类 我试图根据帖子的语言对帖子进行标记,因此我覆盖了aggregate\u post\u info方法,但是当我打印site.tags变量时,它是空的 module Jekyll class Site alias_method :_aggregate_post_info, :aggregate_post_info def aggregate_post_
aggregate\u post\u 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
模块杰基尔
课堂现场
别名\方法:\聚合\发布\信息,:聚合\发布\信息
def聚合发布信息(发布)
_汇总发布信息(发布)
@标记[post.data['lang']]您可以简单地将post语言添加为标记,即标记:[english、ruby等]
,完全避免了猴子补丁。因此,当您只想显示带有lang
-标记的帖子时,只需过滤它们:
<ul class="posts">
{% for post in site.tags.english %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
{site.tags.english%}
-
{%endfor%}
这样,大部分工作都由杰基尔完成,为您节省了一些时间和精力。:) 我通过定义自己的语言特定变量实现了类似的功能,如下面的简化示例:
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
我还自动生成标记页(以及使用不同方法而不使用插件的类别页),避免多种语言的名称冲突,并预计算聚合计数以获得更好的性能。整个事情都在两篇博文中进行了描述。实际上,这与节省我的时间和精力完全相反。我希望我的插件能够自动标记帖子,而不是我自己做。