【问题标题】:How to add a Liquid tag into YAML front matter in Jekyll?如何在 Jekyll 的 YAML 前端添加 Liquid 标签?
【发布时间】:2015-11-09 12:48:19
【问题描述】:

我使用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 }}使用。

【问题讨论】:

    标签: yaml jekyll liquid jekyll-extensions


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你好大卫,谢谢你的想法!我在下面发布了我制作的插件的代码。
      猜你喜欢
      • 2011-10-07
      • 1970-01-01
      • 2021-07-11
      • 2017-02-12
      • 2017-06-14
      • 1970-01-01
      • 2023-04-08
      • 2012-04-21
      • 1970-01-01
      相关资源
      最近更新 更多