Manuelle Sortierung für “Menü ausgewähler Seiten”

Falls man eine Liste von Seiten mit dem Content Element Menü ausgewählter Seiten (Menu of selected pages), werden die Seiten im Moment in TYPO3 7.6.11. automatisch nach ID sortiert und nicht wie erwartet nach der angegebenen Sortierung im Backend. Ich habe dazu im nur einen Bug-Tracker-Eintrag gefunden, aber es gibt offensichtlich noch keinen Patch. Da es für mich nicht in Frage kommt, am Core Code Änderungen vorzunehmen, habe ich es mit einem ViewHelper gelöst.

Das ist der ViewHelper:

class SortPageMenuViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
 
    /**
     * @param array $order
     * @param array $pages
     * @param string $variableName
     */
    public function render($order, $pages, $variableName = 'pages')
    {
        $pagesSorted = array();
        foreach($order as $pageUid) {
            $pagesSorted[] = $pages[$pageUid];
        }
        if (TRUE === $this->templateVariableContainer->exists($variableName)) {
            $this->templateVariableContainer->remove($variableName);
        }
        $this->templateVariableContainer->add($variableName, $pagesSorted);
    }
}

und so verwendet man ihn in Menu/Type-0.html:

<ce:menu.list pageUids="{pageUids}" as="pages">
    <f:if condition="{pages}">
        <my:sortPageMenu order="{pageUids}" pages="{pages}" variableName="pages" />
        <ul class="ce-menu ce-menu-0">
            <f:for each="{pages}" as="page">
                <li>
                    <f:link.page pageUid="{page.uid}">
                        <f:if condition="{page.nav_title}">
                            <f:then>
                                {page.nav_title}
                            </f:then>
                            <f:else>
                                {page.title}
                            </f:else>
                        </f:if>
                    </f:link.page>
                </li>
            </f:for>
        </ul>
    </f:if>
</ce:menu.list>

Kommentare sind geschlossen.