Viacúrovňová ponuka MODX pomocou Bootstrapu. PdoMenu - vytvorenie menu v MODX Wayfinder, názvy medzi rozsahom sa nezobrazujú
Ale to nie je pre nás ;).
Všetko urobíme od začiatku. Prečo sme to (ja) potrebovali, keď už existujú hotové možnosti? Pretože takto sa mi to páči viac. Pretože si myslím, že tento prístup je najsprávnejší. Pretože vieme, ako vytvoriť svoj vlastný, môžeme ľahko pochopiť kód niekoho iného, zmeniť ho, opraviť chyby alebo ho doplniť o funkcie potrebné v konkrétnom prípade. A nakoniec, vyrobiť si vlastné je často také pekné!
Nasledujúci príbeh bude predpokladať, že čitateľ má minimálne znalosti o programovaní v PHP. Teoreticky tí ľudia, ktorí kódu vôbec nerozumejú, budú môcť kód skopírovať a reprodukovať všetky akcie, o ktorých sa bude diskutovať nižšie. Môže však byť pre nich lepšie použiť hotové úryvky a la Ditto, pretože poskytujú veľa možností externej konfigurácie bez toho, aby sa dostali do hlavného kódu.
Nechcem polemizovať o tom, čo je pre užívateľa lepšie – vziať si hotový alebo si vyvinúť vlastný... Oba prípady majú svoje pre a proti. Pre mňa osobne je viac výhod v druhej možnosti. Tiež sa každý čitateľ rozhodne sám.
Poďme sa teda opäť pozrieť na tie naše. Keďže na našej webovej stránke je pomerne veľa rôznych softvérových častí a niekde musíme začať, tak poďme naprogramovať...
Horné menu
Pod pojmom „horné menu“ rozumiem súbor odkazov na stránky v hornej časti webu (pozri obrázok nižšie):
Prvú ukážku tvorby úryvku popíšem veľmi podrobne v budúcnosti sa zameriam hlavne na najvýraznejšie detaily;
Porovnajme to s naším stromom stránok v systéme správy, ktorý sme vybudovali v predchádzajúcom článku:
Ako je možné vidieť na obrázku, v strome stránky sú zvýraznené štyri dokumenty (konkrétne „Blog“, „O autoroch“, „Fotografie“ a „ Spätná väzba"), ktorý následne vytvorí odkazy v hornom menu.
Dovoľte mi tiež pripomenúť, že predtým sme skryli dokumenty, ktoré nechceme zobrazovať v ponuke. Napríklad v nastaveniach dokumentu s názvom „Vyhľadávanie na stránke“ sme odstránili začiarkavacie políčko „Zobraziť v ponuke“ a zvyšné dva dokumenty „Odkazy“ a „Kategórie“ na stránke sme skryli zrušením začiarknutia políčka „Publikovať“ v poli nastavenia dokumentu (karta „Nastavenia stránky“) v nastaveniach dokumentu).
V predchádzajúcom článku sme teda pripravili horné menu v ovládacom systéme.
Prejdime teraz k problematike zobrazovania našich akcií priamo na stránke.
Väčšinu programov na stránke vykonávajú tzv. "", t.j. jednotlivé časti kódu (možno ich chápať aj ako jednotlivé funkcie alebo podprogramy) v PHP. Preto, aby sme v MODx implementovali zobrazenie horného menu, musíme vytvoriť aj nový snippet, naprogramovať ho a v šablóne na správnom mieste pridať volanie tohto snippetu.
Prejdeme do systému správy, otvoríme kartu „Zdroje“ -> „Správa zdrojov“ -> kartu „Úryvky“ a klikneme na odkaz „Nový úryvok“. Do poľa „Názov úryvku“ zadajte „TopMenu“ bez úvodzoviek a zatiaľ len uložte prázdny úryvok bez kódu. Po uložení uvidíme názov nášho úryvku na karte „Úryvky“.
Dovoľte mi pripomenúť, že v našej šablóne sme umiestnili hornú ponuku do časti „TOPMENU“. Prepnime na kartu "Chunks" a otvorme " " blok. V obsahu tohto bloku uvidíme nasledujúci kód:
- Blog
- O autoroch
- Fotografie
- Spätná väzba
Tento kód tvorí naše menu. Poďme to okomentovať a pridať volanie do úryvku „TopMenu“ v časti:
[]
Tu opäť budeme musieť trochu odbočiť, aby sme vysvetlili význam tejto konštrukcie []. Faktom je, že pomocou konštrukcií ako [] alebo [!SnippetName!] môžeme volať úryvky kdekoľvek v našich šablónach, blokoch a dokonca aj na ľubovoľnej jednotlivej stránke lokality.
V tomto prípade konštrukcia [] označuje hovor cacheovateľnéúryvok, t.j. volanie dynamického podprogramu, ktorého výsledok sa vypočíta a vykoná raz a následne pri načítaní stránky, kde sa volá tento snippet, bude výsledok nezmenený, pretože úryvok sa už znova nevolá. Týmto spôsobom šetríme zdroje na našom webovom serveri (a to je vždy veľmi dôležité, keď je zdroj vysoký).
Sú však situácie, keď potrebujete útržkový kód stále znova spúšťať a výsledky nemôžete uložiť do vyrovnávacej pamäte. V takýchto prípadoch sa používa konštrukcia [!SnippetName!], ktorá vždy vynúti vykonanie úryvku bez ukladania do vyrovnávacej pamäte. Analogicky sa táto konštrukcia nazýva volanie neuložiteľné do vyrovnávacej pamäteúryvok.
Uložme teda časť „TOPMENU“ a aktualizujme stránku lokality. Hmm, napodiv horné menu zmizlo. Ale je to naozaj také prekvapujúce? Zakomentovaním kódu HTML ponuky v bloku sme skryli jeho zobrazenie v prehliadači (skontrolujte to pri pohľade na zdrojový kód HTML stránky). Ale náš úryvok „TopMenu“ nerobí nič, pretože doň ešte nič nebolo pridané. Napravme tento nedostatok :).
Vráťme sa na záložku „Úryvky“, otvorme vytvorený úryvok „TopMenu“ a skúsme otestovať jeho možnosti... Trpezlivosť, moji pokročilí čitatelia, nie každému sú tieto detaily známe.
Najprv napíšme najjednoduchší kód (bežný kód PHP):
echo "Testovanie...";
?>
Pred uložením vyberte „Pokračovať v úpravách“, pretože budeme musieť zmeniť obsah nášho úryvku viackrát a potom úryvok uložíme. Obnovme stránku webu a pozrime sa na miesto horného menu... no, úprimne povedané, na prvý pohľad neuvidíme takmer žiadne zmeny, okrem mierne rozšíreného modrého pozadia menu. Stlačíme "CRTL+A" na výber celého textu na stránke lokality a uvidíme, že náš úryvok napriek tomu zobrazuje text "Testovanie..." namiesto ponuky, len farba textu zodpovedá farbe pozadia .
Zmeňme útržkový kód na nasledujúci:
ozvena" Testuje sa...";
?>
Teraz jasne vidíme, že náš úryvok funguje a dokonca (!) zobrazuje nejaký text. To je skvelé, ale na našu úlohu to nestačí, pretože musíme zabezpečiť, aby náš úryvok zobrazoval odkazy z riadiaceho systému a presne v tom istom kóde HTML, ktorý sme komentovali v časti „TOPMENU“.
A opäť trochu rozptýlenia...
Celý systém vzťahov medzi dokumentmi v MODx je postavený na princípe: každý „nadradený dokument“ obsahuje od nuly po veľa „podriadených dokumentov“ („rodič“ -> „deti“).
Každý dokument v databáze MODx má svoj vlastný jedinečný identifikátor „ID“ - toto je číslo, ktoré vidíme v zátvorkách v strome stránok vedľa každého dokumentu.
Mimochodom, tento jedinečný identifikátor má len jeden význam – jednoznačne identifikuje konkrétny dokument v systéme riadenia a nič viac! Osobitne zdôrazňujem túto skutočnosť, pretože som sa stretol s opakovanými pokusmi o zmenu týchto identifikátorov na rôzne účely... Treba si hneď zapamätať, že je to jednoducho zbytočné, preto sa nepokúšajte tieto čísla meniť. Nemali by ste im venovať veľkú pozornosť; zvyčajne sa tieto čísla jednoducho používajú na generovanie odkazov na určité dokumenty.
MODx databáza vytvára pre každý dokument aj špeciálne „rodičovské“ pole. Hodnota tohto poľa je číslo označujúce buď jedinečný identifikátor nadradeného dokumentu, alebo, ak je dokument v koreni stromu, nulu. Vždy tak môžete jednoznačne určiť, ktorý doklad je pre daný doklad nadradený doklad.
Aby ste jasne videli, o čom sme práve hovorili, otvorte phpMyAdmin, vyberte svoju databázu a nájdite tabuľku (PREFIX)site_content, kde (PREFIX) je vaša predpona, ktorú ste zadali počas inštalácie. Uvidíte mnoho polí, v ktorých sú uložené špecifické údaje dokumentu, vrátane „ID“ – jedinečný identifikátor, „nadradený“ – číslo nadradeného dokumentu, „názov stránky“ – názov stránky a iné.
Takže pomocou týchto informácií o princípe ukladania a spájania dokumentov v MODx môžeme pochopiť, ako získať potrebné údaje na zobrazenie odkazov v hornom menu: musíme nájsť v databáze všetky dokumenty, ktoré sa nachádzajú v koreňovom adresári stránky. strom, t.j. majú v poli „rodič“ hodnotu nula.
Používanie jazyk SQL, podobná požiadavka je popísaná asi takto (Môžete skúsiť zadať túto žiadosť vo vstupnom poli SQL v phpMyAdmin po nahradení "modx_" vašou predponou):
VYBRAŤ *
Z `modx_site_content`
WHERE "rodič" = 0;
Takáto žiadosť nám však vráti úplne všetky dokumenty z koreňového adresára webu, čo nie je úplne správne, na základe hlavnej úlohy - zobrazovať odkazy iba na tie dokumenty, ktoré majú:
- zverejnený stav (v databáze je táto položka reprezentovaná poľom „zverejnené“, kde hodnota = 1 znamená, že dokument je zverejnený a hodnota = 0 znamená nepublikovaný).
- undeleted (pole „vymazané“, kde 1 je vymazané a 0 nie je vymazané),
- a ktoré majú nastavenú možnosť „Zobraziť v menu“ (pole „skryť menu“, kde 1 znamená skryť a 0 znamená zobraziť v menu).
Navyše, pri pohľade trochu dopredu, dokumenty okamžite zoradíme podľa parametra „Pozícia v menu“, ktorý určí pozíciu každého odkazu v našej ponuke.
No z pohľadu SQL je to úplne jednoduchá úloha a dá sa vyriešiť takto:
VYBRAŤ *
Z `modx_site_content`
KDE „zverejnené“ = 1
A „rodič“ = 0
A „odstránené“ = 0
AND "skryť menu" = 0
ORDER BY `menuindex` ASC;
Teoreticky je možné všetky SQL dotazy vykonávať v úryvkoch priamo pomocou PHP skripty, pripájať databázu zakaždým nanovo a robiť mnoho ďalších rutinných operácií, opakovať ich znova a znova... Ale, vidíte, to by negovalo zmysel používania rámca, ktorým náš systém riadenia určite je, pretože MODx okrem iných výhod poskytuje hotová súprava finančných prostriedkov softvérové rozhranie(API, aplikačné programové rozhranie). API sú softvérové funkcie, ktoré zjednocujú a uľahčujú mnohé procesy spracovania údajov.
Využime v našom úryvku jednu zo spomínaných funkcií API „getDocumentChildren“. Funkcia „getDocumentChildren“ prijíma nasledujúce údaje ako parametre:
- $id – číslo nadradeného dokumentu,
- $active - vybrať iba zverejnené alebo nezverejnené dokumenty (1 alebo 0),
- $deleted - vybrať iba vymazané alebo nevymazané dokumenty (1 | 0),
- $fields - polia, ktoré sú vybrané z databázy,
- $kde - osobitné podmienky, t.j. KDE stav SQL dotaz,
- $triediť – pole, podľa ktorého sa majú zoradiť výsledky
- $direction - smer triedenia, môže nadobúdať hodnoty ASC alebo DESC, t.j. triediť od najmenšej po najväčšiu hodnotu alebo naopak
- $limit - limit žiadosti, t.j. LIMIT podmienka v dotaze SQL
$results = $modx->getDocumentChildren(
$id = 0,
$aktívny = 1,
$vymazané = 0,
$where = "hidemenu = 0",
$sort="index ponuky",
$dir="ASC",
$limit
);
Tlač ("
Foreach($results as $key => $value) (
print_r($hodnota);
}
Tlač ("");
?>
Uložte úryvok a obnovte stránku. V dôsledku vykonania aktualizovaného úryvku „TopMenu“ uvidíte zoznam polí a ich hodnôt zoradených podľa hodnôt poľa „menuindex“ od najmenšieho po najväčšie. Skúste zmeniť parameter $dir="ASC" na $dir="DESC" - v dôsledku toho sa polia prebudujú a dokument s najvyššou hodnotou poľa "menuindex" sa zobrazí ako prvý dokument.
Skúsení programátori pravdepodobne chápu, že získaný výsledok už poskytuje všetko, čo potrebujete na zostavenie hotového menu s odkazmi. No skoro všetko. V každom prípade budem pokračovať: prepíšme kód PHP, aby sme sa čo najviac priblížili požadovanému výsledku.
$results = $modx->getDocumentChildren(
$id = 0,
$aktívny = 1,
$vymazané = 0,
"id, názov stránky, zverejnené, index ponuky, odstránené, skryť menu, názov ponuky",
$where = "hidemenu = 0",
$sort="index ponuky",
$dir="ASC",
$limit
);
$items = "";
$výstup = "";
Foreach($results as $key => $value) (
$items .="
".$value["pagetitle"]."
}
Ak ($items != "") (
$output = "
- \n";
$výstup .= $položky;
$output .="
}
Return $output;
Kód nebudeme podrobne rozoberať, keďže ide o najbežnejší PHP kód, nič viac. Ak niekto nerozumie významu akýchkoľvek konštrukcií, zanechajte komentár, alebo ešte lepšie, prejdite na príslušné fóra podpory.
Uložíme nový útržkový kód a obnovíme stránku. V dôsledku vykonania kódu uvidíme takmer to, čo sme chceli získať:
Tie. Ide už o automaticky generované odkazy, ktorých štruktúra úplne opakuje štruktúru dokumentov v MODx strome. Ak to chcete otestovať, skúste vytvoriť testovací dokument v koreňovom adresári lokality a obnovte stránku.
To však nie je všetko. Mnohí si už asi všimli, že sú tam odkazy, ale žiadne odkazy... Paradox :). Mám na mysli, že názvy dokumentov sú zobrazené v menu, ale odkazy na ne nefungujú. Je to logické, keďže zatiaľ kód odkazu namiesto skutočných ciest zobrazuje „#“.
Na vyriešenie tohto problému sa musíte dozvedieť o ďalšej mimoriadne užitočnej funkcii MODx: adresu ľubovoľnej internej stránky webu je možné získať pomocou nasledujúcej konštrukcie [~id~], kde id je jedinečné číslo požadovaný dokument, t.j. rovnaké číslo uvedené v zátvorkách vedľa názvu každého dokumentu v strome lokality. Takže pridaním takejto konštrukcie [~1~] do obsahu šablóny/kúsku/stránky
-
- index – alias dokumentu „Blog“, ak sme ako alias dokumentu zadali „index“, príp
- 1.html, ak sme do poľa „Prezývka“ pri dokumente „Blog“ nič nezadali
- ak sú priateľské odkazy zakázané, uvidíme text index.php?id=1
Prepíšme úryvok pomocou týchto informácií:
$results = $modx->getDocumentChildren(
$id = 0,
$aktívny = 1,
$vymazané = 0,
"id, názov stránky, zverejnené, index ponuky, odstránené, skryť menu, názov ponuky",
$where = "hidemenu = 0",
$sort="index ponuky",
$dir="ASC",
$limit
);
$items = "";
$výstup = "";
Foreach($results as $key => $value) (
$items .="
".$value["pagetitle"]."
}
Ak ($items != "") (
$output = "
- \n";
$výstup .= $položky;
$output .="
}
Return $output;
Zmenili sme teda # na [~".$value["id"].."~], t.j. v skutočnosti je pre každý dokument z poľa jeho jedinečné ID nahradené vo vnútri konštrukcie [~id~]. V dôsledku toho dostaneme ponuku s pracovnými odkazmi.
Ideál sme takmer dosiahli... Aj teraz je tu však ešte jeden detail, ktorý treba vziať do úvahy: dizajnér určil, že náš aktívny odkaz by mal byť zvýraznený bielym pozadím a farba odkazu by sa mala zmeniť na oranžovú.
Aby sme to dosiahli, opäť odhalíme tajomstvá MODx CMS :). V API je ukrytá funkcia $modx->documentIdentifier, ktorá vracia hodnotu jedinečného identifikátora aktuálnej stránky. Budeme ho potrebovať na určenie aktívnej stránky a jej zvýraznenie v ponuke:
$results = $modx->getDocumentChildren (
$id = 0,
$aktívny = 1,
$vymazané = 0,
"id, názov stránky, zverejnené, index ponuky, odstránené, skryť menu, názov ponuky",
$where = "hidemenu = 0",
$sort="index ponuky",
$dir="ASC",
$limit
);
$cid = $modx->identifikator dokumentu;
$items = "";
$výstup = "";
Foreach($results as $key => $value) (
if ($value["id"] == $cid) (
$aktívny = " id=\"aktívny\"";
}
inak(
$aktívny = "";
}
$items .="
".$value["pagetitle"]."
}
Ak ($items != "") (
$output = "
- \n";
$výstup .= $položky;
$output .="
}
Return $output;
No a ako to dopadlo? Podarilo sa!
Ale nemysleli ste si, že tým to všetko skončí, však? A je to tak správne. Nastavili sme si najvyššiu latku, chceme využiť maximálne možnosti MODx. A preto je tu ešte jeden malý detail, ktorý nám ušiel.
Pozrime sa bližšie na názvy polí, ktoré požadujeme pomocou funkcie getDocumentChildren: „id, pagetitle, publishing, menuindex, delete, hidemenu, menutitle“. Medzi nimi je pole ako "menutitle". Ako už názov napovedá, toto pole môže ukladať názov menu. Riadiaci systém má aj vstupné pole „Položka menu“. Toto pole je voliteľné. Logika je však taká, že ak je toto pole vyplnené, potom musíme text odkazu v menu nahradiť tým, ktorý zadal používateľ. No, urobme toto:
/********************************
Názov: Hlavné menu
Účel: Zobrazte hornú ponuku
Projekt: MODx Demosite
********************************/
$results = $modx->getDocumentChildren(
$id = 0, // ID nadradeného dokumentu
$active = 1, // Vyberte iba publikované dokumenty
$deleted = 0, // Vyberte iba nevymazané dokumenty
"id, pagetitle, publishing, menuindex, delete, hidemenu, menutitle", // Výber polí z databázy
$where = "hidemenu = 0", // Vyberte len tie dokumenty, ktoré je potrebné zverejniť v menu
$sort="menuindex", // Usporiadanie dokumentov podľa poľa index ponuky
$dir="ASC", // Usporiadanie dokumentov vo vzostupnom poradí
$limit = "" // Nenastavujeme obmedzenia (parameter LIMIT v SQL dotaze)
);
$cid = $modx->identifikator dokumentu; //získame ID aktuálnej stránky
$items = "";
$výstup = "";
Foreach($results as $key => $value) (
if ($value["id"] == $cid) (
$aktívny = " id=\"aktívny\"";
}
inak(
$aktívny = "";
}
if ($value["menutitle"] != "") (
$title = $value["menutitle"];
}
inak(
$title = $value["názov stránky"];
}
$items .="
".$title."
}
// Ak sa nám podarilo nájsť aspoň jeden položka menu,
// vytvorenie kódu ponuky HTML
if ($items != "") (
$output = "
- \n";
$výstup .= $položky;
$output .="
}
// Vráti výsledok úryvku
návrat $výstup;
Teraz skúste zadať nejaký text do vstupného poľa „Položka ponuky“ akéhokoľvek dokumentu... Funguje všetko? Úžasné!
P.S.: Niektorých čitateľov možno prekvapí, že pri sledovaní odkazov v našej ponuke sa obsah stránok nemení, aj keď sa zdá, že súdiac podľa cesty v adrese prehliadača prechádzame na nové stránky... Verte mne je to úplne normálne, pretože Absolútne všetky stránky momentálne používajú rovnakú šablónu. V tejto šablóne sme v skutočnosti urobili zatiaľ len hornú ponuku dynamickou, všetky ostatné detaily zostali nezmenené. Určite sa do toho pustíme neskôr, ale zatiaľ - nepanikárte ;).
Záver:
Takže ďalší článok dospel k logickému záveru.
Výsledky školenia:
- Snažili sme sa pochopiť účel niektorých vstupných polí v dokumentoch MODx a pozreli sme sa na ukladanie týchto informácií do databázy;
- Dozvedeli sme sa o nových špeciálnych MODx dizajnoch: [], [!SnippetName!], [~id~];
- Dozvedeli sme sa o dostupnosti špeciálneho API a využili sme niektoré funkcie API;
- A na základe týchto poznatkov sme vytvorili náš nový úryvok v MODx!
Začnime lekciou 8 MODx Revolution pre začiatočníkov. Pripomínam, že robíme webovú stránku na štúdium MODx Revolution. V minulej lekcii sme sa pozreli na koncept úryvkov, čo sú kúsky PHP kódu, ktoré nám umožňujú pridať funkcionalitu na náš web. V tejto lekcii sa pozrieme na špeciálny úryvok - Wayfinder a použijeme ho na vytvorenie dynamického menu pre našu webovú stránku.
Čo je Wayfinder?
Wayfinder je úryvok, ktorý zobrazuje neutriedený zoznam odkazov na zdroje v strome vašej lokality, typ výstupu zoznamu závisí od volania úryvku a parametrov tohto volania. Vo všeobecnosti to znamená, že keď do svojej šablóny umiestnite volanie Wayfinder, začne hľadať zdroje, ktoré spĺňajú parametre v nej uvedené, a vráti zoznam odkazov na tieto zdroje v nezoradenom formáte zoznamu alebo vo formáte, ktorý definujete.
Prečo používať Wayfinder?
Wayfinder zvyčajne používam na vytváranie dynamickej navigácie na webe, teda menu. Od väčšiny HTML šablóna ov použite na vytváranie ponúk neusporiadané zoznamy, potom je to Wayfinder perfektný nástroj na tieto účely. Pri vytváraní lokality môžete svoje adresy URL pracne vkladať do navigačnej ponuky, rovnako ako ste to robili predtým na statickej lokalite HTML. Zároveň vždy, keď potrebujete odstrániť alebo vytvoriť stránku, musíte vykonať príslušné zmeny vo svojom menu, zmeniť adresy URL. Použitím úryvku Wayfinder na dynamické generovanie ponúk sa vyhnete týmto bolestiam hlavy, pretože automaticky rozpozná zmeny a podľa toho zmení vašu ponuku.
Wayfinder je pomerne flexibilný nástroj a umožňuje vám určiť, aké zdroje zahrnúť alebo vylúčiť z ponuky, aká je šablóna ponuky, ako hlboko je ponuka vašej stránky. Limit vašich schopností určuje váš HTML/CSS kód.
Ako používať Wayfinder?
Ako sme už spomenuli v predchádzajúcej lekcii, syntax na volanie úryvkov vyzerá takto: [[!somesnippet]]
Toto je len základné volanie a nestačí, okrem toho musíme definovať niektoré vlastnosti tohto volania. V prípade Wayfinderu je potrebné definovať vo vlastnostiach minimum, kde v strome zdrojov by mal Wayfinder začať vytvárať zoznam zdrojov. Preto pri volaní úryvku Wayfinder musíte zadať aspoň jeden parameter – počiatočné ID. Základné volanie úryvku Wayfinder v tomto prípade bude vyzerať takto:
Toto volanie povie Wayfinderu, aby začal v koreni stromu ( ID 0 znamená koreňový adresár lokality) a zobrazuje všetky zdroje, ktoré sú zverejnené a ktoré nemajú začiarknuté políčko Skryť z ponuky.
Ak sa pozrieme na šablónu, ktorú používame, môžeme vidieť hornú ponuku s niekoľkými možnosťami a rozbaľovacími zoznamami.
Poďme sa pozrieť na šablónu a výstupný kód toto menu:
Ako vidíte, toto je vnorený neusporiadaný zoznam. Nahradme tento kód základným volaním Wayfinder a uvidíme, čo dostaneme. Vymažte vyššie uvedený kód a vložte ho na jeho miesto:
[[!Wayfinder? &startId=`0` ]]
Ak používate rovnakú šablónu ako ja, váš kód bude vyzerať asi takto:
Uložte šablónu a pozrite sa domovskej stránke, malo by to vyzerať takto:
Fantastické! Môžete vidieť, že naše predchádzajúce menu, ktoré malo viacero možností, bolo teraz nahradené jednoduchým menu s jedinou položkou – Domov. To nám hovorí, že Wayfinder funguje tak, ako má, a preberá jednu stránku z našej lokality a zobrazuje jej názov ako položku ponuky.
Poďme vytvoriť niekoľko ďalších zdrojov. Chystám sa pridať stránku About s 3 podradenými stránkami (MODx, Tutorials, Contact a FAQ). Pre svoju lokalitu môžete vytvoriť ľubovoľné zdroje alebo stránky. Cieľom tohto cvičenia je vytvoriť niekoľko zdrojov, aby mal Wayfinder čo zobrazovať.
Dokončil som vytváranie stránok a strom zdrojov mojej lokality vyzerá takto:
Teraz máme niekoľko stránok, pozrime sa, ako volanie Wayfinderu vygeneruje ponuku pre našu stránku:
Dobrou správou je, že všetky naše stránky sa objavili v ponuke a kliknutím na každú položku ponuky sa dostaneme na príslušnú stránku. (Ak chcete otestovať tento prvok, pridajte nejaký text na každú stránku, napríklad na stránke O aplikácii môžete pridať „Toto je stránka O aplikácii“ a táto správa sa zobrazí pri otvorení stránky. Nezabudnite, že pre každú stránku musíme definovať šablónu stránke, ale v momentálne Nebudem sa tým trápiť).
Zlou správou je, že formátovanie ponuky je poškodené, ale môžeme to opraviť. Kliknite kliknite pravým tlačidlom myši myšou na webovú stránku a pozrite sa na zdrojový kód (alebo na to použite firebug), teraz to uvidíte Wayfinder vygeneruje HTML takto:
- Domov
- O
- MODx CMS
- Kódovacia podložka
- Blog
- Služby
- Kontaktujte nás
- Návody
- FAQ
Ako môžete vidieť, vyzerá to veľmi podobne ako náš pôvodný statický kód s niekoľkými výnimkami. Najprv sa vygeneroval Wayfinder
- položka bez triedy sf-menu ktorý bol použitý v našom statickom kóde. Šablóna potrebuje túto triedu na prácu s CSS. To je tiež jasné
- položky majú parameter rozpätie, ktorý odkazuje na prvky textu odkazu v pôvodnom statickom kóde a nie je prítomný vo vygenerovanom kóde Wayfinder. Náš statický HTML kód má navyše triedu aktuálna-stránka-položka, ktorý nie je zastúpený v našom útržkovom kóde Wayfinder. Všetky tieto chýbajúce kúsky spôsobujú, že naše menu vyzerá nevzhľadne.
Ako prispôsobiť výstupný štýl úryvku Wayfinder
Pri pohľade na to, ako Wayfinder generuje kód, vyvstáva veľmi prirodzená otázka: „Ako môžeme pridať chýbajúce časti kódu, aby sme chceli zobraziť ponuku vo forme, ktorú potrebujeme? Odpoveď je veľmi jednoduchá, na formátovanie výstupu úryvku Wayfinder používame kúsky šablón.
Wayfinder je flexibilný nástroj a pomocou parametrov môžete definovať vzhľad výstup. Niektoré všeobecné parametre umožňujú určiť, na akej úrovni začať zostavovať menu, ktoré položky do menu nezaradiť atď. Ďalšími parametrami sú parametre šablóny, ktoré vám umožňujú nastaviť HTML kód šablóny pre vaše menu atď. Popis týchto parametrov nájdete v oficiálnej dokumentácii – http://rtfm.modx.com/display/ADDON/Wayfinder.
Vezmite na vedomie: Niektoré parametre Wayfinderu majú predvolené hodnoty.
To napríklad vysvetľuje, prečo v menu vygenerovanom Wayfinderom má položka Domovská stránka názov triedy “ prvý aktívny" Toto je predvolená trieda, ale môžeme ju prepísať definovaním vlastných tried v kúskoch šablón.
V tomto návode použijeme niekoľko možností Wayfindera, ale odporúčam vám ich všetky preskúmať a precvičiť si ich čo najviac, aby ste pochopili všetky ich schopnosti. Keďže predvolené nastavenia Wayfindera sú jasne zdokumentované na oficiálnych stránkach, bolo by hlúpe tu o nich hovoriť. Pri práci s rôznymi ponukami ich budeme používať čoraz viac.
Ak chcete začať pracovať na šablóne ponuky, vytvorte niekoľko mini šablón a uložte ich po častiach. Uvidíte, že v týchto častiach používame kód HTML, ale nahrádzame dynamické prvky plnivá(alebo zástupné symboly ako sa tiež nazývajú), ktorých syntax vyzerá takto: [[+placeholder]]. Zástupné symboly, ktoré používame, sú špecifické pre úryvok Wayfinder a ich definícia je zrejmá z názvu, ale vždy si môžete pozrieť dokumentáciu MODx, kde nájdete kompletnejšiu pomoc.
Tu sú kúsky, ktoré použijem na vytvorenie našej šablóny:
Menu 7v1Vonkajšie– bude obsahovať HTML kód pre náš externý ul kontajner.
Vidíte, že som pridal triedu na vonkajšiu ul. Alternatívny spôsob na to použite zástupný symbol wf.classes a potom pridajte názov triedy do aktuálneho volania wayfinder pomocou parametra vonkajšia trieda. Ale pre jednoduchosť použijeme prvú metódu, ale obe budú fungovať dobre...
Riadok ponuky 7v1– bude obsahovať HTML kód položiek ponuky prvej úrovne
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]][[+wf.wrapper]]
- [[+menutitle]][[+wrapper]]
- [[+menutitle]] ([[+children]]) [[+wrapper]]` &countChildren=`1` ]]
- . Úryvok neprepíšeme, ale zmena triedy v štýloch nie je problém.
- Menu vo forme zoznamu, tabuľky, obrázkov, ikon atď.
- Statické menu
- Ponuka s rôznymi efektmi (rozbaľovacia, rozbaľovacia atď.)
- Mapa stránok
- [[+wf.linktext]][[+wf.wrapper]]
- wf.classes - zobrazuje triedy prevzaté zo sady parametrov Wayfinder (vrátane atribútu class="").
- wf.classnames - zobrazenie názvov tried (bez class="")
- wf.wrapper - výstup interného obsahu (riadok).
- wf.classes - výstup triedy (vrátane atribútu class="")
- wf.classnames - výstup zodpovedajúcich tried (bez class="")
- wf.link - href="" hodnota atribútu pre odkaz na ponuku
- wf.title - názov textu nadpisu pre odkaz z poľa zadaného v parametri &titleOfLinks
- wf.linktext – text pre aktívny odkaz špecifikovaný v poli zadávanom v parametri &textOfLinks
- wf.wrapper – zobrazí interný obsah, napríklad podmenu
- wf.id - zobrazí jedinečné ID atribútu. Ak chcete, aby tento zástupný symbol dostal hodnotu, musíte zadať parameter &rowIdPrefix. Hodnota je predpona + docId.
- wf.attributes - zobrazí odkaz na atribúty pre aktuálny prvok
- wf.docid - identifikátor dokumentu aktuálneho prvku
- wf.description - popis pre aktuálny prvok
- wf.level - aktuálna úroveň vnorenia
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]
[[+wf.title]]
[[+wf.title]]
Hlavnou myšlienkou je, že som pridal značku na text odkazu ponuky ako v pôvodnom statickom HTML kóde. Zahrnul som aj zástupný symbol wf.classes a to mi umožní definovať triedu pre aktuálnu stránku, ktorá prepíše predvolenú „aktívnu“ triedu.
Menu 7v1Vnútorné– bude obsahovať HTML kód interných ul kontajnerov
- [[+wf.wrapper]]
Menu 7v1VnútornýRow– bude obsahovať HTML kód pre riadky položiek internej úrovne
To je všetko, teraz sú naše kúsky šablón na mieste, ako môžete vidieť (pre poriadok som ich umiestnil do samostatnej kategórie):
Teraz môžeme zmeniť volanie Wayfindera, aby sme mohli použiť tieto mini šablóny na výstup Wayfindera. Ak sa pozriete na zoznam parametrov šablóny (bolo by užitočné mať pred sebou otvorený http://rtfm.modx.com/display/ADDON/Wayfinder alebo si ho vytlačiť a ponechať blízko obrazovky), uvidím, že som nazval svoje kúsky podobne ako zodpovedajúce parametre volania úryvkov. Urobil som to pre pohodlie, pomáha mi to sledovať, čo sa deje, keď začínam zostavovať hovor. Pridajme parametre a zavolajme naše kúsky. Volanie Wayfinder bude teraz vyzerať takto:
[[!Wayfinder? &startId=`0` &outerTpl=`7in1menuVonkajšia` &rowTpl=`7in1menuRow` &innerTpl=`7in1menuVnútorný` &innerRowTpl=`7in1VnútornýRow` &hereClass=`aktuálna_položka_stránky` &firstClass=`` &posledná_]trieda
Hodnota parametra je umiestnená v apostrofoch (`) a nie v jednoduché úvodzovky (’).
Skvelé, poďme sa pozrieť na túto výzvu. Môžete vidieť, že na volanie našich častí používame možnosti šablón, aby Wayfinder vygeneroval HTML, ktorý potrebujeme, so správnymi triedami. Definoval som volaného tuClass parameter a dal mu hodnotu aktuálna_položka_stránky tak, aby sa zhodoval so statickou šablónou HTML. Môžete si všimnúť, že som nechal parametre prvej triedy A lastClass prázdny. Dôvodom je, že moja šablóna HTML nenastavuje triedu pre prvú a poslednú položku ponuky, takže aby som sa vyhol prekrývaniu, prepísal som v nich prázdne reťazce.
Je vidieť, že náš jedálny lístok vyzerá presne tak, ako sme chceli. V rozbaľovacej ponuke sa používajú správne štýly. Ak sa pozriete na zdrojový kód, uvidíte, že vygenerovaný Wayfinder‘om HTML kód sa zmenil na nepoznanie:
Tento kód sa zhoduje s pôvodným statickým kódom našej šablóny, ale bol vygenerovaný volaním Wayfinder.
Existuje mnoho ďalších možností, ktoré môžete použiť spolu s Wayfinder na zostavenie jedálneho lístka. V nasledujúcich lekciách sa pozrieme na komplexné ponuky a ako ich integrovať do Wayfinder. Aby som to zhrnul: naša webová stránka už nadobudla určitú podobu a máme funkčné a dynamické menu.
Útržok generovania ponuky. Môže nahradiť Wayfinder a umožňuje väčšiu flexibilitu pri špecifikovaní parametrov.
Dokáže napríklad zostaviť jedálny lístok z niekoľkých rodičov naraz, pričom ich zobrazí spoločne aj v samostatných vetvách.
Poskytuje výrazné zvýšenie rýchlosti iba pri prvom spustení, potom nie je Wayfinder vďaka správnemu ukladania do vyrovnávacej pamäte oveľa horší.
Možnosti
Štandardne pdoMenu akceptuje bežné parametre pdoTools a niektoré svoje vlastné:
Meno | Predvolené | Popis |
---|---|---|
&rodičia | Aktuálny zdroj | Zoznam rodičov na vyhľadávanie, oddelených čiarkami. Ak položíte &rodičia=`0`- vzorka nie je obmedzená. Ak sa ID rodiča začína spojovníkom, rodič a jeho deti sú z výberu vylúčené. |
&úroveň | 0 (neobmedzene) | Úroveň vygenerovaného menu. |
&zdroje | Zoznam zdrojov, ktoré sa majú zobraziť vo výsledkoch, oddelené čiarkami. Ak id zdroja začína spojovníkom, tento zdroj je vylúčený z výberu. | |
&šablóny | Zoznam šablón na filtrovanie výsledkov oddelených čiarkami. Ak ID šablóny začína spojovníkom, zdroje s ním sú vylúčené z výberu. | |
&kde | Pole dodatočné parametre vzorky, zakódované v JSON. | |
&zobraziť Štart | 0 | Povoliť zobrazenie uzlov štartovacej ponuky. Užitočné pri zadávaní viacerých „rodičov“. |
&kontext | Obmedzenie vzorky podľa kontextu zdroja. | |
&zobraziťSkryté | 0 | Zobraziť zdroje skryté v ponuke. |
&zobraziť nezverejnené | 0 | Zobraziť nezverejnené zdroje. |
&náhľadNezverejnené | 0 | Povoliť zobrazenie nezverejnených zdrojov, ak má používateľ na to povolenie. |
&skryť Podponuku | 0 | Skryť neaktívne vetvy ponuky. |
&vybrať | Zoznam polí na výber oddelených čiarkami. Môžete zadať reťazec JSON napríklad pomocou poľa &select=`("modResource":"id,pagetitle,content")` | |
&zoradiť podľa | menuindex | Akékoľvek pole zdroja na triedenie vrátane parametra TV, ak je špecifikovaný v parametri &zahŕňa televízory, Napríklad &sortby=`("tvname":"ASC","pagetitle":"DESC")`. Môžete zadať reťazec JSON s poľom niekoľkých polí. Pre náhodné triedenie špecifikujte &sortby=`RAND()` |
&sortdir | A.S.C. | Smer triedenia: zostupne alebo vzostupne. Ak necháte parametre &sortby a &sortdir prázdne, triedenie bude v poradí zdrojov v &zdroje. |
&limit | 0 | Obmedzenie počtu výsledkov vzoriek. |
&posun | 0 | Preskočenie výsledkov od začiatku. Musí sa použiť v spojení s výslovne špecifikovaným &limit |
&skontrolovať povolenia | Zadajte, ktoré povolenia sa majú pre používateľa kontrolovať, napríklad pri zobrazovaní zdrojov &checkPermissions=`zoznam`. | |
&počítajDeti | 0 | Presné počítanie počtu podriadených zdrojov každej kategórie a ich zobrazenie v zástupnom symbole [[+children]]. Vytvára ďalšie požiadavky na databázu, takže je predvolene vypnutá. |
&toPlaceholder | Ak nie je prázdny, úryvok uloží všetky údaje do zástupného symbolu s týmto názvom namiesto toho, aby sa zobrazil na obrazovke. | |
&plPrefix | wf. | Predpona pre exponované zástupné symboly. |
&zobraziť denník | 0 | Zobraziť dodatočné informácie o tom, ako funguje úryvok. Len pre oprávnených používateľov v kontexte „mgr“. |
&rýchly režim | 0 | Režim rýchleho spracovania kúskov. Všetky nespracované značky (podmienky, úryvky atď.) budú vystrihnuté. |
&vyrovnávacia pamäť | 0 | Ukladanie výsledkov útržkov do vyrovnávacej pamäte. |
&cacheTime | 3600 | Doba platnosti vyrovnávacej pamäte v sekundách. |
&schéma | -1 | Schéma tvorby adresy URL sa odovzdá do modX::makeUrl(), takže možné možnosti treba . Špeciálny typ uri nahrádza hodnotu uri zdroja bez spustenia funkcie. |
&použiťWeblinkUrl | 1 | Vygenerujte odkaz na základe triedy prostriedkov. |
&rowIdPrefix | Prefix id="" pre nastavenie identifikátora v bloku. | |
&tuId | ID aktuálneho zdroja pre vygenerovanú ponuku. Treba ho špecifikovať len vtedy, ak ho samotný skript nesprávne definuje, napríklad pri zobrazení menu z časti iného úryvku. | |
&zahŕňa televízory | Zoznam parametrov TV na výber, oddelené čiarkami. Napríklad &includeTVs=`akcia,čas` dá zástupné symboly [[+akcia]] a [[+čas]] . | |
&pripraviť televízory | Zoznam parametrov TV so súbormi zo zdrojov médií, pre ktoré je potrebné vygenerovať úplné cesty. Ak nainštalujete &prepareTVs=`1`, všetky TV uvedené v &zahŕňa televízory. | |
&processTV | Zoznam parametrov TV, ktoré je potrebné spracovať a zobraziť podľa ich nastavenia v správcovi systému. Ak nainštalujete &processTVs=`1`, všetky televízory uvedené v &zahŕňa televízory. Spomaľuje prácu. | |
&tvPrefix | Predpona pre parametre TV. |
Možnosti šablóny
Tieto parametre nastavujú časti, ktoré obsahujú šablóny na generovanie ponúk.
Meno | Popis |
---|---|
&tplOuter | Kus dizajnu celého bloku menu. Predvolená hodnota: @INLINE
|
&tpl | Kus dizajnu položky ponuky. Ak nie je zadané, obsah polí zdrojov sa vytlačí na obrazovke. Predvolená hodnota: @INLINE |
&tplTu | Časť dizajnu aktuálnej položky ponuky. |
&tplŠtart | Kus dizajnu koreňovej položky za predpokladu, že je povolený &zobraziť Štart. Predvolená hodnota: @INLINE [[+menutitle]][[+wrapper]] |
&tplParentRow | Kus dizajnu rodiča s deťmi, ktorý nespadá pod podmienky &tplCategoryFolder. Napríklad: @INLINE |
&tplParentRowHere | Návrhová časť aktuálneho dokumentu, ak obsahuje potomkov. |
&tplParentRowActive | Kúsok dizajnu rodičov s potomkami v aktívnej vetve ponuky. |
&tplCategoryFolder | Dizajnový kus špeciálnej kategórie. Za kategóriu sa považuje rodič s deťmi, ktorých prázdna šablóna alebo rel="category" v poli link_attributes. |
&tplInner | Kus dizajnu celého bloku podpoložiek menu. Ak je prázdny, použije sa &tplOuter. Napríklad: @INLINE |
&tplInnerRow | Návrh podpoložky ponuky. Napríklad: @INLINE |
&tplInnerHere | Chunk pre návrh aktívnej podpoložky ponuky. |
Možnosti triedy CSS
Tieto parametre nastavujú hodnotu zástupných symbolov [[+classnames]] a [[+classes]] pre rôzne položky ponuky. Zástupný symbol [[+classnames]] zobrazuje iba názov triedy bez atribútu class="", na rozdiel od zástupného symbolu [[+classes]].
Príklady
Zvyčajný výstup ponuky z koreňového adresára lokality na jednu úroveň:
[]
Výstup s vylúčením určitých rodičov a kontrolou používateľských povolení:
[]
Zobrazenie ponuky od dvoch rodičov naraz so zobrazením koreňových bodov:
[]
Zobrazenie dvoch úrovní zdrojov s počítaním počtu vnorených zdrojov:
[]` &tplParentRow=`@INLINE
Na vytvorenie dynamického menu použijeme hotový úryvok Wayfinder.Útržok, ako si snáď pamätáte z predchádzajúcich lekcií, je časť kódu Php, ktorý môžeme zahrnúť do našej šablóny. Rozdiel od kúskov je len v kóde a metóde volania. Ak voláme kus pomocou dvojitých zložených zátvoriek, potom sa úryvky volajú pomocou nasledujúceho [!Snippet_name!]- hovor bez vyrovnávacej pamäte alebo podobne [[SnippetName]]- hovor uložený vo vyrovnávacej pamäti. Kód každého úryvku musí začínať na a koniec ?> . Každý úryvok je navyše možné odovzdať špeciálne významy parametre, ktoré bude spracovávať. MODx má už niekoľko hotových úryvkov, ktoré využijeme v budúcnosti.
Úryvok Wayfinder slúži na usporiadanie zoznamov odkazov pre MODx. V ponuke našej stránky je zoznam takýchto odkazov. Najprv nájdime kúsok kódu zodpovedný za zobrazenie našej ponuky. Menu je v kúsku HLAVIČKA, tu je:
Vystrihnime tento kód a namiesto neho napíšme:
((MENU))
A kód vložíme do nového bloku MENU, v popise kúsku napíšeme Ponuka stránok. Teraz poďme študovať tento kód.
Menu našej stránky je jednoduchý, nečíslovaný zoznam umiestnený v kontajneri s id="templatemo_menu". Vystrihneme tento zoznam z kontajnera a namiesto toho vložíme volanie nášho úryvku:
&startId=`0` je parameter s hodnotou 0, ktorý úryvku označuje ID priečinka, v ktorom sa nachádzajú spracovávané dokumenty. Všetky naše dokumenty, ktoré si zobrazíme v menu, sa nachádzajú v koreňovom priečinku, ID koreňového priečinka je nula. Pozrime sa, čo máme.
Naša ponuka funguje, len aktívna položka už nie je zvýraznená bielou farbou:
Aby sme pochopili, prečo sa to stalo, musíme sa pozrieť na zdrojový kód stránky. IN Mozilla Firefox robí sa to takto: Zobraziť >> Zdrojový kód stránky alebo jednoducho stlačením klávesovej skratky Ctrl+U. Nájdite kód pre naše menu:
Upozorňujeme, že v zdrojový kód aktívny bod mal class="current" a náš úryvok sa automaticky priradí k aktívnej položke class="active". Všimli sme si tiež, že v zdrojovom kóde bola trieda aplikovaná na značku
a teraz k značke
Nájdite súbor v priečinku C:/xampp/htdocs/site/www/assets/templates/ templatemo_style.css a otvorte ho pomocou programu Poznámkový blok ++. Hľadáme popis aktuálnej triedy v tomto súbore, nachádza sa v 198 riadok:
#templatemo_menu li .current(
padding-left: 40px;
farba: #ffffff;
}
nahradiť triedu prúd na aktívny, nezabudnite ho znova priradiť k značke :
#templatemo_menu li.active a (
padding-left: 40px;
farba: #ffffff;
}
Uložte súbor. Pozrime sa, čo sa stalo.
Naše menu fungovalo presne tak, ako to dizajnéri zamýšľali. Teraz môžeme prechádzať stránkami našej lokality pomocou nášho hlavného menu. Keď do koreňového priečinka pridáte ďalšie dokumenty, automaticky sa zobrazia v našej ponuke. Ak chcete zabrániť zobrazovaniu nežiaducich dokumentov v ponuke, mali by ste ich začiarknutie zrušiť Zobraziť v ponuke. Pomocou parametra môžete násilne vylúčiť nechcenú položku &excludeDocs=`zoznam ID vylúčených dokumentov oddelených čiarkami`.
Aby sa v ponuke nezobrazovalo podriadené dokumenty, ktoré vytvoríme v ďalších lekciách, pridáme do volania úryvku parameter úrovni, ktorý určuje počet úrovní v menu, štandardne sa zobrazia všetky úrovne, obmedzíme to len na jednu úroveň:
Wayfinder slúži na usporiadanie zoznamov odkazov pre MODX. Vďaka podpore šablón umožňuje zobraziť zoznamy v ľubovoľnej forme:
&rowTpl=`rowTpl`
&outerTpl=`vonkajšíTpl`
&hereClass=`aktívne`
&rowClass=`eNav_li`]]
Parametre úryvku:
&startId- id rodičovskej stránky, ak zadáte 0, bude to z koreňového adresára stránky. Predvolená hodnota je id aktívnej stránky
&zobraziť Štart - zobraziť dokument s štartId v názve ponuky, predvolená hodnota je false
&úroveň- hĺbka vnorenia, predvolená 0 - všetky úrovne
&limit- obmedziť počet strán na výstupe (predvolená hodnota 0 - žiadne obmedzenia)
&ignorovaťSkryté- ignorujte zaškrtávacie políčko stránky "Zobraziť v menu", t.j. ak zadáte 1, zobrazia sa všetky stránky. Predvolená hodnota je 0. Zobrazia sa iba stránky, ktoré majú začiarknuté políčko „Zobraziť v ponuke“.
&ph - názov náhradníka, ktorý nahrádza priamo vytlačené výsledky. Predvolená hodnota je 0.
&ladiť- režim ladenia (predvolená hodnota 0)
&skryť Podponuku - rozbaliť iba aktívnu podponuku (predvolená hodnota 0)
&odstráni NewLines- odstráni znak zalomenia riadku počas výstupu (predvolená hodnota 0)
&textOdkazov- pre názov odkazu na menu. Možné možnosti:menutitle, id, pagetitle, description, parent, alias, longtitle, introtext . Predvolené názov menu
&titleOfLinks- pre názov odkazu na ponuku:menutitle, id, pagetitle, description, parent, alias, longtitle, introtext. Predvolené názov stránky
&rowIdPrefix- nastaví id (rowIdPrefix + docId) pre každý prvok. Predvolená hodnota 0
&includeDocs- ID dokumentov oddelených čiarkami, ktoré budú zahrnuté v ponuke (predvolene nie je uvedené)
&excludeDocs - ID dokumentov oddelených čiarkami, ktoré budú vylúčené z ponuky (predvolená hodnota 0)
&kontexty- kontext pre generovanie menu. Predvolená hodnota je aktuálna.
&startIdContext - Identifikátor kontextu, z ktorého sa berú dokumenty na generovanie výsledku.
&konfigurovať - Externý súbor PHP na uloženie konfigurácie Wayfinder (príklad: core/components/wayfinder/configs).
&schéma - Formát na generovanie adries URL. Možné hodnoty (na základe volania makeURL API):
1: (predvolená) adresa URL vzhľadom na adresu URL stránky;
0: pozri http;
1: pozri https;
plná: absolútna adresa URL začínajúca reťazcom site_url;
abs: absolútna adresa URL začínajúca základnou_url;
http: absolútna adresa URL, vynútená v schéme http;
https: absolútna adresa URL, vynútená v schéme https.
&zoradiťPodľa - Pole, podľa ktorého prebieha triedenie. (predvolené menuindex)
Možnosti:
id, menutitle, pagetitle, introtext, menuindex, publishing, hidemenu, parent, isfolder, description, alias, longtitle, type, template&zoradiťPoradie- Poradie triedenia."ASC" alebo "DESC". Predvolené ASC
&kde - Štýl JSON parametrov filtrovania (Zodpovedá tomu, kde v MySQL). Napríklad, keď potrebujete skryť blog alebo novinky z doplnku Články: &where=`[("class_key:!=": "Článok")]`
Príklady:
len výstupné priečinky: & kde = `isfolder = 1
&tuId - Určite aktuálne ID, ktoré sa má použiť v úryvku. Použite hodnotu [[*id]], ak je šablóna špecifikovaná pomocou parametra hereTpl a activeRowParentTpl sa v položke ponuky nepoužije správne. Predvolené je aktuálne ID.
Treba ho špecifikovať len vtedy, ak ho samotný skript nesprávne definuje, napríklad pri zobrazení menu z časti iného úryvku.
&tuTpl - Šablóna hereTpl sa používa pri zobrazení aktuálnej položky v ponuke.
Možné zástupné symboly:
[[+wf.classes]] - miesto na určenie triedy CSS, ktorá sa má použiť (zahŕňa class=" ")
[[+wf.classnames]] – obsahuje iba názov triedy CSS (nezahŕňa class=" ")
[[+wf.link]] - adresa (href) pre odkaz
[[+wf.title]] - text pre nadpis odkazu
[[+wf.linktext]] - text nadpisu odkazu
[[+wf.wrapper]] - miesto na zobrazenie podmenu
[[+wf.id]] – výstup jedinečného identifikátora (id)
[[+wf.attributes]] - zobrazenie ďalších atribútov odkazu
[[+wf.docid]] - identifikátor dokumentu pre aktuálny prvok
[[+wf.subitemcount]] - počet položiek v priečinku
[[+wf.description]] - zobrazí hodnoty poľa popisu
[[+wf.introtext]] - zobrazí hodnoty poľa introtextu
Príklad šablóny:
Možnosti šablóny
Tieto parametre určujú časti, ktoré obsahujú vzory, ktoré vygenerujú výstup Wayfinder.
V aktuálnej verzii Wayfinder pre MODX Revolution môžete pristupovať k svojim vlastným televízorom pomocou zástupných symbolov predpony wf. , napríklad [[+moja_TV]]
V čase písania budú vrátené iba pôvodné TV hodnoty - nebudú naformátované. Napríklad, ak je váš televízor obrázkom – normálne sa používa, že televízor vo vašej šablóne vráti celú značku obrázka, ale vo vnútri šablóny Wayfinder – vráti sa iba cesta k obrázku.
Ak chcete spracovať TV, môžete tak urobiť volaním úryvku v rámci šablóny riadku Wayfinder (&rowTpl . Napríklad váš televízny obraz sa nazýva ikonu a zvyčajne šablóna používa na výstup takýto kód:
... ...
Ale keďže vám to nedovolí spracovať TV, musíte ho nahradiť:
... ...
A teraz do útržku processTV umiestnime nasledujúci kód PHP:
getObject("modResource", $myId); return $doc->getTVValue($myTV);
Výsledkom je, že sa vráti úplne spracovaný TV obraz.
&vonkajšieTpl
Názov časti obsahujúcej šablónu externého kontajnera.
Dostupné zástupné symboly:
Parameter &innerTpl obsahuje rovnakú množinu zástupných symbolov ako &outerTpl .
&rowTpl
Názov časti obsahujúcej šablónu pre prvky riadka ponuky.
Dostupné zástupné symboly:
Príklad použitia:
Ďalšia možnosť:
Príklady
Prvá úroveň
[[!Wayfinder? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`vonkajšíTpl`
&hereClass=`aktívne`
&rowClass=`eNav_li`]]
Kód vonkajšieho bloku Tpl
[[+wf.wrapper]]
Kód bloku RowTpl
[[+wf.wrapper]]
Druhá úroveň (v tomto príklade boli položky ponuky a podponuky vizuálne na rovnakej úrovni
[[!Wayfinder? &startId=`0` &level=`2`
&rowTpl=`rowTplFooterMenu`
&outerTpl=`vonkajšiaTplPonuka päty`
&innerTpl=`innerTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`active`]]
Chunk code externalTplFooterMenu
[[+wf.wrapper]]
rowTplFooterMenu kód bloku
[[+wf.wrapper]]
innerTplFooterMenu blokový kód
[[+wf.wrapper]]
chunk code innerRowTplFooterMenu