0

我正在开发一个插件来促进多语言 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
4

2 回答 2

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/中有描述。

于 2016-05-16T15:35:15.060 回答
-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>

这样,大部分工作都由 Jekyll 完成,为您节省了一些时间和精力。:)

于 2013-06-24T14:35:56.003 回答