page-relations.py - Eltern-Kind-Beziehungen (1/2)

Eltern-Kind-Beziehungen durch Verzeichnisstruktur (1/2)

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

Copyright © 2016 Uwe Ritzmann - Erstellt mit Pelican, Python und Skeleton.