show_menu2, versiunea 4.9 x
Show_Menu2 este un fragment de cod pentru WebsiteBaker CMS. Deoarece WebsiteBaker 2.7 este inclus cu CMS.
fosta funcție show_menu este complet înlocuită și extinsă cu show_menu2. Toate datele necesare pentru a crea meniul este generat de o singură interogare bază de date. Prin posibilități extinse de ajustare a codului HTML generat toate tipurile de meniu posibile (liste, pesmet, sitemap-uri, etc.) pot fi generate.
- instalare
- folosind Show_Menu2
- Întrebări frecvente
- funcție
- ieșire HTML
- parametru
- Opțiuni avansate
- șiruri de Format
- formatare condiționată
- Formatter
installationup
deoarece show_menu2 este de obicei prezent în WebsiteBaker, nu este necesară instalarea. Dacă, contrar așteptărilor, nu există, îl puteți descărca aici.
utilizarea SHOW_MENU2up
pentru a utiliza show_menu2 trebuie să modificați șablonul în care doriți să apară meniul. Vă rugăm să rețineți: dacă apelurile de meniu vechi sunt înlocuite, trebuie folosiți și parametrii noi corespunzători de care are nevoie show_menu2.
în majoritatea cazurilor, apelul standard cu cel puțin 4 parametri ai show_menu2 este suficient. În acest caz sunt utilizate valorile implicite, aceasta creează un meniu care afișează pagina curentă și subpaginile paginii curente:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
vă rugăm să rețineți: apelul la show_menu2 este PHP și trebuie să fie în mod normal închise în caractere de cod PHP (cu excepția cazului în apelul este deja în interiorul cod PHP):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
acest meniu implicit creează deja un meniu complet pe bază de listă cu mai multe clase care permit formatarea ușoară folosind CSS. De exemplu, clasa „meniu-curent” este adăugată la eticheta <li> a elementului de meniu curent. În plus, fiecare element de meniu al subitemelor conține clasa „meniu-extindere”. Acest lucru permite crearea unor reguli CSS foarte diferențiate pentru fiecare element de meniu.
de exemplu:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
secțiunea” ieșire HTML ” conține o descriere detaliată a claselor care sunt atribuite elementului. Folosind diferiți parametri în apelul funcției show_menu2, este de asemenea posibil să creați structuri de meniu destul de extinse și diferite. De exemplu, pentru a afișa numai elementele de meniu de la nivelul superior al structurii meniului, puteți utiliza următorul apel:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
sau, de exemplu, pentru a afișa până la două subniveluri ale paginii curente:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
există o mulțime de posibilități de a crea diferite structuri de meniu. Numeroase exemple pot fi găsite pe site-ul demo: KLICK
FAQup
Î: nu sunt programator. Nu există o documentație mai simplă?
A: Nu, pentru că aceasta este deja documentația simplă.
Î: Cum pot crea un meniu derulant?
A: Acest lucru nu are nimic de-a face cu show_menu2. Pentru a crea un meniu derulant, trebuie doar să ajustați codul CSS al șablonului respectiv. Ajustările necesare pot fi găsite, de exemplu, în șablonul „allcss2” din magazia Addon WebsiteBaker-> https://addon.websitebaker.org/
Î: De ce dispare meniul după ce am folosit funcția de căutare într-o pagină WebsiteBaker multilingvă?
A: liniile necesare lipsesc în șablonul utilizat:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
Î: multilingv? Sună grozav. Cum o faci?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
Î: de fiecare dată când o pagină este apelată, SM2 generează următorul mesaj de avertizare:
„show_menu2 eroare: $aoptions este nevalid. Nu există steaguri din grupa 1 furnizate!”
A: Valorile greșite sau un număr greșit de valori au fost transmise funcției.
consultați secțiunea Parametri pentru ca valorile corecte ale steagului să treacă la parametrul $aoptions.
Î: Cum folosesc o clasă/imagine/culoare/widget diferită pentru fiecare intrare dintr-un meniu?
A: utilizați șirul de format din șirul $aitemopen. Creați o clasă sau un id unic pentru fiecare element de meniu, apoi faceți referire la acel element din CSS sau Javascript pentru a face orice doriți.
pentru a adăuga o clasă unică pentru fiecare element de meniu (sau similar):
"<li><a href="" target="" class=" p"></a>"
… crearea elementelor de meniu cum ar fi …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
referință acest lucru în CSS ca:
a.p45 { color: red; }
pentru a adăuga un ID unic pentru fiecare element de meniu (sau similar):
"<li><a href="" target="" class=""></a>"
… crearea elementelor de meniu cum ar fi …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
referință acest lucru în CSS ca:
a#p45 { color: red; }
rețineți că ID – ul poate fi utilizat numai dacă acel meniu este generat și afișat o singură dată pe pagină (deoarece ID-ul HTML trebuie să fie unic într-o pagină).
FUNCTIONup
apelul complet și valorile implicite ale parametrilor pentru show_menu2 sunt după cum urmează:
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);
secțiunea „Parametri” conține o descriere detaliată a fiecărui parametru individual.
fiecare parametru trebuie utilizat absolut corect. Următoarele reguli vă pot ajuta:
$aMenu = 0 este cea mai bună valoare în majoritatea cazurilor.
$aStart trebuie să fie fie un ID de pagină, fie o valoare care începe cu „SM2_”.
$amaxlevel poate obține numai valori începând cu”SM2_”.
$ aOptions cu excepția câtorva cazuri speciale sunt permise numai valori care încep cu „SM2_”.
toți ceilalți parametri conțin etichetele (HTML)care controlează ieșirea meniului.
pornind de la $aitemopen fiecare parametru poate fi trecut valoarea false pentru a obține valoarea implicită respectivă.
aceasta poate fi utilizată, de exemplu, pentru a crea o listă numerotată, în timp ce valorile implicite sunt încă utilizate pentru elementele de meniu individuale:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
vă rugăm să rețineți: până la și inclusiv $aOptions toți parametrii trebuie să fie transmise în mod explicit!
ieșire HTML
ieșirea HTML depinde în mare măsură de parametrii care sunt transmiși funcției. Indiferent de aceasta, clasele ulterioare sunt întotdeauna utilizate pentru fiecare meniu, prin care elementele de meniu individuale pot avea, de asemenea, mai multe clase, dacă este necesar.
clasa | atribuire |
---|---|
meniu-top | numai primul element de meniu. |
meniu-părinte | orice element din meniul principal. |
meniu-curent | numai elementul de meniu al paginii curente. |
meniu-frate | toate „frații” din pagina curentă. |
meniu-copil | orice submeniu al paginii curente. |
meniu-extindeți | orice meniu care are submeniuri. |
meniu-primul | primul element al oricărui meniu sau submeniu. |
meniu-ultimul | ultimul element al oricărui meniu sau submeniu. |
meniu-N | fiecare element de meniu, unde N reprezintă adâncimea absolută a meniului, începând cu 0, a elementului de meniu respectiv. deci, nivelul superior este întotdeauna meniu-0, următorul nivel este meniu-1 și așa mai departe. |
meniu-copil-N | fiecare submeniu al paginilor curente, unde N reprezintă adâncimea relativă a submeniului, începând cu 0. |
exemplu de ieșire 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
$aMenu
$aStart
SM2_ROOT+N
SM2_ROOT+1 pornește un strat sub stratul superior
SM2_ROOT+2 pornește două niveluri sub nivelul superior
SM2_CURR+N
SM2_CURR + 1 Începe un strat sub stratul curent cu toate subnivelurile.
page_id
sunt afișate toate submeniurile acestei pagini. (ID-ul paginii poate fi determinat prin editarea paginii în backend-ul administratorului, acesta va fi afișat în bara de adrese a browserului: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
pornește de la nivelul specificat în $aStart, până la nivelul specificat aici.
SM2_ALL
SM2_CURR + n
SM2_CURR+3 toate părinte + curent + 3 subnivele
SM2_START+N
nivelurile sunt afișate indiferent de nivelul pe care se află pagina curentă.
SM2_START + 1 Nivel de pornire + un nivel mai jos.
SM2_MAX+n
straturile sub nivelul curent nu sunt afișate.
SM2_MAX+1 Nivelul de pornire și un nivel sub acesta.
$aoptions
de exemplu, pentru a defini atât TRIM cât și PRETTY, utilizați : (SM2_TRIM | SM2_PRETTY).
grup 1
——-
un steag trebuie să fie întotdeauna specificat din acest grup. Aceste steaguri determină modul în care elementele frate din arborele de meniu sunt suprimate în ieșire.
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
toate submeniurile de elemente care nu sunt în cale.
sunt eliminate.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
curent și toate elementele de meniu care duc la acesta.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
grup 2
——-
aceste steaguri sunt opționale, ele pot fi combinate în orice număr.
SM2_NUMCLASS
SM2_ALLINFO
acest lucru determină un consum de memorie destul de mare și ar trebui să fie
ar trebui, prin urmare, utilizat cu precauție.
aceasta înseamnă, de exemplu, că cuvintele cheie, descrierea paginii și
toate celelalte informații disponibile care în mod normal nu sunt
pot fi încărcate.
vă rugăm să rețineți: acest pavilion trebuie să fie setat la primul apel de schow_menu2
poate fi utilizat pentru ID-ul de meniu respectiv, sau în combinație cu
cu SM2_NOCACHE, altfel nu are nici un efect.
SM2_NOCACHE
SM2_PRETTY
pauze de linie într-o formă lizibilă. Acest lucru este util mai ales atunci când depanați ieșirea din meniu.
SM2_BUFFER
SM2_CURRTREE
sunt afișate numai elementele de meniu din ramura de meniu curentă.
dacă este necesar, acest steag poate fi combinat cu orice steag din grupa 1.
SM2_ESCAPE
acest lucru poate fi necesar pentru instalările WebsiteBaker mai vechi.
pentru a genera o ieșire HTML validă.
SM2_SHOWHIDDEN
utilizați pagini private pentru perioada în care doriți ca paginile să fie ascunse, cu excepția cazului în care sunt active. Cu toate acestea, pentru compatibilitate cu versiunea 4.8, furnizați acest steag pentru a permite paginilor ascunse să devină vizibile atunci când sunt active.
SM2_XHTML_STRICT
SM2_NO_TITLE
pentru acest parametru există și un mod extins în care opțiunile sunt transmise ca matrice asociativă. Consultați secțiunea Opțiuni avansate pentru detalii. Cu toate acestea, pentru majoritatea aplicațiilor, acest lucru nu este necesar.
$aItemOpen
dacă acest parametru este setat la false, șirul de format implicit
‘</a> ‘ pentru a asigura compatibilitatea cu funcția standard WebsiteBaker show_menu().
deoarece formatarea folosind clasele CSS este adesea mai ușoară atunci când este aplicată etichetei < A>, se recomandă utilizarea următorului șir de format: ‘<li></A>’.
acest parametru poate fi folosit și ca instanță a unei clase de formatare pentru meniu. O descriere mai detaliată poate fi găsită în secțiunea FORMATTER. Dacă un formator este specificat aici, toate argumentele după $aitemopen sunt ignorate.
$aitemclose
dacă acest parametru este setat la false, se utilizează valoarea implicită ‘</li>’.
$aMenuOpen
dacă acest parametru este setat la false, se utilizează valoarea implicită”.
$aMenuClose
dacă acest parametru este setat la false, se utilizează valoarea implicită ‘</ul>’.
$aTopItemOpen
$aTopMenuOpen
ADVANCED OPTIONSup
parametrul $aoptions poate fi utilizat în două moduri. În primul rând, așa cum este descris mai sus în secțiunea Parametri, acest tip ar trebui să fie suficient pentru marea majoritate a cazurilor de utilizare. Cu toate acestea, pentru a putea aborda opțiunile speciale în cazuri speciale, valorile necesare trebuie furnizate ca o matrice asociativă.
vă rugăm să rețineți: steagurile SM2_ * sunt, de asemenea, necesare aici și trebuie transmise ca ‘steaguri’.
aceasta definește un număr de niveluri care sunt întotdeauna afișate în raport cu nivelul de meniu definit în $aStart. Acest lucru face ca steagul SM2_TRIM să fie ignorat pentru aceste niveluri.
pentru a utiliza această matrice, este recomandat să o creați mai întâi și apoi să furnizați parametrul $aoptions cu matricea creată:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
FORMAT STRINGSup
următoarele etichete pot fi utilizate în șirurile de format pentru $aitemopen și $aMenuOpen și ar trebui înlocuite cu textul corespunzător.
<o etichetă> fără clasă:
'<a href="" target="">' |
|
<A > etichetă cu clasă:
'<a href="" target="" class="">' |
|
<li > etichetă cu clasă:
'<li class="">' |
|
<ul > etichetă cu clasă:
'<ul class="">' |
|
lista claselor pentru această pagină | |
textul titlului meniului (entitatea HTML a scăpat, cu excepția cazului în care este setat steagul SM2_NOESCAPE) |
|
URL-ul la un fișier imagine cu normal-reprezentare | |
adresa URL a unui fișier imagine cu afișaj activ / hover | |
textul titlului paginii (entitatea HTML a scăpat, cu excepția cazului în care este setat steagul SM2_NOESCAPE) |
|
adresa URL a unui fișier imagine legat de pagină | |
URL-ul paginilor pentru eticheta <a> | |
pagina țintă pentru< A > tag | |
ID-ul paginii elementului de meniu curent. | |
ID-ul paginii elementului de meniu părinte. | |
nivel de pagină, acesta este același număr utilizat în eticheta CSS „menu-N”. | |
Numărul de frați ai elementului de meniu curent. | |
numărul tuturor fraților din acest meniu. | |
condiție (consultați secțiunea „Formatare condiționată” pentru detalii) |
următoarele etichete sunt disponibile numai dacă este setat steagul SM2_ALLINFO.
descrierea paginii | |
cuvinte cheie ale paginii |
Formatare condiționată
instrucțiunea de formatare condiționată poate lua una dintre următoarele forme:
B
acesta poate fi orice șir care nu conține caracterul ‘}’.
poate conține. Poate conține orice șir de format din secțiunea
șiruri de Format’ , dar nici un test de condiție suplimentară (deoarece caracterul ‘}’ nu este permis).
C
acesta poate fi orice șir care nu conține caracterul ‘}’.
poate conține. Poate conține orice șir de format din secțiunea
șiruri de Format’ , dar nici un test de condiție suplimentară (deoarece caracterul ‘}’ nu este permis).
condiția este o combinație a uneia sau mai multor comparații booleene.
dacă este necesară mai mult de o comparație, aceasta trebuie combinată cu celelalte comparații
pot fi legate folosind || (boolean sau – sau) sau && (boolean și – și).
o singură comparație constă din operandul stâng, operatorul și operandul drept.
de ex.X == Y – unde X este operandul stâng, == operatorul și Y operandul drept.
clasa | verificați dacă această clasă există. Numai „= = „și”!= „operatorii sunt permise. În acest caz, operatorii au sensul „conține” sau „nu conține” în loc de „este egal” sau „nu este egal”. |
nivel | Verificarea nivelului paginii. |
sib | verificați numărul de frați pe pagina curentă. |
sibCount | verificați numărul total de frați din meniul curent. |
id | verificați ID-ul paginii. |
țintă | verificarea specificației țintă. |
< | Mai Puțin De |
<= | mai mică sau egală cu |
== | egal |
!= | nu este egal |
>= | mai mare sau egal cu |
> | mai mare decât |
clasa | unul dintre numele clasei „meniu -*”, așa cum se specifică în secțiunea „ieșire”. |
nivel | verificați nivelul paginii în raport cu următoarele valori:
|
id | verificați ID-ul paginii cu următoarele valori:
|
sib | un număr întreg pozitiv sau „sibCount” pentru a verifica numărul de frați din acest meniu. |
sibCount | un număr întreg pozitiv |
țintă | un șir care reprezintă o posibilă specificație țintă. |
are un submeniu | |
dacă prima intrare într-un meniu este | |
nu este primul element dintr-un meniu | |
dacă ultima intrare dintr-un meniu este | |
Situat la cel mai înalt nivel | |
nu este la nivelul superior | |
dacă a doua intrare într-un meniu este | |
dacă într-un meniu cu mai multe intrări | |
este într-un meniu asta nu are exact 2 elemente | |
se află într-un meniu frate sau în submeniul unui meniu frate | |
este punctul părinte al id-ului curent | |
șirul ‘_self’ este conținut în atributul țintă. |
dacă se adaugă o clauză else, aceasta va fi executată în toate celelalte cazuri.
de exemplu, ” foo ” este întotdeauna executat atunci când verificarea if este greșită, deci:
nu este al doilea element din meniu | |
nu se află într-un meniu cu mai mult de două intrări |
este prima intrare sau este a patra sau mai mare intrare din meniu | |
dacă intrarea curentă este și are submeniuri |
vă rugăm să rețineți:
toate verificările vor fi efectuate în ordinea în care sunt notate, deoarece:
- nu există nicio verificare pentru bucle posibile (toate verificările sunt întotdeauna executate).
- controalele nu sunt grupate (paranteze de controale nu sunt acceptate)
- ambele aceste lucruri au aceeași valoare.
FORMATTERup
atenție: aceasta este o caracteristică avansată și rar utilizată!
cu cunoștințe extinse în programarea PHP, este posibil să utilizați formatarea predefinită
a show_menu2 cu propria dvs.
În include.php de show_menu2 puteți vedea cum să scrie formatatorul.
API-ul care trebuie utilizat arată astfel:
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() { }};
site-ul Webbakereste lansat sub Licența Publică Generală GNU