【问题标题】:Cannot modify site.tags from Jekyll plugin无法从 Jekyll 插件修改 site.tags
【发布时间】:2013-06-23 22:16:50
【问题描述】:

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

【问题讨论】:

    标签: ruby jekyll


    【解决方案1】:

    通过定义我自己的语言特定变量,我已经实现了类似的效果,例如这个简化的示例:

    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/ 中进行了描述。

    【讨论】:

      【解决方案2】:

      您可以简单地将帖子语言添加为标签,即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 完成,为您节省了一些时间和精力。 :)

      【讨论】:

      • 嗯,这与节省我的时间和精力完全相反。我希望我的插件能够自动标记帖子,而不是我自己做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多