无法从Jekyll插件修改site.tags

时间:2013-06-23 22:16:50

标签: ruby jekyll

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

2 个答案:

答案 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>

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