2015-08-16 6 views
0

Я использую plugin для подсчета просмотров страниц для сообщений и страниц на основе Google Analytics. Чтобы отобразить счетчик просмотров страницы, я использую тег Liquid {% pageview %}. Есть ли способ добавить эти данные в передний элемент YAML, поэтому его можно получить в списке популярных сообщений на других страницах, например, {{ page.views }}?Как добавить ярлык в YAML в Jekyll?

Вот код для жидкого тега в плагине:

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 plugin, чтобы добавить data['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 
Смежные вопросы