show_menu2, versione 4.9 x
Show_Menu2 è un frammento di codice per il WebsiteBaker CMS. Dal WebsiteBaker 2.7 è incluso con il CMS.
La precedente funzione show_menu viene completamente sostituita ed estesa con show_menu2. Tutti i dati necessari per creare il menu sono generati da una singola query di database. Con ampie possibilità di regolazione del codice HTML generato tutti i tipi di menu possibili (liste, pangrattato, sitemap, ecc) può essere generato.
- Installazione
- Utilizzando Show_Menu2
- FAQ
- Funzione
- Output HTML
- Parametro
- Opzioni Avanzate
- Stringhe di Formato
- Formattazione Condizionale
- Formatter
INSTALLATIONup
Dal show_menu2 è di solito presente in WebsiteBaker, non è necessaria nessuna installazione. Se, contrariamente alle aspettative, non esiste, puoi scaricarlo qui.
Usando SHOW_MENU2up
Per usare show_menu2 devi modificare il modello dove vuoi che appaia il menu. Nota: se vengono sostituite le vecchie chiamate di menu, devono essere utilizzati anche i nuovi parametri corrispondenti di cui show_menu2 ha bisogno.
Nella maggior parte dei casi è sufficiente la chiamata standard con almeno 4 parametri di show_menu2. In questo caso vengono utilizzati i valori predefiniti, questo crea un menu che visualizza la pagina corrente e le sottopagine della pagina corrente:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
Nota: la chiamata a show_menu2 è PHP e deve normalmente essere racchiusa in caratteri di codice PHP (a meno che la chiamata non sia già all’interno del codice PHP):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
Questo menu predefinito crea già un menu completo su base elenco con diverse classi che consentono una facile formattazione utilizzando i CSS. Ad esempio, la classe “menu-current” viene aggiunta al tag <li> della voce di menu corrente. Inoltre ogni voce di menu delle voci secondarie contiene la classe “menu-expand”. Ciò consente di creare regole CSS molto differenziate per ogni voce di menu.
Per esempio:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
La sezione “Output HTML” contiene una descrizione dettagliata di quali classi sono assegnate a quale elemento. Utilizzando diversi parametri nella chiamata di funzione show_menu2, è anche possibile creare strutture di menu piuttosto estese e diverse. Ad esempio, per visualizzare solo le voci di menu dal livello superiore della struttura del menu, è possibile utilizzare la seguente chiamata:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
Oppure, ad esempio, per visualizzare fino a due sottolivelli della pagina corrente:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
Ci sono molte possibilità per creare diverse strutture di menu. Numerosi esempi possono essere trovati sul sito demo: KLICK
FAQup
D: Non sono un programmatore. Non esiste una documentazione più semplice?
A: No, perché questa è già la semplice documentazione.
D: Come posso creare un menu a discesa?
A: Questo non ha nulla a che fare con show_menu2. Per creare un menu a discesa è sufficiente regolare il codice CSS del rispettivo modello. Le regolazioni necessarie possono essere trovate ad esempio nel modello “allcss2” dal repository Addon WebsiteBaker-> https://addon.websitebaker.org/
D: Perché il menu scompare dopo aver utilizzato la funzione di ricerca in una pagina Web multilingue?
A: Mancano le linee necessarie nel modello utilizzato:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
D: Multilingue? Sembra fantastico. Come si fa?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
D: Ogni volta che viene chiamata una pagina, SM2 genera il seguente messaggio di avviso:
“show_menu2 error: a aOptions is invalid. Nessuna bandiera dal gruppo 1 in dotazione!”
A: I valori errati o un numero errato di valori sono stati passati alla funzione.
Vedere la sezione PARAMETRI per i valori corretti del flag da passare al parametro a aOptions.
D: Come si usa una classe/immagine/colore/widget diversa per ogni voce in un menu?
A: Utilizzare la stringa di formato nella stringaIt aItemOpen. Crea una classe o un id univoco per ogni voce di menu, quindi fai riferimento a tale elemento nel tuo CSS o Javascript per fare quello che vuoi.
Per aggiungere una classe unica per ogni voce di menu (o simile):
"<li><a href="" target="" class=" p"></a>"
… creazione di voci di menu come …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
Fai riferimento a questo nel tuo CSS come:
a.p45 { color: red; }
Per aggiungere un ID univoco per ogni voce di menu (o simile):
"<li><a href="" target="" class=""></a>"
… creazione di voci di menu come …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
Fai riferimento a questo nel tuo CSS come:
a#p45 { color: red; }
Si noti che l’ID può essere utilizzato solo se il menu viene generato e visualizzato una sola volta nella pagina (perché gli ID HTML devono essere univoci all’interno di una pagina).
FUNCTIONup
La chiamata completa e i valori dei parametri predefiniti per show_menu2 sono i seguenti:
show_menu2( $aMenu = 0, $aStart = SM2_ROOT, $aMaxLevel = SM2_CURR+1, $aOptions = SM2_TRIM, $aItemOpen = '</a>', $aItemClose = '</li>', $aMenuOpen = '', $aMenuClose = '</ul>', $aTopItemOpen = false, $aTopMenuOpen = false);
La sezione “Parametri” contiene una descrizione dettagliata di ogni singolo parametro.
Ogni parametro deve essere usato in modo assolutamente corretto. Le seguenti regole possono aiutare:
aMen aMenu = 0 è il valore migliore nella maggior parte dei casi.
aSt aStart deve essere un ID di pagina o un valore che inizia con “SM2_”.
aM aMaxLevel può ottenere solo valori che iniziano con “SM2_”.
a aOptions ad eccezione di alcuni casi speciali sono consentiti solo i valori che iniziano con “SM2_”.
Tutti gli altri parametri contengono i tag (HTML) che controllano l’output del menu.
A partire da each aItemOpen ogni parametro può essere passato il valore false per ottenere il rispettivo valore predefinito.
Può essere utilizzato, ad esempio, per creare un elenco numerato, mentre i valori predefiniti vengono ancora utilizzati per le singole voci di menu:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
Nota: fino a including aOptions inclusi tutti i parametri devono essere passati esplicitamente!
Output HTML
L’output HTML dipende in gran parte dai parametri che vengono passati alla funzione. Indipendentemente da ciò, le classi successive vengono sempre utilizzate per ogni menu, per cui le singole voci di menu possono anche avere diverse classi se necessario.
CLASSE | ASSEGNAZIONE |
---|---|
menu-top | Solo la prima voce di menu. |
menu-parent | Qualsiasi voce di menu principale. |
menu-current | Solo la voce di menu della pagina corrente. |
menu-sibling | Tutti i “fratelli” della pagina corrente. |
menu-child | Qualsiasi sottomenu della pagina corrente. |
menu-espandi | Qualsiasi menu con sottomenu. |
menu-first | La prima voce di qualsiasi menu o sottomenu. |
menu-last | L’ultima voce di qualsiasi menu o sottomenu. |
menu-N | Ogni voce di menu, dove N sta per la profondità ASSOLUTA del menu, a partire da 0, della rispettiva voce di menu. Quindi il livello superiore è sempre menu-0, il livello successivo è menu-1 e così via. |
menu-child-N | Ogni sottomenu delle pagine correnti, dove N sta per la profondità RELATIVA del sottomenu, che inizia con 0. |
Esempio di output HTML:
<ul class="menu-top menu-0"> <li class="menu-0 menu-first"> ... </li> <li class="menu-0 menu-expand menu-parent"> ... <ul class="menu-1"> <li class="menu-1 menu-expand menu-first"> ... <ul class="menu-2"> <li class="menu-2 menu-first"> ... <li class="menu-2 menu-last"> ... </ul> </li> <li class="menu-1 menu-expand menu-parent"> ... <ul class="menu-2"> <li class="menu-2 menu-expand menu-current menu-first"> ... ** CURRENT PAGE ** <ul class="menu-3"> <li class="menu-3 menu-child menu-child-0 menu-first"> ... <ul class="menu-4"> <li class="menu-4 menu-child menu-child-1 menu-first"> ... </li> <li class="menu-4 menu-child menu-child-1 menu-last"> ... </li> </ul> </li> <li class="menu-3 menu-child menu-child-0 menu-last"> ... </li> </ul> </li> <li class="menu-2 menu-sibling menu-last"> ... </li> </ul> </li> <li class="menu-1"> ... </li> <li class="menu-1 menu-expand menu-last"> ... <ul class="menu-2"> <li class="menu-2 menu-first menu-last"> ... </li> </ul> </li> </ul> </li> <li class="menu-0 menu-last"> ... </li> </ul>
PARAMETERup
aMen aMenu
aSt aStart
SM2_ROOT+N
SM2_ROOT+1 Inizia un livello al di sotto del livello più alto
SM2_ROOT+2 Inizia due livelli sotto il livello superiore
SM2_CURR+N
SM2_CURR + 1 Avvia un livello sotto il livello corrente con tutti i sottolivelli.
page_id
Vengono visualizzati tutti i sottomenu di questa pagina. (L’ID della pagina può essere determinato modificando la pagina nel backend dell’amministratore, verrà visualizzato nella barra degli indirizzi del browser: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
inizia dal livello specificato in aSt aStart, fino al livello specificato qui.
SM2_ALL
SM2_CURR + N
SM2_CURR+3 Tutti i sottolivelli parent + current + 3
SM2_START+N
I livelli vengono visualizzati indipendentemente dal livello in cui si trova la pagina corrente.
SM2_START + 1 Livello iniziale + un livello inferiore.
SM2_MAX + N
I livelli al di sotto del livello corrente non vengono visualizzati.
SM2_MAX + 1 Il livello iniziale e un livello sotto di esso.
$aOptions
Ad esempio, per definire sia TRIM che PRETTY, usa : (SM2_TRIM | SM2_PRETTY).
GRUPPO 1
——-
Un flag deve sempre essere specificato da questo gruppo. Questi flag determinano il modo in cui gli elementi fratelli nell’albero dei menu vengono soppressi nell’output.
SM2_ALL
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2 -> B-3 -> B-4
SM2_TRIM
Tutti i sottomenu di elementi che non sono nel percorso.
vengono rimossi.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
e tutte le voci di menu che vi conducono.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
GRUPPO 2
——-
Questi flag sono opzionali, possono essere combinati in qualsiasi numero.
SM2_NUMCLASS
SM2_ALLINFO
Questo provoca un consumo di memoria abbastanza elevato e dovrebbe essere
dovrebbe quindi essere usato con cautela.
Ciò significa, ad esempio, che le parole chiave, la descrizione della pagina e
tutte le altre informazioni disponibili che normalmente non sono
possono essere caricate.
Si prega di notare: questo flag deve essere impostato alla PRIMA chiamata di schow_menu2
può essere utilizzato per il rispettivo ID menu, o in combinazione con il
con SM2_NOCACHE, altrimenti non ha alcun effetto.
SM2_NOCACHE
SM2_PRETTY
Interruzioni di riga in una forma leggibile. Ciò è particolarmente utile quando si esegue il debug dell’output del menu.
SM2_BUFFER
SM2_CURRTREE
Vengono visualizzate solo le voci di menu del ramo di menu corrente.
Se necessario, questo flag può essere combinato con qualsiasi flag del gruppo 1.
SM2_ESCAPE
Questo può essere richiesto per le vecchie installazioni di WebsiteBaker.
per generare un output HTML valido.
SM2_SHOWHIDDEN
Usa pagine private per il tempo in cui vuoi che le pagine siano nascoste tranne quando sono attive. Tuttavia, per la compatibilità con la versione 4.8, fornire questo flag per consentire alle pagine nascoste di diventare visibili quando sono attive.
SM2_XHTML_STRICT
SM2_NO_TITLE
Per questo parametro esiste anche una modalità estesa in cui le opzioni vengono passate come array associativo. Vedere la sezione OPZIONI AVANZATE per i dettagli. Per la maggior parte delle applicazioni, tuttavia, questo NON è richiesto.
$aItemOpen
Se questo parametro è impostato su false, la stringa di formato predefinito
‘</a> ‘ per garantire la compatibilità con la funzione standard WebsiteBaker show_menu().
Poiché la formattazione utilizzando le classi CSS è spesso più semplice quando applicata al tag < a>, si consiglia di utilizzare la seguente stringa di formato: ‘<li></a>’.
Questo parametro può essere utilizzato anche come istanza di una classe di formattazione per il menu. Una descrizione più dettagliata può essere trovata nella sezione FORMATTATORE. Se qui viene specificato un formattatore, tutti gli argomenti dopo $aItemOpen vengono ignorati.
a aItemClose
Se questo parametro è impostato su false, viene utilizzato il valore predefinito ‘</li>’.
aMen aMenuOpen
Se questo parametro è impostato su false, viene utilizzato il valore predefinito”.
aMen aMenuClose
Se questo parametro è impostato su false, viene utilizzato il valore predefinito ‘</ul >’.
aT aTopItemOpen
aT aTopMenuOpen
ADVANCED OPTIONSup
Il parametro a aoptions può essere utilizzato in due modi. In primo luogo, come descritto sopra nella sezione PARAMETRI, questo tipo dovrebbe essere sufficiente per la stragrande maggioranza dei casi d’uso. Tuttavia, per poter affrontare le opzioni speciali in casi speciali, i valori richiesti devono essere forniti come array associativo.
Nota: anche i flag SM2_ * sono obbligatori qui e devono essere passati come ‘flag’.
Definisce un numero di livelli che vengono sempre visualizzati rispetto al livello di menu definito in aSt aStart. Questo fa sì che il flag SM2_TRIM venga ignorato per questi livelli.
Per utilizzare questo array si consiglia di crearlo prima e quindi fornire il parametro $aOptions con l’array creato:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
FORMAT STRINGSup
I seguenti tag possono essere utilizzati nelle stringhe di formato per $aItemOpen e aMen aMenuOpen e devono essere sostituiti dal testo corrispondente.
<un> tag senza classe:
'<a href="" target="">' |
|
<un> tag con classe:
'<a href="" target="" class="">' |
|
<li> tag con classe:
'<li class="">' |
|
<ul> tag con classe:
'<ul class="">' |
|
Elenco delle classi per questa pagina | |
il Testo del titolo del menu (entità HTML sfuggito a meno che il SM2_NOESCAPE flag è impostato) |
|
L’URL di un file immagine con normale rappresentazione | |
L’URL di un file di immagine con l’/hover display | |
titolo della Pagina di testo (entità HTML sfuggito a meno che il SM2_NOESCAPE flag è impostato) |
|
L’URL di una pagina relativi file di immagine | |
L’URL delle pagine per il tag< a > | |
La destinazione della pagina per il tag <a> | |
L’ID della pagina della voce di menu corrente. | |
L’ID della pagina della voce di menu principale. | |
A livello di pagina, questo è lo stesso numero utilizzato nel tag CSS “menu-N”. | |
Numero di fratelli della voce di menu corrente. | |
Numero di tutti i fratelli in questo menu. | |
Condizione (vedere la sezione “Formattazione condizionale” per i dettagli) |
I seguenti tag sono disponibili SOLO se è impostato il flag SM2_ALLINFO.
descrizione della pagina | |
parole chiave della pagina |
Formattazione Condizionale up
L’istruzione di formattazione condizionale può assumere una delle seguenti forme:
B
Può essere qualsiasi stringa che non contenga il carattere ‘}’.
può contenere. Può contenere qualsiasi stringa di formato dalla sezione
Stringhe di formato’, ma nessun ulteriore test di condizione (perché il carattere’} ‘ non è consentito).
C
Può essere qualsiasi stringa che non contenga il carattere ‘}’.
può contenere. Può contenere qualsiasi stringa di formato dalla sezione
Stringhe di formato’, ma nessun ulteriore test di condizione (perché il carattere’} ‘ non è consentito).
La condizione è una combinazione di uno o più confronti booleani.
Se è richiesto più di un confronto, deve essere combinato con gli altri confronti
può essere collegato usando || (booleano or – OR) o && (booleano and – AND).
Un singolo confronto è costituito dall’operando sinistro, dall’operatore e dall’operando destro.
ad esempio X == Y – dove X è l’operando sinistro, == l’operatore e Y l’operando destro.
classe | Controlla se questa classe esiste. Solo il ” = = “e”!= “gli operatori sono ammessi. In questo caso gli operatori hanno il significato “contiene ” o” non contiene “invece di” è uguale “o”non è uguale”. |
livello | Controllo del livello della pagina. |
sib | Controlla il numero di fratelli nella pagina corrente. |
sibCount | Controllare il numero totale di fratelli nel menu corrente. |
id | Controlla l’ID della pagina. |
target | Verifica della specifica target. |
< | a Meno di |
<= | Inferiore o uguale a |
== | Uguale |
!= | Non è uguale |
>= | Maggiore o uguale a |
> | Maggiore |
classe | Uno dei nomi di classe ” menu – * “come specificato nella sezione” Output”. |
livello | Controllare il livello di pagina con i seguenti valori:
|
id | Controllare l’id della pagina contro i seguenti valori:
|
sib | Un numero intero positivo, o “sibCount” per controllare il numero di fratelli in questo menu. |
sibCount | Un numero intero positivo |
target | Una stringa che rappresenta una possibile specifica di destinazione. |
Ha un sottomenu | |
Se la prima voce in un menu | |
NON È la prima voce in un menu | |
Se l’ultima voce del menu è | |
Situato al livello più alto | |
NON È al livello superiore | |
Se la seconda voce in un menu | |
Se in un menu con più di una voce | |
È in un menu che non sono esattamente 2 elementi | |
È in un fratello menu o sottomenu di un fratello menu | |
È il genitore punto di corrente id | |
La stringa ‘_self’ è contenuta nell’attributo di destinazione. |
Se viene aggiunta una clausola else, verrà eseguita in tutti gli altri casi.
Ad esempio, ” foo ” viene sempre eseguito quando il controllo if è errato, quindi:
NON È la seconda voce del menu | |
NON è in un menu con più di due voci |
è la prima voce O è la quarta o superiore voce nel menu | |
Se la voce corrente E ha sottomenu |
si Prega di notare:
Tutti i controlli saranno eseguiti nell’ordine in cui sono indicati, perché:
- Non c’è alcun controllo per i possibili loop (tutti i controlli vengono sempre eseguiti).
- I controlli non sono raggruppati (le parentesi dei controlli non sono supportate)
- Entrambe queste cose hanno lo stesso valore.
FORMATTERup
Attenzione: questa è una funzionalità avanzata e raramente utilizzata!
Con una vasta conoscenza della programmazione PHP è possibile utilizzare la formattazione
predefinita di show_menu2 con il proprio.
Nella include.php di show_menu2 puoi vedere come scrivere il formattatore.
L’API che deve essere utilizzata è simile a questa:
class SM2_Formatter{ // called once before any menu is processed to allow object initialization function initialize() { } // called to open the menu list function startList($aPage, $aUrl) { } // called to open the menu item function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { } // called to close the menu item function finishItem() { } // called to close the menu list function finishList() { } // called once after all menu has been processed to allow object finalization function finalize() { } // called once after finalize() if the SM2_NOOUTPUT flag is used function getOutput() { }};
Websitebakerè rilasciato sotto la GNU General Public License