show_menu2, verze 4.9 x
Show_Menu2 je úryvek kódu pro CMS WebsiteBaker. Vzhledem k tomu, WebsiteBaker 2.7 je součástí CMS.
původní funkce show_menu je zcela nahrazena a rozšířena o show_menu2. Všechna data potřebná k vytvoření nabídky jsou generována jediným databázovým dotazem. Rozsáhlými možnostmi nastavení vygenerovaného HTML kódu jsou všechny možné typy nabídek (seznamy, strouhanka, sitemapy atd.) mohou být generovány.
- instalace
- pomocí Show_Menu2
- FAQ
- funkce
- HTML výstup
- parametr
- Pokročilé možnosti
- format Strings
- Podmíněné formátování
- Formatter
INSTALLATIONup
vzhledem k tomu, show_menu2 je obvykle přítomen v Websitebaker, není nutná žádná instalace. Pokud na rozdíl od očekávání neexistuje, můžete si ji stáhnout zde.
použití SHOW_MENU2up
Chcete-li použít show_menu2, musíte upravit šablonu, kde chcete zobrazit nabídku. Upozornění: pokud jsou nahrazeny staré volání menu, musí být také použity odpovídající nové parametry, které show_menu2 potřebuje.
ve většině případů postačuje standardní volání s alespoň 4 parametry show_menu2. V tomto případě se použijí výchozí hodnoty, čímž se vytvoří nabídka, která zobrazí aktuální stránku a podstránky aktuální stránky:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
upozornění: volání do show_menu2 je PHP a musí být normálně uzavřeno znaky PHP kódu (pokud hovor není již uvnitř PHP kódu):
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
toto výchozí menu již vytváří kompletní nabídku na základě seznamu s několika třídami, které umožňují snadné formátování pomocí CSS. Například třída „menu-current“ je přidána ke značce <li> aktuální položky nabídky. Navíc každá položka nabídky podpoložek obsahuje třídu „menu-expand“. To umožňuje vytvořit velmi diferencovaná pravidla CSS pro každou položku nabídky.
například:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
část „výstup HTML“ obsahuje podrobný popis, které třídy jsou přiřazeny ke kterému prvku. Použitím různých parametrů ve volání funkce show_menu2 je také možné vytvořit poměrně rozsáhlé a odlišné struktury nabídek. Chcete-li například zobrazit pouze položky nabídky z nejvyšší úrovně struktury nabídky, můžete použít následující volání:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
nebo například zobrazit až dvě podúrovně aktuální stránky:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
existuje mnoho možností, jak vytvořit různé struktury nabídek. Mnoho příkladů lze nalézt na demo webových stránkách: KLICK
FAQup
Q: nejsem programátor. Neexistuje jednodušší dokumentace?
v: Ne, protože toto je již jednoduchá dokumentace.
otázka: Jak mohu vytvořit rozbalovací nabídku?
A: to nemá nic společného s show_menu2. Chcete-li vytvořit rozbalovací nabídku, stačí upravit kód CSS příslušné šablony. Potřebné úpravy lze nalézt např. v šabloně „allcss2“ z úložiště doplňků WebsiteBaker-> https://addon.websitebaker.org/
otázka: Proč menu zmizí poté, co jsem použil vyhledávací funkci na vícejazyčné stránce WebsiteBaker?
A: v použité šabloně chybí potřebné řádky:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
otázka: vícejazyčný? To zní skvěle. Jak to děláš?
v: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
Q: pokaždé, když je stránka vyvolána, SM2 vygeneruje následující varovnou zprávu:
“ show_menu2 error: $aoptions je neplatná. Žádné vlajky ze skupiny 1 dodáváno!“
A: Chybné hodnoty nebo nesprávný počet hodnot byly předány funkci.
v části Parametry najdete správné hodnoty příznaku, které mají být předány parametru $aoptions.
otázka: Jak mohu použít jinou třídu / obrázek/barvu / widget pro každou položku v nabídce?
A: použijte řetězec formátu v řetězci $aitemopen. Vytvořte jedinečnou třídu nebo id pro každou položku nabídky a poté odkazujte na tuto položku v CSS nebo JavaScriptu a dělejte, co chcete.
přidání jedinečné třídy pro každou položku nabídky (nebo podobnou):
"<li><a href="" target="" class=" p"></a>"
… vytváření položek nabídky jako …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
odkazujte na to ve vašem CSS jako:
a.p45 { color: red; }
přidání jedinečného ID pro každou položku nabídky (nebo podobně):
"<li><a href="" target="" class=""></a>"
… vytváření položek nabídky jako …
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
odkazujte na to ve vašem CSS jako:
a#p45 { color: red; }
Všimněte si, že ID lze použít pouze v případě, že je tato nabídka vygenerována a zobrazena pouze jednou na stránce (protože ID HTML musí být na stránce jedinečné).
FUNCTIONup
úplné volání a výchozí hodnoty parametrů pro show_menu2 jsou následující:
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);
sekce „parametry“ obsahuje podrobný popis každého jednotlivého parametru.
každý parametr musí být použit naprosto správně. Následující pravidla mohou pomoci:
$aMenu = 0 je ve většině případů nejlepší hodnota.
$aStart musí být buď ID stránky nebo hodnota začínající na „SM2_“.
$aMaxLevel může získat pouze hodnoty začínající na „SM2_“.
$aOptions kromě několika zvláštních případů jsou povoleny pouze hodnoty začínající na „SM2_“.
všechny ostatní parametry obsahují značky (HTML), které řídí výstup nabídky.
počínaje $aitemopen každý parametr může být předán hodnotu false získat příslušnou výchozí hodnotu.
to lze použít například k vytvoření číslovaného seznamu, zatímco výchozí hodnoty se stále používají pro jednotlivé položky nabídky:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
upozornění: až do a včetně $aOptions musí být všechny parametry předány explicitně!
výstup HTML
výstup HTML do značné míry závisí na tom, které parametry jsou předány funkci. Bez ohledu na to se pro každé menu vždy používají následující třídy, přičemž jednotlivé položky nabídky mohou mít v případě potřeby také několik tříd.
třída | přiřazení |
---|---|
menu-top | pouze první položka nabídky. |
menu-parent | libovolná položka hlavní nabídky. |
menu-aktuální | pouze položka nabídky aktuální stránky. |
menu-sourozenec | všichni „sourozenci“ aktuální stránky. |
menu-podřízené | libovolné podnabídky aktuální stránky. |
menu-rozbalte | libovolnou nabídku, která má podnabídku. |
menu-první | první položka libovolné nabídky nebo podnabídky. |
menu-Poslední | poslední položka libovolné nabídky nebo podnabídky. |
menu-N | každá položka nabídky, kde N znamená absolutní hloubku nabídky, začínající 0, příslušné položky nabídky. takže nejvyšší úroveň je vždy menu-0, další úroveň je menu-1 a tak dále. |
menu-child-N | každá podnabídka aktuálních stránek, kde N znamená relativní hloubku podnabídky, začínající 0. |
příklad výstupu 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 začíná vrstva pod nejvyšší vrstvou
SM2_ROOT+2 začíná dvě úrovně pod nejvyšší úrovní
SM2_CURRR+N
SM2_ROOT + 1 začíná vrstva pod nejvyšší úrovní
SM2_CURRR + N
SM2_CURRR+1 spustí vrstvu pod aktuální vrstvou se všemi podúrovněmi.
page_id
zobrazí se všechny podnabídky této stránky. (ID stránky lze určit úpravou stránky v administrátorském backendu, zobrazí se v adresním řádku prohlížeče: http://SITE/admin/pages/modify.php?page_id=35
$aMaxLevel
začíná od úrovně zadané v $aStart až po úroveň zde uvedenou.
SM2_ALL
SM2_CURRR+N
SM2_CURRENT+3 All parent + current + 3 sublevels
SM2_START+N
úrovně se zobrazují bez ohledu na úroveň, na které je aktuální stránka zapnutá.
SM2_START+1 počáteční úroveň + o jednu úroveň níže.
SM2_MAX+N
vrstvy pod aktuální úrovní se nezobrazují.
SM2_MAX+1 počáteční úroveň a jedna úroveň pod ní.
$Aoptions
Chcete-li například definovat TRIM I PRETTY, použijte : (SM2_TRIM | SM2_PRETTY).
skupina 1
——-
z této skupiny musí být vždy zadán jeden příznak. Tyto příznaky určují, jak jsou sourozenecké prvky ve stromu nabídek potlačeny ve výstupu.
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
všechny podnabídky položek, které nejsou v cestě.
jsou odstraněny.
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2
SM2_CRUMB
a všechny položky nabídky, které k ní vedou.
A-1 -> B-2 -> C-2 (CURRENT)
SM2_SIBLING
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
skupina 2
——-
tyto příznaky jsou volitelné, lze je kombinovat v libovolném počtu.
SM2_NUMCLASS
SM2_ALLINFO
to způsobuje poměrně vysokou spotřebu paměti, a proto by měla být
používána s opatrností.
to například znamená, že lze načíst klíčová slova, popis stránky a
všechny ostatní dostupné informace, které obvykle nejsou
.
upozorňujeme: tento příznak musí být nastaven při prvním volání schow_menu2
lze použít pro příslušné ID nabídky, nebo ve spojení s
s SM2_NOCACHE, jinak to nemá žádný účinek.
SM2_NOCACHE
SM2_PRETTY
řádek se přeruší do čitelné podoby. To je zvláště užitečné při ladění výstupu nabídky.
SM2_BUFFER
SM2_CURRRTREE
zobrazí se pouze položky nabídky aktuální větve nabídky.
v případě potřeby lze tento příznak kombinovat s jakýmkoli příznakem ze skupiny 1.
SM2_ESCAPE
to může být vyžadováno pro starší instalace WebsiteBaker.
pro vygenerování platného HTML výstupu.
SM2_SHOWHIDDEN
použijte soukromé stránky pro čas, kdy chcete stránky skrýt, s výjimkou případů, kdy jsou aktivní. Pro kompatibilitu s verzí 4.8 však dodejte tento příznak, aby se skryté stránky mohly zviditelnit, když jsou aktivní.
SM2_XHTML_STRICT
SM2_NO_TITLE
pro tento parametr existuje také rozšířený režim, kde jsou volby předávány jako asociativní pole. Podrobnosti naleznete v části Pokročilé možnosti. Pro většinu aplikací to však není nutné.
$aItemOpen
pokud je tento parametr nastaven na hodnotu false, výchozí formátový řetězec
‚ < / a>‘ pro zajištění kompatibility se standardní funkcí WebsiteBaker show_menu().
vzhledem k tomu, že formátování pomocí tříd CSS je často jednodušší při použití na značku <a>, doporučuje se použít následující formátovací řetězec: ‚<li></a>‘.
tento parametr lze také použít jako instanci třídy formátování pro nabídku. Podrobnější popis naleznete v sekci FORMATTER. Pokud je zde zadán formátovač, všechny argumenty po $aitemopen jsou ignorovány.
$aitemclose
pokud je tento parametr nastaven na hodnotu false, Použije se výchozí ‚< / li>‘.
$aMenuOpen
pokud je tento parametr nastaven na hodnotu false, Použije se výchozí hodnota“.
$aMenuClose
pokud je tento parametr nastaven na hodnotu false, Použije se výchozí ‚< / ul>‘.
$aTopItemOpen
$aTopMenuOpen
ADVANCED OPTIONSup
parametr $aoptions lze použít dvěma způsoby. Za prvé, jak je popsáno výše v části Parametry, tento typ by měl stačit pro převážnou většinu případů použití. Aby však bylo možné ve zvláštních případech řešit speciální opce, musí být požadované hodnoty poskytnuty jako asociativní pole.
upozornění: SM2_ * vlajky jsou také nutné a musí být předány jako ‚vlajky‘.
to definuje počet úrovní, které jsou vždy zobrazeny vzhledem k úrovni menu definované v $aStart. To způsobí, že příznak SM2_TRIM bude pro tyto úrovně ignorován.
Chcete-li použít toto pole, doporučujeme jej nejprve vytvořit a poté zadat parametr $aoptions vytvořeným polem:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
formát STRINGSup
následující značky lze použít ve formátu strings pro $aitemopen a $aMenuOpen a měly by být nahrazeny odpovídajícím textem.
<a> značka bez třídy:
'<a href="" target="">' |
|
<a> značka s třídou:
'<a href="" target="" class="">' |
|
<li> štítek s třídou:
'<li class="">' |
|
<ul> štítek s třídou:
'<ul class="">' |
|
Seznam tříd pro tuto stránku | |
Text názvu nabídky (entita HTML unikla, pokud není nastaven příznak SM2_NOESCAPE) |
|
URL do obrazového souboru s normální reprezentací | |
adresa URL obrazového souboru s aktivním zobrazením / hover | |
text názvu stránky (entita HTML unikla, pokud není nastaven příznak SM2_NOESCAPE) |
|
adresa URL souboru obrázku souvisejícího se stránkou | |
URL stránek pro značku <a> | |
cíl stránky pro značku <a> | |
ID stránky aktuální položky nabídky. | |
ID stránky nadřazené položky nabídky. | |
vy úroveň stránky, To je stejné číslo použité v“ menu-N “ CSS tag. | |
počet sourozenců aktuální položky nabídky. | |
počet všech sourozenců v této nabídce. | |
podmínka (podrobnosti viz část „Podmíněné formátování“) |
následující značky jsou k dispozici pouze v případě, že je nastaven příznak SM2_ALLINFO.
popis stránky | |
klíčová slova stránky |
Podmíněné formátování
příkaz podmíněné formátování může mít jednu z následujících forem:
B
může to být libovolný řetězec, který neobsahuje znak‘}‘.
může obsahovat. Může obsahovat libovolný formátovací řetězec z oddílu
formátovací řetězce‘, ale žádný další test stavu (protože znak‘} ‚ není povolen).
C
může to být libovolný řetězec, který neobsahuje znak‘}‘.
může obsahovat. Může obsahovat libovolný formátovací řetězec z oddílu
formátovací řetězce‘, ale žádný další test stavu (protože znak‘} ‚ není povolen).
podmínka je kombinací jednoho nebo více booleovských srovnání.
pokud je vyžadováno více než jedno srovnání, musí být kombinováno s ostatními srovnáními
lze propojit pomocí || (boolean or – OR) nebo && (boolean and-AND).
jediné srovnání se skládá z levého operandu, operátoru a pravého operandu.
např. X = = Y-kde X je levý operand, = = operátor a Y pravý operand.
třída | zkontrolujte, zda tato třída existuje. Pouze „= = „a“!= „operátoři jsou povoleni. V tomto případě mají operátoři význam „obsahuje “ nebo“ neobsahuje “ místo „je stejný“ nebo „není stejný“. |
úroveň | kontrola úrovně stránky. |
sib | zkontrolujte počet sourozenců na aktuální stránce. |
sibCount | zkontrolujte celkový počet sourozenců v aktuálním menu. |
id | zkontrolujte ID stránky. |
cíl | ověření SPECIFIKACE cíle. |
< | méně než |
<= | menší nebo rovno |
== | rovná |
!= | není rovno |
>= | větší nebo rovno |
> | větší než |
třída | jeden z názvů tříd “ menu -*“, jak je uvedeno v části“ výstup“. |
úroveň | zkontrolujte úroveň stránky podle následujících hodnot:
|
id | zkontrolujte id stránky proti následujícím hodnotám:
|
sib | kladné celé číslo nebo „sibCount“ pro kontrolu počtu sourozenců v této nabídce. |
sibCount | kladné celé číslo |
cíl | řetězec, který představuje možnou specifikaci cíle. |
má podnabídku | |
pokud je první položka v nabídce | |
není první položka v nabídce | |
pokud je poslední položka v nabídce | |
Nachází se na nejvyšší úrovni | |
není na nejvyšší úrovni | |
pokud je druhá položka v nabídce | |
pokud je v nabídce s více než jednou položkou | |
je v nabídce to nemá přesně 2 položky | |
je v sourozeneckém menu nebo v podnabídce sourozeneckého menu | |
je nadřazený bod aktuálního id | |
řetězec ‚_self‘ je obsažen v atributu target. |
pokud je přidána klauzule else, bude provedena ve všech ostatních případech.
například „foo“ se provádí vždy, když je kontrola if Chybná, takže:
není druhá položka v nabídce | |
není v nabídce s více než dvěma položkami |
je první položka nebo je čtvrtá nebo vyšší položka v nabídce | |
pokud je aktuální položka a má podnabídku |
upozornění:
všechny kontroly budou provedeny v pořadí, v jakém jsou zaznamenány, protože:
- neexistuje žádná kontrola možných smyček (všechny kontroly jsou vždy prováděny).
- kontroly nejsou seskupeny (závorky kontrol nejsou podporovány)
- obě tyto věci mají stejnou hodnotu.
FORMATTERup
pozor: toto je pokročilá a zřídka používaná funkce!
s rozsáhlými znalostmi v PHP programování je možné použít předdefinované
formátování show_menu2 s vlastní.
v zahrnutí.php show_menu2 můžete vidět, jak psát formátovač.
API, které musí být použito, vypadá takto:
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 propuštěn pod GNU General Public License