2013-06-23 2 views
0

Я разрабатываю плагин для облегчения многоязычных сайтов Jekyll, и в качестве части этого я должен классифицировать сообщения в соответствии с их языком.Невозможно изменить site.tags из плагина Jekyll

Я пытаюсь пометить пост в соответствии с его языком, поэтому я перезаписан методом aggregate_post_info, но когда я печатаю переменную site.tags, пусто.

module Jekyll 
    class Site 

     alias_method :_aggregate_post_info, :aggregate_post_info 
     def aggregate_post_info(post) 
      _aggregate_post_info(post) 
      @tags[post.data['lang']] << post 
     end 

    end 
end 

ответ

0

Вы можете просто добавить почтовый язык в качестве тега, то есть tags: [english, ruby, etc], избегая вообще обезьяны заплаток. Итак, если вы хотите, чтобы показать только lang -tagged сообщения, вы просто фильтровать их:

<ul class="posts"> 
{% for post in site.tags.english %} 
    <li> 
    <a href="{{ post.url }}">{{ post.title }}</a> 
    </li> 
{% endfor %} 
</ul> 

Таким образом, большая часть работы выполняется Джекила, экономя ваше время и усилия. :)

+0

Ну, действительно, это полная противоположность экономии времени и усилий. Мне бы очень хотелось, чтобы мой плагин автоматически помещал сообщения, вместо этого я сам делал это. – liamzebedee

0

я достиг что-то подобное, определив свои языковые конкретные переменные, как в этом упрощенном примере:

for post in site.posts.docs do 
    lang = post.data['lang'] 
    for tag in post.data['tags'] do 
     slug = jekyll_tagging_slug(tag) 
     site.config['t'][lang]['tagnames'] = slug 
    end 
end 

Я также автоматически генерировать страницы тегов (и категории страниц с использованием другого подхода без плагинов), избегайте коллизий имен для нескольких языков и предварительно подсчитывайте совокупные показатели для повышения производительности. Все это описано в двух блогах http://www.guido-flohr.net/multilang-with-jekyll/ и http://www.guido-flohr.net/jekyll-multilang-tags/.