首页 文章

如何在Jekyll的YAML前端添加Liquid标签?

提问于
浏览
0

我正在使用plugin来计算基于Google Analytics的帖子和网页的网页浏览量 . 要显示页面视图计数,我正在使用Liquid标签 {% pageview %} . 有没有办法将这些数据添加到YAML前端,所以可以通过 {{ page.views }} 之类的东西在其他页面上的热门帖子列表中访问它?

以下是插件中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标签将此数据合并到帖子的数据(集合中的文档)?并通过 {{ page.views }} 使用 .

2 回答

  • 1

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

  • 1

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

    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
    

相关问题