Da die Verzeichnisnamen dem slug
des Elter entsprechen müssen, kann über den Dateipfad der Seiten verglichen werden.
Zunächst bleiben wir in jeweils der gleichen Sprache:
# set parent and children
for page in _all_pages():
page_dir = get_path(page, page.settings)
for parent_page in _all_pages():
parentpage_dir = get_path(parent_page, parent_page.settings)
parentpage_as_dir = parentpage_dir + parent_page.slug + '/'
if parentpage_as_dir == page_dir and parent_page != page and parent_page.lang == page.lang:
page.parent = parent_page
parent_page.children.append(page)
Dann schauen wir, ob sich für elterlose Seiten ein Elter in der Default-Sprache finden lässt:
# set parent in default language if necessary
for page in _all_pages():
if not page.parent:
page_dir = get_path(page, page.settings)
for parent_page in _all_pages():
parentpage_dir = get_path(parent_page, parent_page.settings)
parentpage_as_dir = parentpage_dir + parent_page.slug + '/'
if parentpage_as_dir == page_dir and parent_page != page and parent_page.in_default_lang:
page.parent = parent_page