2015-08-16 76 views
0

我使用plugin來計算基於Google Analytics的帖子和頁面的頁面瀏覽量。要顯示頁面查看次數我正在使用Liquid標籤{% pageview %}。有沒有辦法將這些數據添加到YAML前端,因此可以通過{{ page.views }}之類的東西在其他頁面上的熱門文章列表中訪問?如何將液體標籤添加到Jekyll的YAML前置物品中?

這裏是在插件中的液體標籤代碼:

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 

哪有我不是註冊一個液體標籤合併這些數據後(集合中的文件)的數據?並通過{{ page.views }}使用。

回答

1

您可以使用generator plugindata['views']添加到您的帖子或頁面。

+0

大衛你好,感謝你這種想法!我發佈了我在下面製作的插件的代碼。 – jupiteror

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