langmenu plugin

This commit is contained in:
boyska 2015-06-25 13:34:13 +02:00
parent 1384610f07
commit 102fde3931
2 changed files with 44 additions and 0 deletions

View file

@ -48,3 +48,5 @@ THEME = 'themes/bs3'
BOOTSTRAP_THEME = 'cyborg'
HIDE_SIDEBAR = True
PLUGIN_PATHS = ['plugins']
PLUGINS = ['langmenu']

42
plugins/langmenu.py Normal file
View file

@ -0,0 +1,42 @@
'''
This plugin attemps to create something similar to menuitems,
but more meaningful with respect to l10n
'''
from __future__ import print_function
from pelican import signals
def add_localmenuitems(generator):
menu = {} # lang: list of pages
for page in generator.context['pages']:
menu.setdefault(page.lang, [])
for tr in page.translations:
menu.setdefault(tr.lang, [])
print('we have langs ' + ','.join(menu.keys()))
for page in sorted(generator.context['pages'],
key=lambda x: x.navbar_sort):
defined_langs = []
menu[page.lang].append(page)
defined_langs.append(page.lang)
for tr in page.translations:
menu[tr.lang].append(tr)
defined_langs.append(tr.lang)
for lang in menu.keys():
if lang not in defined_langs:
menu[lang].append(page)
menuitems = {}
for lang in menu:
menuitems[lang] = []
for page in menu[lang]:
menuitems[lang].append((page.title, page.url))
print(menuitems['en'])
print(menuitems['it'])
generator.context['LOCALMENUITEMS'] = menuitems
def register():
signals.page_generator_finalized.connect(add_localmenuitems)
pass