如何在 Jekyll 中将 Liquid 标签添加到 YAML 前端?

How to add a Liquid tag into YAML front matter in Jekyll?

我正在使用 plugin 计算 post 的页面浏览量和基于 Google 分析的页面。为了显示页面浏览量,我使用了 Liquid 标签 {% pageview %}。有什么方法可以将此数据添加到 YAML front matter,以便可以通过 {{ page.views }}?

之类的方式在其他页面上的流行 post 列表中访问它

这是插件中 Liquid 标签的代码:

class PageViewTag < Liquid::Tag

  def initialize(name, marker, token)
    @params = Hash[*marker.split(/(?:: *)|(?:, *)/)]
    super
  end

  def render(context)
    site = context.environments.first['site']
    if !site['page-view']
      return ''
    end

    post = context.environments.first['post']
    if post == nil
      post = context.environments.first['page']
      if post == nil
        return ''
      end
    end

    pv = post['_pv']
    if pv == nil
      return ''
    end

    html = pv.to_s.reverse.gsub(/...(?=.)/,"\&\u2009").reverse
    return html
  end #render
end # PageViewTag

我如何才能不注册 Liquid 标签,而是将此数据合并到 post(集合中的文档)的数据中?并通过 {{ page.views }}.

使用

您可以使用 generator plugin 向您的帖子或页面添加一些 data['views']

这是我制作的插件的代码:

require 'jekyll'

module Jekyll
  class PageviewsData < Jekyll::Generator
    safe :true
    priority :low

    def generate(site)
      # require ga-page-view plugin
      if !site.config['page-view']
        return
      end

      site.collections.each  do |label, collection|
        collection.docs.each { |doc|
          pv = doc.data['_pv']
          views = pv.to_s.reverse.gsub(/...(?=.)/,"\&\u2009").reverse
          doc.data.merge!('views' => views)
        }
      end
    end
  end
end