it-swarm-eu.dev

Crea una gerarchia personalizzata nel modulo menu

Ho la seguente struttura di menu

Books [/books]
    New Books [/books/new-books]
        Fiction [/books/new-books/fiction]
        Sci Fi[/books/new-books/sci-fi]

Il menu Libri ha Libri (il menu stesso) come primo livello, Nuovi libri come secondo livello e Fiction e Sci Fi come terzo livello.

Quello che sto cercando di ottenere è il seguente. Fondamentalmente la struttura dell'URL per la voce di menu "Sci Fi" rimane la stessa ma visivamente, si trova sotto Fiction.

Books [/books]
    New Books [/books/new-books]
        Fiction [/books/new-books/fiction]
            Sci Fi[/books/new-books/sci-fi]

C'erano due modi in cui pensavo di poter (in questo caso una grande potenza) essere in grado di raggiungere questo obiettivo, ma entrambi sembrano un modo molto "brutto" per farlo, ma non riesco a pensare a nessun altro modo in cui potrei raggiungere questo obiettivo.

Metodo 1: Crea un plug-in di contenuto in cui verrà verificato un nome di classe predefinito nella voce dell'elenco di menu -> ottieni l'elemento principale -> rimuove tutte tali voci di menu e lo inserisce in un altro elemento principale predefinito.

Metodo 2: Utilizzando jQuery ottenere tutti gli elementi dell'elenco con una classe definita (nel "quarto menu" jsfiddle), rimuoverlo dalla posizione esistente e aggiungerlo al genitore predefinito (usando class/id sulla voce di menu href ).

Come ho detto prima, entrambi i metodi sembrano molto contorti, quindi mi chiedevo se ci fosse un modo migliore per raggiungere questo obiettivo?

Ho creato un jsfiddle che rende un po 'più chiaro ciò che sto cercando di ottenere.

1
sifu

Puoi sempre utilizzare le sostituzioni dei modelli per ottenere un rendering alterato, mod_menu non fa eccezione. Ma un modo migliore potrebbe essere l'uso di Menu Item Aliases. Puoi trovare questo tipo di voce di menu in "Collegamenti di sistema" se crei o modifichi una voce di menu.

A Menu Item Alias utilizzerà l'URL della voce di menu di destinazione. Una possibile struttura potrebbe assomigliare al seguente esempio:

Basic Menu, which may or may not be displayed:
- RealA (type: any) => /a
- - RealB (type: any) => /a/b
- - RealC (type: any) => /a/c

Special Menu, which will be displayed through mod_menu
- AliasC (type: alias, target: Realc) => /a/c
- - AliasA (type: alias, target: RealA) => /a
- AliasB (type: alias, target: RealB) => /a/b
2
Nils Rückmann