show_menu2, version 4.9 x
Show_Menu2 egy kódrészlet a CMS WebsiteBaker. A WebsiteBaker 2.7 óta a CMS tartalmazza.
a korábbi show_menu függvényt teljesen lecseréljük és kiterjesztjük a show_menu2-re. A menü létrehozásához szükséges összes adatot egyetlen adatbázis-lekérdezés generálja. A generált HTML kód kiterjedt beállítási lehetőségeivel minden lehetséges menütípus (listák, zsemlemorzsa, webhelytérképek stb.) lehet generálni.
- telepítés
- használata Show_Menu2
- GYIK
- funkció
- HTML kimenet
- paraméter
- Speciális beállítások
- formátum Strings
- feltételes formázás
- formázó
installationup
mivel a show_menu2 általában jelen van a websitebakerben, nincs szükség telepítésre. Ha a várakozásokkal ellentétben nem létezik, itt letöltheti.
a SHOW_MENU2up használata
a show_menu2 használatához módosítani kell a sablont, ahol a menü megjelenik. Kérjük, vegye figyelembe: ha a régi menühívásokat kicseréli, akkor a show_menu2 megfelelő új paramétereit is használni kell.
a legtöbb esetben a standard hívás legalább 4 paramétere show_menu2 elegendő. Ebben az esetben az alapértelmezett értékeket használja, ez létrehoz egy menüt, amely megjeleníti az aktuális oldalt és az aktuális oldal aloldalait:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
kérjük, vegye figyelembe: a show_menu2 hívása PHP, és általában PHP kód karakterekkel kell ellátni (kivéve, ha a hívás már PHP kódban van):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
ez az alapértelmezett menü már létrehoz egy teljes menüt a lista alapján több osztály, amely lehetővé teszi a könnyű formázás CSS. Például a “menu-current” osztály hozzáadódik az aktuális menüpont <li> címkéjéhez. Ezenkívül az alelemek minden menüpontja tartalmazza a “menu-expand”osztályt. Ez lehetővé teszi, hogy nagyon differenciált CSS szabályokat hozzon létre minden menüponthoz.
például:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
a “HTML kimenet” szakasz részletes leírást tartalmaz arról, hogy mely osztályok vannak hozzárendelve az elemhez. A show_menu2 függvényhívás különböző paramétereinek felhasználásával meglehetősen kiterjedt és különböző menüstruktúrák is létrehozhatók. Ha például csak a menüszerkezet legfelső szintjén lévő menüelemeket szeretné megjeleníteni, használhatja a következő hívást:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
vagy például az aktuális oldal legfeljebb két alszintjének megjelenítéséhez:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
nagyon sok lehetőség van különböző menüstruktúrák létrehozására. Számos példa található a demo weboldalon: KLICK
FAQup
k: nem vagyok programozó. Nincs egyszerűbb dokumentáció?
A: Nem, mert ez már az egyszerű dokumentáció.
K: Hogyan hozhatok létre legördülő menüt?
A: ennek semmi köze a show_menu2-hez. A legördülő menü létrehozásához csak a megfelelő sablon CSS-kódját kell módosítania. A szükséges beállítások megtalálhatók például a WebsiteBaker Addon Repository” allcss2 ” sablonjában-> https://addon.websitebaker.org/
K: Miért tűnik el a menü, Miután többnyelvű WebsiteBaker oldalon használtam a keresési funkciót?
A: a szükséges sorok hiányoznak a használt sablonból:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
K: többnyelvű? Ez remekül hangzik. Hogy csinálod?
A: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
k: minden egyes oldal meghívásakor az SM2 a következő figyelmeztető üzenetet generálja:
” show_menu2 hiba: a $aOptions érvénytelen. Nincs zászló a csoportból 1 szállítva!”
A: Rossz értékeket vagy rossz számú értéket adtak át a függvénynek.
lásd a paraméterek részben a megfelelő flag értékeket, hogy adja át a $aOptions paraméter.
k: hogyan használhatok egy másik osztályt/képet/színt/widgetet a menü minden egyes bejegyzéséhez?
V: használja a formátum karakterláncot a $aItemOpen karakterláncban. Hozzon létre egy egyedi osztályt vagy azonosítót minden menüponthoz, majd hivatkozzon erre az elemre a CSS-ben vagy a JavaScriptben, hogy bármit megtegyen.
egyedi osztály hozzáadása minden menüponthoz (vagy hasonlóhoz):
"<li><a href="" target="" class=" p"></a>"
… létrehozása menüpontok, mint …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
hivatkozzon erre a CSS-ben:
a.p45 { color: red; }
egyedi azonosító hozzáadása minden menüponthoz (vagy hasonlóhoz):
"<li><a href="" target="" class=""></a>"
… létrehozása menüpontok, mint …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
hivatkozzon erre a CSS-ben:
a#p45 { color: red; }
ne feledje, hogy az azonosító csak akkor használható, ha a menü csak egyszer jelenik meg az oldalon (mivel a HTML-azonosítóknak egyedinek kell lenniük az Oldalon belül).
FUNCTIONup
a teljes hívás és a show_menu2 alapértelmezett paraméterértékei a következők:
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);
a “paraméterek” szakasz minden egyes paraméter részletes leírását tartalmazza.
minden paramétert teljesen helyesen kell használni. A következő szabályok segíthetnek:
$aMenu = 0 a legtöbb esetben a legjobb érték.
$aStart oldalazonosítónak vagy “SM2_” – vel kezdődő értéknek kell lennie.
$aMaxLevel csak akkor kap értékeket kezdődő “SM2_”.
$aOptions néhány speciális eset kivételével csak az “SM2_” – vel kezdődő értékek engedélyezettek.
az összes többi paraméter tartalmazza a (HTML)címkéket, amelyek a menü kimenetét vezérlik.
$ aItemOpen – től kezdődően minden paraméter átadható a false értéknek, hogy megkapja a megfelelő alapértelmezett értéket.
ez felhasználható például számozott lista létrehozására, miközben az egyes menüelemeknél az alapértelmezett értékek továbbra is használatosak:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
kérjük, vegye figyelembe: a $aOptions-ig minden paramétert kifejezetten át kell adni!
HTML Outputup
a HTML kimenet nagyban függ attól, hogy mely paraméterek kerülnek átadásra a függvénynek. Ettől függetlenül minden menühöz mindig a következő osztályokat használják, így az egyes menüelemeknek szükség esetén több osztálya is lehet.
osztály | hozzárendelés |
---|---|
menu-top | csak az első menüpont. |
menü-szülő | bármely főmenü elem. |
menu-current | csak az aktuális oldal menüpontja. |
menü-testvér | az aktuális oldal összes “testvére”. |
menu-child | az aktuális oldal bármely almenüje. |
menu-expand | minden olyan menü, amely almenüket tartalmaz. |
menu-first | bármely menü vagy almenü első eleme. |
menu-last | bármely menü vagy almenü utolsó eleme. |
menu-N | minden menüpont, ahol az N az adott menüpont abszolút menümélységét jelenti, kezdve 0-val. tehát a felső szint mindig a menu-0, a következő szint a menu-1, és így tovább. |
menu-child-N | az aktuális oldalak Minden almenüje, ahol az N az almenü relatív mélységét jelenti, 0-val kezdve. |
példa HTML kimenetre:
<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 réteg indítása a legfelső szint alatt
SM2_ROOT+2 két szint indítása a legfelső szint alatt
SM2_CURR+N
SM2_CURR + 1 egy réteget indít az aktuális réteg alatt az összes alszinttel.
page_id
az oldal összes almenüje megjelenik. (Az oldalazonosító az oldal szerkesztésével határozható meg az admin backendben, ez megjelenik a böngésző címsorában: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
kijelző a $aStart – ban megadott szintről indul, az itt megadott szintig.
SM2_ALL
SM2_CURR + N
SM2_CURR+3 minden szülő + aktuális + 3 alszint
SM2_START+N
a szintek attól függetlenül jelennek meg, hogy az aktuális oldal melyik szinten van.
SM2_START + 1 Start szint + egy szint alatt.
SM2_MAX+N
az aktuális szint alatti rétegek nem jelennek meg.
SM2_MAX+1 A kezdő szint és egy szint alatt.
$aOptions
például mind a TRIM, mind a PRETTY meghatározásához használja a következőket : (SM2_TRIM | SM2_PRETTY).
csoport 1
——-
ebből a csoportból mindig egy zászlót kell megadni. Ezek a zászlók határozzák meg, hogy a menüfa testvérelemei hogyan vannak elnyomva a kimeneten.
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
minden olyan elem almenüje, amely nem szerepel az elérési útvonalon.
eltávolításra kerül.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
menüpontot és az ahhoz vezető összes menüpontot.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
csoport 2
——-
ezek a zászlók opcionálisak, tetszőleges számban kombinálhatók.
SM2_NUMCLASS
SM2_ALLINFO
ez meglehetősen magas memóriafelhasználást okoz, ezért
– nek kell lennie, ezért óvatosan kell használni.
ez azt jelenti, hogy például a kulcsszavak, az oldalleírás és
minden egyéb rendelkezésre álló információ betölthető, amely általában nem
.
kérjük, vegye figyelembe: ezt a jelzőt be kell állítani az első híváskor schow_menu2
használható a megfelelő menüazonosítóhoz, vagy a
– vel együtt SM2_NOCACHE, különben nincs hatása.
SM2_NOCACHE
SM2_PRETTY
sortöréssel olvasható formában jeleníti meg. Ez különösen hasznos a menü kimenetének hibakeresésekor.
SM2_BUFFER
SM2_CURRTREE
csak az aktuális menüág menüpontjai jelennek meg.
ha szükséges, ez a zászló kombinálható az 1. csoport bármely zászlójával.
SM2_ESCAPE
erre régebbi WebsiteBaker telepítéseknél lehet szükség.
egy érvényes HTML kimenet létrehozásához.
SM2_SHOWHIDDEN
használja a privát oldalakat arra az időre, amikor el szeretné rejteni az oldalakat, kivéve, ha aktívak. A 4.8-as verzióval való kompatibilitás érdekében adja meg ezt a jelzőt, hogy a rejtett oldalak aktív állapotban láthatóvá váljanak.
SM2_XHTML_STRICT
SM2_NO_TITLE
ehhez a paraméterhez van egy kiterjesztett mód is, ahol az opciókat asszociatív tömbként adják át. A részletekért lásd a Speciális beállítások részt. A legtöbb alkalmazás esetében azonban erre nincs szükség.
$aItemOpen
ha ez a paraméter értéke false, az alapértelmezett formátum string
‘</a>’, hogy biztosítsa a kompatibilitást a WebsiteBaker standard függvény show_menu().
mivel a CSS osztályokkal történő formázás gyakran könnyebb, ha a <a> címkére alkalmazzák, ajánlott a következő formátumú karakterláncot használni: ‘<li></a>’.
ez a paraméter a menü formázási osztályának példányaként is használható. Részletesebb leírás a formázó részben található. Ha itt van megadva formázó, akkor a $aItemOpen utáni összes argumentum figyelmen kívül marad.
$aItemClose
ha ez a paraméter false értékre van állítva, akkor az alapértelmezett ‘</li> ‘ kerül felhasználásra.
$aMenuOpen
ha ez a paraméter false értékre van állítva, akkor az alapértelmezett ” értéket használja.
$aMenuClose
ha ez a paraméter false értékre van állítva, akkor az alapértelmezett ‘</ul>’ kerül felhasználásra.
$aTopItemOpen
$aTopMenuOpen
ADVANCED OPTIONSup
a $aoptions paraméter kétféleképpen használható. Először is, amint azt a paraméterek részben fentebb leírtuk, ennek a típusnak elegendőnek kell lennie a használati esetek túlnyomó többségéhez. Ahhoz azonban, hogy speciális esetekben a speciális opciókat kezelni lehessen, a szükséges értékeket asszociatív tömbként kell megadni.
kérjük, vegye figyelembe: az SM2_ * zászlók itt is kötelezőek, és ‘zászlóként’kell átadni őket.
ez számos szintet határoz meg, amelyek mindig megjelennek a $aStart-ban meghatározott menüszinthez képest. Ez okozza a SM2_TRIM zászló figyelmen kívül kell hagyni ezeket a szinteket.
a tömb használatához ajánlott először létrehozni, majd megadni a $ aOptions paramétert a létrehozott tömbbel:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
FORMAT STRINGSup
a következő címkék használhatók a $aitemopen és $aMenuOpen formátumú karakterláncokban, és azokat a megfelelő szöveggel kell helyettesíteni.
<a > címke osztály nélkül:
'<a href="" target="">' |
|
<a > tag osztály:
'<a href="" target="" class="">' |
|
<li> címke osztály:
'<li class="">' |
|
<ul> tag with osztály:
'<ul class="">' |
|
az oldal osztályainak listája | |
a menücím szövege (HTML entitás megszökött, kivéve, ha az SM2_NOESCAPE zászló be van állítva) |
|
a normál ábrázolású képfájl URL – je | |
az URL-t egy képfájlt aktív / lebeg kijelző | |
az oldal címének szövege (HTML entitás megszökött, kivéve, ha az SM2_NOESCAPE zászló be van állítva) |
|
az oldalhoz kapcsolódó képfájl URL-címe | |
a <a> címke oldalainak URL-je | |
a <a> címke oldalcélja | |
az aktuális menüpont Oldalazonosítója. | |
a szülő menüpont Oldalazonosítója. | |
Ön oldalszint, ez ugyanaz a szám, amelyet a “menu-N” CSS címkében használnak. | |
az aktuális menüpont testvéreinek száma. | |
az összes testvér száma ebben a menüben. | |
feltétel (részletekért lásd a “Feltételes formázás” részt) |
a következő címkék csak akkor érhetők el, ha az SM2_ALLINFO jelző be van állítva.
oldal leírása | |
az oldal kulcsszavai |
Feltételes formázás up
a feltételes formázási utasítás a következő formák egyikét öltheti:
B
ez bármilyen karakterlánc lehet, amely nem tartalmazza a’} ‘karaktert.
tartalmazhat. Tartalmazhat bármilyen formátumú karakterláncot a
format Strings ‘ szakaszból, de nincs további feltétel teszt (mert a ‘}’ karakter nem megengedett).
C
ez bármilyen karakterlánc lehet, amely nem tartalmazza a’} ‘karaktert.
tartalmazhat. Tartalmazhat bármilyen formátumú karakterláncot a
format Strings ‘ szakaszból, de nincs további feltétel teszt (mert a ‘}’ karakter nem megengedett).
a feltétel egy vagy több logikai összehasonlítás kombinációja.
ha egynél több összehasonlításra van szükség, akkor össze kell kapcsolni a többi összehasonlítással
összekapcsolható a || (logikai VAGY – VAGY) VAGY && (logikai ÉS – és) használatával.
egyetlen összehasonlítás a bal operandusból, az operátorból és a jobb operandusból áll.
pl. X = = Y-ahol X a bal operandus, = = az operátor és Y A jobb operandus.
osztály | ellenőrizze, hogy létezik-e ez az osztály. Csak a “= = “és”!= “operátorok megengedettek. Ebben az esetben az operátorok jelentése “tartalmaz” vagy “nem tartalmaz” helyett “egyenlő” vagy “nem egyenlő”. |
szint | az oldal szintjének ellenőrzése. |
sib | ellenőrizze a testvérek számát az aktuális oldalon. |
sibCount | ellenőrizze a testvérek teljes számát az aktuális menüben. |
id | ellenőrizze az oldal azonosítóját. |
target | a target specifikáció ellenőrzése. |
< | kevesebb, mint |
<= | kisebb vagy egyenlő |
== | egyenlő |
!= | nem egyenlő |
>= | nagyobb vagy egyenlő |
> | nagyobb, mint |
class | a “Menu-*” osztálynevek egyike a “kimenet” szakaszban meghatározottak szerint. |
szint | ellenőrizze az oldalszintet a következő értékekkel:
|
id | ellenőrizze az oldalazonosítót a következő értékekkel:
|
sib | pozitív egész szám vagy “sibCount” a testvérek számának ellenőrzéséhez ebben a menüben. |
sibCount | pozitív egész szám |
cél | egy karakterlánc, amely egy lehetséges cél specifikációt képvisel. |
van egy almenü | |
ha a menü első bejegyzése | |
nem az első elem a menüben | |
ha a menü utolsó bejegyzése | |
a legfelső szinten található | |
nincs a legfelső szinten | |
ha a menü második bejegyzése | |
ha EGY menüben több bejegyzés van | |
van egy menüben ez nem rendelkezik pontosan 2 elemek | |
testvérmenüben vagy egy testvérmenü almenüjében található | |
az aktuális azonosító szülőpontja | |
a ‘_self’ karakterlánc a target attribútumban található. |
ha egy else záradékot adunk hozzá, akkor minden más esetben végrehajtásra kerül.
például a” foo ” mindig végrehajtásra kerül, ha az IF ellenőrzés helytelen, így:
nem a menü második eleme | |
nincs olyan menüben, amely kettőnél több bejegyzést tartalmaz |
az első vagy a negyedik vagy magasabb bejegyzés a menüben | |
ha az aktuális bejegyzés almenüvel rendelkezik |
kérjük, vegye figyelembe:
minden ellenőrzést a feljegyzés sorrendjében hajtanak végre, mert:
- nincs ellenőrzés a lehetséges hurkokra (minden ellenőrzés mindig végrehajtásra kerül).
- az ellenőrzések nincsenek csoportosítva (az ellenőrzések zárójelei nem támogatottak)
- mindkét elem értéke azonos.
Formaterup
Figyelem: Ez egy fejlett és ritkán használt funkció!
a PHP programozás széles körű ismereteivel lehetőség van a show_menu2 előre definiált
formázásának használatára a sajátjával.
az include.php a show_menu2 láthatjuk, hogyan kell írni a formázó.
a használni kívánt API így néz ki:
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() { }};
WebsiteBakeris megjelent a GNU General Public License