MODX meni na više nivoa koristeći Bootstrap. PdoMenu - kreiranje menija u MODX Wayfinderu, imena između raspona se ne prikazuju
Ali ovo nije za nas ;).
Uradićemo sve od nule. Zašto nam je (meni) ovo trebalo, pošto već postoje gotove opcije? Jer mi se ovako više sviđa. Jer mislim da je ovaj pristup najispravniji. Jer, znajući kako da razvijemo svoj, lako možemo razumjeti tuđi kod, promijeniti ga, popraviti greške ili ga dopuniti funkcionalnošću potrebnom u konkretnom slučaju. I, na kraju krajeva, često je tako lijepo napraviti svoj vlastiti!
Sledeći narativ će pretpostaviti da čitalac ima minimalno znanje o PHP programiranju. Teoretski, oni ljudi koji uopće ne razumiju kod moći će kopirati kod i reproducirati sve radnje o kojima će biti riječi u nastavku. Međutim, za njih bi možda bilo bolje da koriste gotove isječke a la Ditto, jer pružaju mnogo opcija za eksternu konfiguraciju bez ulaska u glavni kod.
Ne želim da raspravljam šta je bolje za korisnika - da uzme gotov ili razvije svoj... Oba slučaja imaju svoje prednosti i mane. Za mene lično, druga opcija ima više prednosti. Takođe, svaki čitalac će odlučiti za sebe.
Dakle, pogledajmo ponovo naše. Pošto na našoj web stranici ima dosta različitih softverskih dijelova, a od nečega moramo početi, pa hajde da programiramo...
Top menu
Pod pojmom “top menu” mislim na skup linkova do stranica na vrhu stranice (pogledajte sliku ispod):
Prvi primjer kreiranja isječka ću opisati vrlo detaljno, u budućnosti ću se fokusirati uglavnom na najvažnije detalje.
Hajde da to uporedimo sa našim stablom sajta u sistemu upravljanja, koji smo izgradili u prethodnom članku:
Kao što se vidi sa slike, četiri dokumenta su istaknuta u stablu sajta (i to “Blog”, “O autorima”, “Fotografije” i “ Povratne informacije"), koji će naknadno kreirati veze u gornjem meniju.
Da vas podsjetim i da smo prethodno sakrili dokumente koje ne želimo da prikazujemo u meniju. Na primjer, u postavkama dokumenta pod nazivom “Pretraga web mjesta” uklonili smo potvrdni okvir “Prikaži u meniju”, a preostala dva dokumenta “Linkovi” i “Kategorije” smo sakrili na web stranici tako što smo poništili potvrdni okvir “Objavi” u postavke dokumenta (kartica „Postavke stranice“) u postavkama dokumenta).
Tako smo u prethodnom članku pripremili gornji meni u sistemu upravljanja.
Pređimo sada na pitanje prikazivanja naših akcija direktno na web stranici.
Većinu programa na sajtu izvode tzv. " ", tj. pojedinačni delovi koda (oni se takođe mogu shvatiti kao pojedinačne funkcije ili potprogrami) u PHP-u. Stoga, da bismo implementirali prikaz gornjeg menija u MODx-u, moramo također kreirati novi isječak, programirati ga i dodati poziv ovom isječku u šablonu na pravom mjestu.
Idemo na sistem upravljanja, otvorimo karticu "Resources" -> "Resource Management" -> karticu "Snippets" i kliknite na vezu "New snippet". U polje “Naziv isječka” unesite “TopMenu” bez navodnika i za sada samo sačuvajte prazan isječak bez koda. Nakon spremanja, vidjet ćemo naziv našeg isječka na kartici “Snippets”.
Da vas podsjetim da smo u našem predlošku stavili gornji meni u dio “TOPMENU”. Prijeđimo na karticu "Kunci" i otvorimo " " komad. U sadržaju ovog dijela vidjet ćemo sljedeći kod:
- Blog
- O autorima
- Fotografije
- Povratne informacije
Ovaj kod je ono što kreira naš meni. Hajde da to prokomentarišemo i dodamo poziv u isječak "TopMenu" u komadu:
[]
Ovdje ćemo opet morati malo odstupiti da bismo objasnili značenje ove konstrukcije []. Činjenica je da uz pomoć konstrukcija kao što su [] ili [!SnippetName!] možemo pozvati isječke bilo gdje u našim predlošcima, dijelovima, pa čak i samo na bilo kojoj pojedinačnoj stranici web stranice.
U ovom slučaju, konstrukcija [] označava poziv cacheable isječak, tj. pozivanjem dinamičke potprograme čiji će se rezultat izračunati i izvršiti jednom, a naknadno prilikom učitavanja stranice na kojoj je ovaj isječak pozvan, rezultat će biti nepromijenjen, jer isječak se više ne poziva ponovo. Na ovaj način štedimo resurse na našem web serveru (a to je uvijek vrlo važno kada postoji veliki promet na resursu).
Međutim, postoje situacije kada morate stalno ponovo izvršavati isječak koda i ne možete keširati rezultate. U takvim slučajevima koristi se konstrukcija [!SnippetName!], koja će uvijek prisiliti da se isječak izvrši bez keširanja. Po analogiji, ova konstrukcija se zove poziv non-cacheable snippet.
Dakle, hajde da sačuvamo "TOPMENU" deo i ažuriramo stranicu sajta. Hmm, začudo, gornji meni je nestao. Ali da li je ovo zaista toliko iznenađujuće? Komentarišući HTML kod menija u komadu, sakrili smo njegov prikaz u pretraživaču (provjerite ovo gledajući izvorni kod HTML stranice). Ali naš "TopMenu" isječak ne radi ništa jer mu još ništa nije dodano. Ispravimo ovaj nedostatak :).
Vratimo se na karticu "Snippets", otvorimo kreirani isječak "TopMenu" i pokušamo testirati njegove mogućnosti... Strpljenje, moji napredni čitaoci, nisu svi upoznati sa ovim detaljima.
Prvo, napišimo najjednostavniji kod (običan PHP kod):
echo "Testiranje...";
?>
Prije spremanja odaberite “Nastavi sa uređivanjem”, jer morat ćemo više puta promijeniti sadržaj našeg isječka, a nakon toga ćemo sačuvati isječak. Osvježimo stranicu i vidimo umjesto gornjeg menija... pa, da budem iskren, na prvi pogled nećemo vidjeti skoro nikakve promjene, osim blago proširene plave pozadine menija. Hajde da pritisnemo "CRTL+A" da selektujemo sav tekst na stranici sajta, i videćemo da naš isečak ipak prikazuje tekst "Testiranje..." umesto menija, samo boja teksta odgovara boji pozadine.
Promijenimo isječak koda u sljedeće:
eho" Testiranje...";
?>
Sada možemo jasno vidjeti da naš isječak radi i čak (!) prikazuje neki tekst. Pa, ovo je odlično, ali nije dovoljno za naš zadatak, jer moramo osigurati da naš isječak prikazuje veze iz kontrolnog sistema, i to u potpuno istom HTML kodu koji smo komentirali u dijelu “TOPMENU”.
I opet malo ometanja...
Čitav sistem odnosa između dokumenata u MODx-u je izgrađen na principu: svaki „roditeljski dokument“ sadrži od nula do mnogo „podređenih dokumenata“ („roditelj“ -> „podređeni“).
Svaki dokument u MODx bazi podataka ima svoj jedinstveni identifikator "ID" - to je broj koji vidimo u zagradama u stablu stranice pored svakog dokumenta.
Inače, ovaj jedinstveni identifikator ima samo jedno jedino značenje - jedinstveno identifikuje određeni dokument u sistemu upravljanja i ništa više! Posebno naglašavam ovu činjenicu, budući da sam nailazio na ponovljene pokušaje da se ti identifikatori izmijene u razne svrhe... Trebate odmah zapamtiti da je to jednostavno besmisleno, stoga nemojte pokušavati mijenjati ove brojeve. Uopće ne biste trebali obraćati pažnju na njih; obično se ovi brojevi jednostavno koriste za generiranje veza do određenih dokumenata.
MODx baza podataka također kreira posebno "nadređeno" polje za svaki dokument. Vrijednost ovog polja je broj koji označava ili jedinstveni identifikator roditeljskog dokumenta, ili, ako je dokument u korijenu stabla, nula. Dakle, uvijek možete nedvosmisleno odrediti koji je dokument nadređeni dokument za dati.
Da jasno vidite o čemu smo upravo pričali, otvorite phpMyAdmin, odaberite svoju bazu podataka i pronađite (PREFIX)site_content tabelu, gdje je (PREFIX) vaš prefiks koji ste unijeli tokom instalacije. Vidjet ćete mnoga polja koja pohranjuju specifične podatke dokumenta, uključujući "ID" - jedinstveni identifikator, "parent" - broj nadređenog dokumenta, "pagetitle" - naslov stranice i druge.
Dakle, koristeći ove informacije o principu pohranjivanja i povezivanja dokumenata u MODx-u, možemo razumjeti kako doći do potrebnih podataka za prikaz linkova gornjeg menija: u bazi podataka moramo pronaći sve dokumente koji se nalaze u korijenu stranice drvo, tj. imaju vrijednost nula u polju "roditelj".
Koristeći SQL jezik, sličan zahtjev je opisan otprilike ovako (možete pokušati unijeti ovaj zahtjev u SQL polju za unos u phpMyAdmin, nakon što zamenite "modx_" vašim prefiksom):
ODABIR *
IZ `modx_site_content`
GDJE `roditelj` = 0;
Međutim, takav zahtjev će nam vratiti apsolutno sve dokumente iz korijena stranice, što nije sasvim ispravno, na osnovu glavnog zadatka - da prikažemo veze samo na one dokumente koji imaju:
- objavljen status (u bazi podataka ova stavka je predstavljena poljem “objavljeno”, gdje vrijednost = 1 znači da je dokument objavljen, a vrijednost = 0 neobjavljeni).
- neobrisano (polje "izbrisano", gdje je 1 obrisano, a 0 nije izbrisano),
- i koji imaju podešenu opciju „Prikaži u meniju“ (polje „sakrij meni“, gde 1 znači sakriti, a 0 znači prikazati u meniju).
Osim toga, gledajući malo unaprijed, odmah ćemo sortirati dokumente prema parametru „Pozicija u meniju“, koji će odrediti poziciju svake veze u našem meniju.
Pa, sa SQL tačke gledišta, ovo je potpuno jednostavan zadatak i može se riješiti ovako:
ODABIR *
IZ `modx_site_content`
GDJE `objavljeno` = 1
I `roditelj` = 0
I `izbrisan` = 0
I `hidemenu` = 0
ORDER BY `menuindex` ASC;
Teoretski, svi SQL upiti mogu se izvršiti u isječcima direktno koristeći PHP skripte, svaki put iznova povezujući bazu podataka i obavljajući mnoge druge rutinske operacije, ponavljajući ih iznova i iznova... Ali, vidite, ovo bi poništilo poentu upotrebe okvira, što naš sistem upravljanja svakako jeste, jer MODx, između ostalih prednosti, pruža spreman set sredstva softverski interfejs(API, aplikacijski programski interfejs). API-ji su softverske funkcije koje objedinjuju i olakšavaju mnoge procese obrade podataka.
Upotrijebimo jednu od spomenutih API funkcija "getDocumentChildren" u našem isječku. Funkcija "getDocumentChildren" prima sljedeće podatke kao parametre:
- $id - broj matičnog dokumenta,
- $active - odaberite samo objavljene ili neobjavljene dokumente (1 odnosno 0),
- $deleted - odaberite samo izbrisane ili neobrisane dokumente (1 | 0),
- $fields - polja koja su odabrana iz baze podataka,
- $gdje - posebni uslovi, tj. GDJE stanje u SQL upit,
- $sort - polje po kojem treba sortirati rezultate
- $direction - smjer sortiranja, može uzeti ASC ili DESC vrijednosti, tj. sortiraj od najmanje do najveće vrijednosti ili obrnuto
- $limit - ograničenje zahtjeva, tj. LIMIT uvjet u SQL upitu
$results = $modx->getDocumentChildren(
$id = 0,
$aktivan = 1,
$izbrisan = 0,
$gdje = "hidemenu = 0",
$sort="menuindex",
$dir="ASC",
$limit
);
Print("
Foreach($rezultati kao $ključ => $vrijednost) (
print_r($vrijednost);
}
Print("");
?>
Sačuvajte isječak i osvježite stranicu. Kao rezultat izvršavanja ažuriranog isječka "TopMenu", vidjet ćete listu nizova i njihovih vrijednosti, sortiranih prema vrijednostima polja "menuindex" od najmanjeg do najvećeg. Pokušajte promijeniti parametar $dir="ASC" u $dir="DESC" - kao rezultat toga, nizovi će biti ponovo izgrađeni i dokument sa najvećom vrijednošću polja "menuindex" će biti prikazan kao prvi dokument.
Iskusni programeri vjerovatno razumiju da dobijeni rezultat već pruža sve što vam je potrebno za izradu gotovog menija sa vezama. Pa, skoro sve. U svakom slučaju, nastaviću: prepišimo PHP kod kako bismo se što više približili željenom rezultatu.
$results = $modx->getDocumentChildren(
$id = 0,
$aktivan = 1,
$izbrisan = 0,
"id, pagetitle, objavljeno, menuindex, deleted, hidemenu, menutitle",
$gdje = "hidemenu = 0",
$sort="menuindex",
$dir="ASC",
$limit
);
$items = "";
$output = "";
Foreach($rezultati kao $ključ => $vrijednost) (
$items .="
".$value["pagetitle"]."
}
Ako ($items != "") (
$output = "
- \n";
$output .= $items;
$output .="
}
Povratak $output;
Nećemo detaljno analizirati kod, jer je ovo najobičniji PHP kod, ništa više. Ako neko ne razumije značenje bilo koje konstrukcije, ostavite komentar, ili još bolje, idite na relevantne forume podrške.
Sačuvajmo novi isječak koda i osvježimo stranicu. Kao rezultat izvršavanja koda, vidjet ćemo skoro ono što smo željeli dobiti:
One. To su već automatski generirane veze, čija struktura u potpunosti ponavlja strukturu dokumenata u MODx stablu. Da biste ovo testirali, pokušajte kreirati neki probni dokument u korijenu stranice i osvježite stranicu.
Međutim, to nije sve. Mnogi su verovatno već primetili da linkova ima, ali nema... Paradoks :). Mislim da su nazivi dokumenata prikazani u meniju, ali veze do njih ne rade. Ovo je logično, jer za sada kod veze prikazuje "#" umjesto pravih putanja.
Da biste riješili ovaj problem, morate naučiti o još jednoj izuzetno korisnoj funkciji MODx-a: adresa bilo koje interne stranice stranice može se dobiti pomoću sljedeće konstrukcije [~id~], gdje je id jedinstveni broj traženi dokument, tj. isti broj naveden u zagradama pored naziva svakog dokumenta u stablu sajta. Dakle, dodavanjem takve konstrukcije [~1~] u sadržaj šablona/komada/stranice,
-
- index – alias dokumenta "Blog", ako smo upisali "index" kao pseudonim dokumenta, ili
- 1.html, ako nismo ništa upisali u polje "Nadimak" za dokument "Blog".
- ako su prijateljske veze onemogućene, vidjet ćemo tekst index.php?id=1
Prepišimo isječak koristeći ove informacije:
$results = $modx->getDocumentChildren(
$id = 0,
$aktivan = 1,
$izbrisan = 0,
"id, pagetitle, objavljeno, menuindex, deleted, hidemenu, menutitle",
$gdje = "hidemenu = 0",
$sort="menuindex",
$dir="ASC",
$limit
);
$items = "";
$output = "";
Foreach($rezultati kao $ključ => $vrijednost) (
$items .="
".$value["pagetitle"]."
}
Ako ($items != "") (
$output = "
- \n";
$output .= $items;
$output .="
}
Povratak $output;
Tako smo promijenili # u [~".$value["id"].."~], tj. zapravo, za svaki dokument iz niza, njegov jedinstveni ID se zamjenjuje unutar konstrukcije [~id~]. Kao rezultat, dobijamo meni sa radnim vezama.
Skoro smo postigli ideal... Međutim, i sada postoji još jedan detalj koji se mora uzeti u obzir: dizajner je odredio da naš aktivni link treba istaknuti bijelom pozadinom, a boju linka u skladu s tim promijeniti u narandžastu.
Da bismo to postigli, ponovo ćemo otkriti tajne MODx CMS-a :). U API-ju je skrivena funkcija $modx->documentIdentifier, koja vraća vrijednost jedinstvenog identifikatora trenutne stranice. Trebat će nam da odredimo aktivnu stranicu i označimo je u meniju:
$results = $modx->getDocumentChildren (
$id = 0,
$aktivan = 1,
$izbrisan = 0,
"id, pagetitle, objavljeno, menuindex, deleted, hidemenu, menutitle",
$gdje = "hidemenu = 0",
$sort="menuindex",
$dir="ASC",
$limit
);
$cid = $modx->documentIdentifier;
$items = "";
$output = "";
Foreach($rezultati kao $ključ => $vrijednost) (
if ($value["id"] == $cid) (
$active = " id=\"aktivan\"";
}
drugo(
$active = "";
}
$items .="
".$value["pagetitle"]."
}
Ako ($items != "") (
$output = "
- \n";
$output .= $items;
$output .="
}
Povratak $output;
Pa, kako je ispalo? Upalilo je!
Ali niste mislili da će se sve ovo završiti, zar ne? I s pravom. Postavili smo sebi najvišu traku, želimo da iskoristimo maksimalne mogućnosti MODx-a. I zato postoji još jedan mali detalj koji nam je promakao.
Pogledajmo pomno imena polja koja tražimo pomoću funkcije getDocumentChildren: "id, pagetitle, published, menuindex, deleted, hidemenu, menutitle". Među njima postoji polje kao što je "menutitle". Kao što ime govori, ovo polje može pohraniti naslov menija. Upravljački sistem ima i polje za unos "Stavka menija". Ovo polje nije obavezno. Međutim, logika je da ako je ovo polje popunjeno, onda moramo zamijeniti tekst linka u meniju onim koji je unio korisnik. Pa, uradimo ovo:
/********************************
Naziv: Gornji meni
Svrha: Prikaz gornjeg menija
Projekat: MODx Demosite
********************************/
$results = $modx->getDocumentChildren(
$id = 0, // ID roditeljskog dokumenta
$active = 1, // Odaberite samo objavljene dokumente
$deleted = 0, // Odaberite samo neobrisane dokumente
"id, pagetitle, published, menuindex, deleted, hidemenu, menutitle", // Odaberite polja iz baze podataka
$where = "hidemenu = 0", // Odaberite samo one dokumente koje je potrebno objaviti u meniju
$sort="menuindex", // Sortiraj dokumente prema polju menuindex
$dir="ASC", // Sortiraj dokumente uzlaznim redoslijedom
$limit = "" // Ne postavljamo ograničenja (LIMIT parametar u SQL upitu)
);
$cid = $modx->documentIdentifier; //dobijamo ID trenutne stranice
$items = "";
$output = "";
Foreach($rezultati kao $ključ => $vrijednost) (
if ($value["id"] == $cid) (
$active = " id=\"aktivan\"";
}
drugo(
$active = "";
}
if ($value["menutitle"] != "") (
$title = $value["menutitle"];
}
drugo(
$title = $value["pagetitle"];
}
$items .="
".$title."
}
// Ako bismo uspjeli pronaći barem jednu stavku menija,
// kreiranje HTML koda menija
if ($items != "") (
$output = "
- \n";
$output .= $items;
$output .="
}
// Vraća rezultat isječka
return $output;
Sada pokušajte da unesete tekst u polje za unos “Menu Item” bilo kojeg dokumenta... Da li sve radi? Nevjerovatno!
P.S.: Neki čitaoci mogu biti iznenađeni da kada pratite linkove u našem meniju, sadržaj stranica se ne menja, iako se čini da, sudeći po putanji u adresi pretraživača, prelazimo na nove stranice... Verujte meni, ovo je apsolutno normalno, jer Apsolutno sve stranice trenutno koriste isti šablon. U ovom predlošku, zapravo, do sada smo učinili samo gornji meni dinamičnim; O tome ćemo svakako kasnije, ali za sada - bez panike ;).
zaključak:
Dakle, još jedan članak je došao do svog logičnog zaključka.
Rezultati obuke:
- Pokušali smo da razumemo svrhu nekih od polja za unos u MODx dokumentima i pogledali smo čuvanje ovih informacija u bazi podataka;
- Saznali smo o novim specijalnim MODx dizajnima: [], [!SnippetName!], [~id~];
- Saznali smo o dostupnosti posebnog API-ja i iskoristili neke API funkcije;
- I na osnovu ovog znanja, kreirali smo naš novi isječak u MODx-u!
Započnimo lekciju 8 MODx Revolutiona za početnike. Da vas podsjetim da radimo web stranicu za proučavanje MODx Revolution. U prošloj lekciji, pogledali smo koncept isječaka, koji su dijelovi PHP koda koji nam omogućavaju da dodamo funkcionalnost našoj web stranici. U ovoj lekciji ćemo pogledati poseban isječak - Wayfinder, koji ćemo koristiti za kreiranje dinamičkog menija za našu web stranicu.
Šta je Wayfinder?
Wayfinder je isječak koji prikazuje nerazvrstanu listu veza do resursa u stablu vašeg sajta. Uopšteno govoreći, to znači da kada postavite Wayfinder poziv u svoj predložak, on počinje tražiti resurse koji zadovoljavaju parametre navedene u njemu i vraća listu veza do tih resursa u nesortiranom formatu liste ili u formatu koji vi definirate.
Zašto koristiti Wayfinder?
Obično koristim Wayfinder za kreiranje dinamičke navigacije web stranice, odnosno menija. Od većine HTML šablon ov koristiti neuređene liste za kreiranje menija, tada je Wayfinder savršen alat za ove svrhe. Kada kreirate web lokaciju, možete pažljivo umetnuti svoje URL-ove u navigacijski meni, baš kao što ste ranije radili na statičkoj HTML stranici. Istovremeno, svaki put kada trebate da izbrišete ili kreirate stranicu, potrebno je izvršiti odgovarajuće promjene u svom meniju, promijeniti URL-ove. Korištenje Wayfinder isječka za dinamičko generiranje vaših menija izbjegava ovu glavobolju jer automatski otkriva promjene i mijenja vaš meni u skladu s tim.
Wayfinder je prilično fleksibilan alat i omogućava vam da odredite koje resurse želite uključiti ili isključiti iz menija, šta je predložak menija i koliko je dubok meni vašeg sajta. Ograničenje vaših mogućnosti je određeno vašim HTML/CSS kodom.
Kako koristiti Wayfinder?
Kao što smo već spomenuli u prethodnoj lekciji, sintaksa za pozivanje isječaka izgleda ovako: [[!somesnippet]]
Ovo je samo osnovni poziv i nije dovoljan, osim toga moramo definisati neka svojstva ovog poziva. U slučaju Wayfinder-a, minimum koji treba da bude definisan u svojstvima: gde u stablu resursa Wayfinder treba da počne da pravi listu resursa. Stoga, prilikom pozivanja isječka Wayfinder, morate navesti barem jedan parametar - početni ID. Osnovni poziv na Wayfinder isječak u ovom slučaju će izgledati ovako:
Ovaj poziv govori Wayfinder-u da počne od korijena stabla ( ID 0 označava korijen stranice) i prikazuje sve resurse koji su objavljeni i koji nemaju kvačicu u polju za potvrdu Sakrij iz menija.
Ako pogledamo šablon koji koristimo, možemo vidjeti gornji meni sa nekoliko opcija i padajućim listama.
Pogledajmo šablon i kod koji izlazi ovaj meni:
Kao što vidite, ovo je ugniježđena neuređena lista. Zamenimo ovaj kod sa osnovnim Wayfinder pozivom i vidimo šta dobijamo. Izbrišite gornji kod i zalijepite na njegovo mjesto:
[[!Wayfinder? &startId=`0` ]]
Ako koristite isti šablon kao ja, vaš kod će izgledati otprilike ovako:
Sačuvajte šablon i pogledajte početna stranica, trebalo bi izgledati ovako:
Fantasticno! Vidite da je naš prethodni meni, koji je imao nekoliko opcija, sada zamijenjen jednostavnim menijem sa samo jednom stavkom - Početna. Ovo nam govori da Wayfinder radi kako se očekuje i da uzima jednu stranicu sa naše stranice i prikazuje njen naslov kao stavku menija.
Kreirajmo još par resursa. Dodaću stranicu o stranici sa 3 podređene stranice (MODx, Tutoriali, Kontakt i FAQ stranice). Možete kreirati bilo koje resurse ili stranice za svoju web lokaciju. Cilj ove vježbe je kreiranje nekoliko resursa tako da Wayfinder ima nešto za prikazati.
Završio sam sa kreiranjem stranica i stablo resursa moje stranice izgleda ovako:
Sada imamo nekoliko stranica, da vidimo kako će pozivanje Wayfindera generirati meni za našu web stranicu:
Dobra vijest je da su se sve naše stranice pojavile u meniju i klikom na svaku stavku menija prelazimo na odgovarajuću stranicu. (Da biste testirali ovaj element, dodajte malo teksta svakoj stranici, na primjer na stranici O stranici možete dodati “Ovo je stranica o stranici” i ova poruka će se pojaviti kada se stranica otvori. Zapamtite da moramo definirati predložak za svaku stranicu stranicu, ali u trenutno Neću da brinem o tome).
Loša vijest je da je formatiranje menija pokvareno, ali možemo to popraviti. Kliknite desni klik mišem na web stranici i pogledajte izvorni kod (ili koristite firebug za ovo), to ćete sada vidjeti Wayfinder generira HTML ovako:
- Dom
- O
- MODx CMS
- The Coding Pad
- The Blog
- Usluge
- Kontaktirajte nas
- Tutoriali
- FAQ
Kao što možete vidjeti, ovo izgleda vrlo slično našem početnom statičkom kodu sa nekoliko izuzetaka. Prvo, generiran je Wayfinder
- stavka bez klase sf-menu koji je korišten u našem statičkom kodu. Šablonu je potrebna ova klasa za rad sa CSS-om. To je takođe jasno
- stavke imaju parametar span, koji se odnosi na elemente teksta veze u originalnom statičkom kodu i nije prisutan u generiranom Wayfinder kodu. Pored toga, naš statički HTML kod ima klasu trenutna-stranica-stavka, koji nije predstavljen u našem Wayfinder kodu isječka. Svi ovi komadi koji nedostaju čine da naš meni izgleda neugledno.
Kako prilagoditi stil izlaza Wayfinder isječka
Gledajući kako Wayfinder generiše kod, postavlja se sasvim prirodno pitanje: “Kako možemo dodati dijelove koda koji nedostaju tako da želimo prikazati meni u obliku koji nam je potreban?” Odgovor je vrlo jednostavan, koristimo dijelove šablona za formatiranje izlaza Wayfinder isječka.
Wayfinder je fleksibilan alat i uz pomoć parametara koje možete definirati izgled izlaz. Neki opšti parametri vam omogućavaju da odredite na kom nivou da počnete da pravite meni, koje stavke ne treba uključiti u meni itd. Ostali parametri su parametri šablona, koji vam omogućavaju da postavite HTML šablonski kod za vaš meni, itd. Opisi ovih potonjih mogu se naći u zvaničnoj dokumentaciji - http://rtfm.modx.com/display/ADDON/Wayfinder.
Imajte na umu: Neki Wayfinder parametri imaju zadane vrijednosti.
Ovo objašnjava, na primjer, zašto u meniju koji je generirao Wayfinder, stavka Početna stranica ima naziv klase “ prvi aktivan" Ovo je podrazumevana klasa, ali možemo je nadjačati definisanjem sopstvenih klasa u delovima šablona.
U ovom vodiču ćemo koristiti nekoliko opcija Wayfinder-a, ali vas ohrabrujem da ih sve istražite i vježbate ih koristiti što je više moguće kako biste razumjeli sve njihove mogućnosti. Budući da su zadana podešavanja Wayfindera jasno dokumentirana na službenoj web stranici, bilo bi glupo govoriti o njima ovdje. Koristit ćemo sve više i više ovih dok radimo kroz različite menije.
Za početak rada na predlošku menija, napravimo neke mini šablone i spremimo ih u komadima. Vidjet ćete da u ovim dijelovima koristimo HTML kod, ali zamjenjujemo dinamičke elemente punila(ili placeholders kako ih još zovu) čija sintaksa izgleda ovako: [[+placeholder]]. Čuvari mjesta koje koristimo su specifični za Wayfinder isječak i njihova definicija je očigledna iz imena, ali uvijek možete pogledati MODx dokumentaciju za potpuniju pomoć.
Evo dijelova koje ću koristiti za kreiranje našeg predloška:
7in1menuOuter– sadržavat će HTML kod za naš vanjski ul kontejner.
Možete vidjeti da sam dodao klasu za vanjsku ul. Alternativni način da biste to uradili je da koristite čuvar mjesta wf.classes, a zatim dodajte naziv klase trenutnom pozivu na putu pomoću parametra vanjska klasa. Ali radi jednostavnosti, upotrijebimo prvi metod, ali oba će dobro funkcionirati...
7in1menuRow– će sadržati HTML kod stavki menija prvog nivoa
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]][[+wf.wrapper]]
- [[+menutitle]][[+wrapper]]
- [[+naslov menija]] ([[+djeca]]) [[+wrapper]]` &countChildren=`1` ]]
- . Nećemo ponovo pisati isječak, ali promjena klase u stilovima nije problem.
- Meni u obliku liste, tabele, slika, ikona itd.
- Statički meniji
- Meni sa raznim efektima (padajući meni, padajući meni itd.)
- Mapa sajta
- [[+wf.linktext]][[+wf.wrapper]]
- wf.classes - prikazuje klase preuzete iz skupa parametara Wayfinder (uključujući atribut class="")
- wf.classnames - prikaz imena klasa (bez class="")
- wf.wrapper - izlaz internog sadržaja (red).
- wf.classes - izlaz klase (uključujući atribut class="").
- wf.classnames - izlaz odgovarajućih klasa (bez class="")
- wf.link - href="" vrijednost atributa za link menija
- wf.title - naziv teksta naslova za vezu iz polja navedenog u parametru &titleOfLinks
- wf.linktext - tekst za aktivnu vezu navedenu u polju proslijeđenom u parametru &textOfLinks
- wf.wrapper - prikaz internog sadržaja, kao što je podmeni
- wf.id - prikazuje jedinstveni ID atributa. Morate navesti parametar &rowIdPrefix da bi ovaj čuvar mjesta primio vrijednost. Vrijednost je prefiks + docId.
- wf.attributes - prikazuje vezu atributa za trenutni element
- wf.docid - identifikator dokumenta trenutnog elementa
- wf.description - opis za trenutni element
- wf.level - trenutni nivo ugniježđenja
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]
[[+wf.title]]
[[+wf.title]]
Glavna ideja ovdje je da sam dodao oznaku na tekst veze menija kao u originalnom statičkom HTML kodu. Uključio sam i čuvar mjesta wf.classes i to će mi omogućiti da definiram klasu za trenutnu stranicu koja će nadjačati zadanu "aktivnu" klasu.
7in1menuInner– će sadržavati HTML kod internih ul kontejnera
- [[+wf.wrapper]]
7in1menuInnerRow– sadržavat će HTML kod za redove stavki internog nivoa
To je to, sada su naši delovi šablona na mestu, kao što vidite (reda radi, stavio sam ih u posebnu kategoriju):
Sada možemo promijeniti poziv Wayfindera tako da možemo koristiti ove mini šablone za izlaz Wayfindera. Ako pogledate listu parametara šablona (bilo bi korisno da imate otvoren http://rtfm.modx.com/display/ADDON/Wayfinder ispred sebe, ili ga odštampate i držite blizu ekrana), će vidjeti da sam nazvao svoje dijelove slično odgovarajućim parametrima poziva isječaka. Ovo sam uradio radi praktičnosti, pomaže mi da pratim šta je šta kada počnem da konstruišem svoj poziv. Dodajmo parametre i pozovimo naše dijelove. Wayfinder poziv će sada izgledati ovako:
[[!Wayfinder? &startId=`0` &outerTpl=`7in1menuOuter` &rowTpl=`7in1menuRow` &innerTpl=`7in1menuInner` &innerRowTpl=`7in1InnerRow` &hereClass=`current_page_item` &firstClass=`s] &lastClass]
Vrijednost parametra se stavlja u apostrofe (`), a ne u jednostruki navodnici (’).
Odlično, hajde da pogledamo ovaj izazov. Možete vidjeti da koristimo opcije šablona za pozivanje naših dijelova tako da Wayfinder ispisuje HTML koji nam je potreban s ispravnim klasama. Definisao sam pozvanog hereClass parametar i dao mu vrijednost trenutna_stavka_stranice tako da odgovara statičnom HTML šablonu. Možda ćete primijetiti da sam ostavio parametre firstClass I lastClass prazan. Razlog za to je što moj HTML šablon ne postavlja klasu za prvu i zadnju stavku menija, tako da sam prepisao prazne nizove u njima da bih izbegao preklapanje.
Vidi se da nam jelovnik izgleda baš onako kako smo željeli. Ispravni stilovi se koriste u padajućem meniju. Ako pogledate izvorni kod vidjet ćete da je generirano Wayfinder'om HTML kod se promijenio do neprepoznatljivosti:
Ovaj kod odgovara originalnom statičkom kodu našeg predloška, ali je generiran pozivom Wayfinder.
Postoji mnogo drugih opcija koje možete koristiti zajedno Wayfinder za izradu vaših menija. U sljedećim lekcijama ćemo pogledati složene menije i kako ih integrirati u Wayfinder. Da rezimiramo: naša web stranica je sada dobila neki oblik i imamo funkcionalan i dinamičan meni.
Isječak generiranja menija. Može zamijeniti Wayfinder i omogućava veću fleksibilnost u određivanju parametara.
Na primjer, može napraviti meni od nekoliko roditelja odjednom, prikazujući ih i zajedno iu odvojenim granama.
Daje značajno povećanje brzine samo pri prvom pokretanju, tada Wayfinder nije mnogo inferiorniji, zahvaljujući pravilnom keširanju.
Opcije
Prema zadanim postavkama, pdoMenu prihvata uobičajene parametre pdoTools-a i neke svoje:
Ime | Default | Opis |
---|---|---|
&roditelji | Trenutni resurs | Lista roditelja za traženje rezultata, odvojena zarezima. Ako stavite &roditelji=`0`- uzorak nije ograničen. Ako id roditelja počinje crticom, on i njegova djeca su isključeni iz odabira. |
&nivo | 0 (neograničeno) | Nivo generiranog menija. |
&resursi | Lista resursa koji će se prikazati u rezultatima, odvojenih zarezima. Ako id resursa počinje crticom, taj resurs je isključen iz odabira. | |
&predlošci | Lista predložaka za filtriranje rezultata, odvojenih zarezima. Ako id šablona počinje crticom, resursi s njim se isključuju iz odabira. | |
&gdje | Niz dodatni parametri uzorci, kodirani u JSON. | |
&displayStart | 0 | Omogući prikaz čvorova početnog menija. Korisno kada navedete više od jednog "roditelja". |
&kontekst | Ograničavanje uzorka kontekstom resursa. | |
&showHidden | 0 | Prikaži resurse skrivene u meniju. |
&prikažiNeobjavljeno | 0 | Prikaži neobjavljeni resursi. |
&pregledNeobjavljeno | 0 | Omogućite prikaz neobjavljenih resursa ako korisnik ima dozvolu za to. |
&sakrij podmenije | 0 | Sakrij neaktivne grane menija. |
&odaberi | Lista polja za odabir, odvojenih zarezima. Na primjer, možete specificirati JSON string s nizom &select=`("modResource":"id,naslov stranice,sadržaj")` | |
&razvrstaj | menuindex | Bilo koje polje resursa za sortiranje, uključujući TV parametar ako je navedeno u parametru &includeTVs, Na primjer &sortby=`("tvname":"ASC","pagetitle":"DESC")`. Možete navesti JSON string sa nizom od nekoliko polja. Za nasumično sortiranje navedite &sortby=`RAND()` |
&sortdir | A.S.C. | Smjer sortiranja: silazno ili uzlazno. Ako ostavite parametre &sortby i &sortdir prazne, sortiranje će biti po redoslijedu resursa u &resursi. |
&ograničiti | 0 | Ograničavanje broja rezultata uzorka. |
&offset | 0 | Preskakanje rezultata od početka. Mora se koristiti zajedno s izričito navedenim &ograničiti |
&provjerite Dozvole | Odredite koje dozvole treba provjeriti za korisnika prilikom prikaza resursa, na primjer &checkPermissions=`list`. | |
&countChildren | 0 | Precizno brojanje broja podređenih resursa svake kategorije i njihovo prikazivanje u [[+children]] čuvaru mjesta. Pravi dodatne zahtjeve bazi podataka, tako da je ona po defaultu onemogućena. |
&toPlaceholder | Ako nije prazan, isječak će sačuvati sve podatke u čuvar mjesta s ovim imenom umjesto da ga prikazuje na ekranu. | |
&plPrefix | wf. | Prefiks za izložene čuvare mjesta. |
&showLog | 0 | Pokaži dodatne informacije o tome kako isječak funkcionira. Samo za ovlaštene korisnike u kontekstu “mgr”. |
&fastMode | 0 | Brzi način obrade komada. Sve neobrađene oznake (uslovi, isječci, itd.) će biti izrezane. |
&cache | 0 | Keširanje rezultata isječaka. |
&cacheTime | 3600 | Vrijeme valjanosti keš memorije, u sekundama. |
&shema | -1 | Šema formiranja URL-a se prosljeđuje modX::makeUrl(), tako da moguće opcije treba . Posebni tip uri zamjenjuje vrijednost uri resursa bez pokretanja funkcije. |
&useWeblinkUrl | 1 | Generirajte vezu na osnovu klase resursa. |
&rowIdPrefix | Prefiks id="" za postavljanje identifikatora u komadu. | |
&ovdjeId | id trenutnog resursa za generirani meni. Treba ga specificirati samo ako ga sama skripta pogrešno definira, na primjer, kada prikazuje meni iz dijela drugog isječka. | |
&includeTVs | Lista TV parametara za odabir, odvojenih zarezima. Na primjer &includeTVs=`akcija,vrijeme`će dati čuvare mjesta [[+akcija]] i [[+vrijeme]] . | |
&prepareTVs | Lista TV parametara, sa fajlovima iz medijskih izvora za koje treba generisati pune putanje. Ako instalirate &prepareTVs=`1`, svi TV navedeni u &includeTVs. | |
&processTVs | Lista TV parametara koje treba obraditi i prikazati u skladu sa njihovim postavkama u upravitelju sistema. Ako instalirate &processTVs=`1`, svi televizori navedeni u &includeTVs. Usporava rad. | |
&tvPrefix | Prefiks za TV parametre. |
Opcije predloška
Ovi parametri postavljaju delove koji sadrže šablone za generisanje menija.
Ime | Opis |
---|---|
&tplOuter | Deo dizajna celog bloka menija. Zadano: @INLINE
|
&tpl | Komad dizajna stavke menija. Ako nije navedeno, sadržaj polja resursa će biti odštampan na ekranu. Zadano: @INLINE |
&tplHere | Deo dizajna trenutne stavke menija. |
&tplStart | Deo dizajna osnovne stavke, pod uslovom da je omogućen &displayStart. Zadano: @INLINE [[+naslov menija]][[+omotač]] |
&tplParentRow | Deo dizajna roditelja sa decom koji ne potpada pod uslove &tplCategoryFolder. Na primjer: @INLINE |
&tplParentRowHere | Dizajniran komad trenutnog dokumenta, ako sadrži potomke. |
&tplParentRowActive | Deo dizajna roditelja sa potomcima u aktivnoj grani menija. |
&tplCategoryFolder | Komad dizajna posebne kategorije. Kategorijom se smatra roditelj sa djecom čija prazan šablon ili rel="category" u polju link_attributes. |
&tplInner | Deo dizajna celog bloka podstavki menija. Ako je prazno, koristit će se &tplOuter. Na primjer: @INLINE |
&tplInnerRow | Odjeljak dizajna pod-stavka menija. Na primjer: @INLINE |
&tplInnerHere | Komad za dizajn aktivne podstavke menija. |
Opcije CSS klase
Ovi parametri postavljaju vrijednost [[+classnames]] i [[+classes]] čuvara mjesta za različite stavke menija. Čuvar mjesta [[+classnames]] prikazuje samo ime klase bez atributa class="", za razliku od [[+classes]] čuvara mjesta.
Primjeri
Uobičajeni izlaz menija iz korijena stranice na jedan nivo:
[]
Izlaz koji isključuje određene roditelje i provjerava korisničke dozvole:
[]
Prikaz menija od dva roditelja istovremeno, koji prikazuje osnovne tačke:
[]
Prikaz dva nivoa resursa sa brojanjem ugniježđenih:
[]` &tplParentRow=`@INLINE
Za kreiranje dinamičkog menija koristit ćemo gotov isječak Wayfinder. Isječak, kao što se nadamo da se sjećate iz prethodnih lekcija, je dio PHP koda koji možemo uključiti u naš predložak. Razlika od chunkova je samo u kodu i metodi pozivanja. Ako zovemo dio pomoću dvostrukih vitičastih zagrada, tada se isječci pozivaju koristeći sljedeće [!Snippet_name!]- ne-keširani poziv ili slično [[SnippetName]]- keširani poziv. Svaki isječak koda mora početi sa i kraj ?> . Osim toga, svaki isječak se može proslijediti posebna značenja parametre koje će obraditi. MODx već ima nekoliko gotovih isječaka koje ćemo koristiti u budućnosti.
Snippet Wayfinder služi za organizovanje lista linkova za MODx. Meni naše stranice je lista takvih veza. Hajde da prvo pronađemo deo koda koji je odgovoran za prikaz našeg menija. Meni je u komadu HEADER, evo ga:
Izrežimo ovaj kod i umjesto toga napišimo:
((MENU))
I zalijepit ćemo kod u novi dio MENU, u opisu komada ćemo napisati Meni sajta. Hajde da sada proučimo ovaj kod.
Meni naše stranice je jednostavna, nenumerirana lista koja se nalazi u kontejneru sa id="templatemo_menu". Izrežemo ovu listu iz kontejnera i umjesto toga ubacimo poziv u naš isječak:
&startId=`0` je parametar sa vrijednošću 0, koji isječku ukazuje na ID foldera u kojem se nalaze obrađeni dokumenti. Svi naši dokumenti koje ćemo prikazati u meniju nalaze se u root folderu, ID root foldera je nula. Hajde da vidimo šta imamo.
Naš meni radi, samo aktivna stavka više nije istaknuta bijelom bojom:
Da bismo razumjeli zašto se to dogodilo, moramo pogledati izvorni kod stranice. IN Mozilla Firefox to se radi ovako: Pogledaj >> Izvorni kod stranice ili jednostavno pritiskom na prečicu na tastaturi Ctrl+U. Pronađite kod za naš meni:
Imajte na umu da u izvorni kod aktivna tačka je imala class="trenutni", a naš isječak automatski dodjeljuje aktivnoj stavci class="aktivan". Također primjećujemo da je u izvornom kodu klasa primijenjena na oznaku
, a sada na oznaku
Pronađite datoteku u fascikli C:/xampp/htdocs/site/www/assets/templates/ templatemo_style.css i otvorite ga koristeći Notepad++. Tražimo opis trenutne klase u ovoj datoteci, ona se nalazi u 198 linija:
#templatemo_menu li .current(
padding-left: 40px;
boja: #ffffff;
}
zamijeni klasu struja on aktivan, ne zaboravljajući da ga ponovo dodijelite oznaci :
#templatemo_menu li.active a (
padding-left: 40px;
boja: #ffffff;
}
Sačuvajte fajl. Da vidimo šta se desilo.
Naš jelovnik je funkcionirao točno onako kako su dizajneri zamislili. Sada možemo da se krećemo kroz stranice našeg sajta koristeći naš glavni meni. Kada dodate druge dokumente u osnovni folder, oni će se automatski pojaviti u našem meniju. Da biste spriječili da se neželjeni dokumenti prikazuju u meniju, poništite ih Prikaži u meniju. Pomoću parametra možete nasilno isključiti neželjenu stavku &excludeDocs=`lista ID-ova izuzetih dokumenata, odvojenih zarezima`.
Kako bismo spriječili da meni prikazuje podređene dokumente koje ćemo kreirati u sljedećim lekcijama, dodajmo parametar pozivu isječka nivo, koji određuje broj nivoa u meniju, podrazumevano će biti prikazani svi nivoi, ograničićemo ga na samo jedan nivo:
Wayfinder služi za organizovanje lista linkova za MODX. Zahvaljujući podršci šablona, omogućava vam da prikažete liste u bilo kom željenom obliku:
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktivan`
&rowClass=`eNav_li`]]
Parametri snipeta:
&startId- id roditeljske stranice, ako navedete 0 to će biti iz korijena stranice. Zadana vrijednost je id aktivne stranice
&displayStart - prikaži dokument sa startId-om u naslovu menija, podrazumevano netačno
&nivo- dubina gniježđenja, default 0 - svi nivoi
&ograničiti- ograničiti broj stranica u izlazu (podrazumevano 0 - bez ograničenja)
&ignoreHidden- zanemarite checkbox na stranici "Prikaži u meniju", tj. ako navedete 1, prikazat će se sve stranice. Podrazumevano je 0. Prikazuju se samo one stranice koje imaju potvrđen izbor u polju za potvrdu „Prikaži u meniju“.
&ph - naziv zamjene koja zamjenjuje direktno ispisane rezultate. Podrazumevano je 0.
&debug- način otklanjanja grešaka (podrazumevano 0)
&sakrij podmenije - proširi samo aktivni podmeni (podrazumevano 0)
&ukloni nove linije- uklanja znak prijeloma reda tokom izlaza (podrazumevano 0)
&textOfLinks- za naziv linka menija. Moguće opcije:menititle, id, naslov stranice, opis, roditelj, alias, longtitle, uvodni tekst . Default menutitle
&titleOfLinks- za naslov linka menija:menititle, id, naslov stranice, opis, roditelj, alias, longtitle, uvodni tekst. Default pagetitle
&rowIdPrefix- postavlja id (rowIdPrefix + docId) za svaki element. Podrazumevano 0
&includeDocs- id dokumenata odvojenih zarezima koji će biti uključeni u meni (nije specificirano po defaultu)
&excludeDocs - id dokumenata odvojenih zarezima koji će biti isključeni iz menija (podrazumevano 0)
&konteksti- kontekst za generisanje menija. Podrazumevano je trenutno.
&startIdContext - Identifikator konteksta iz kojeg se preuzimaju dokumenti za generiranje rezultata.
&config - Eksterni PHP fajl za skladištenje konfiguracije Wayfinder-a (primjer: jezgro/komponente/wayfinder/configs).
&shema - Format za generiranje URL-ova. Moguće vrijednosti (na osnovu poziva API-ja makeURL):
1: (podrazumevano) URL u odnosu na site_url;
0: vidi http;
1: vidi https;
puni: apsolutni URL koji počinje sa site_url;
abs: apsolutni URL koji počinje sa base_url;
http: apsolutni URL, prisiljen u http šemi;
https: apsolutni URL, prisiljen u https šemi.
&sortby - Polje po kojem se vrši sortiranje. (podrazumevano menuindex)
Opcije:
id, meni, naslov stranice, uvodni tekst, indeks menija, objavljeno, skriveni meni, roditelj, isfolder, opis, alias, longtitle, tip, predložak&sortOrder- Redosled sortiranja."ASC" ili "DESC". Zadani ASC
&gdje - JSON stil parametara filtriranja (Odgovara gdje u MySQL). Na primjer, kada trebate sakriti blog ili vijesti iz dodatka za članke: &where=`[("class_key:!=": "Article")]`
primjeri:
samo izlazne fascikle: & gdje = `isfolder = 1
&ovdjeId - Odredite trenutni ID koji ćete koristiti u isječku. Koristite vrijednost [[*id]] ako je predložak specificiran pomoću parametra hereTpl i activeRowParentTpl nije ispravno primijenjen u stavci izbornika. Zadana vrijednost je trenutni ID.
Treba ga specificirati samo ako ga sama skripta pogrešno definira, na primjer, kada prikazuje meni iz dijela drugog isječka.
&ovdjeTpl - Predložak hereTpl se koristi kada je trenutna stavka prikazana u meniju.
Moguća rezervirana mjesta:
[[+wf.classes]] - mjesto za navođenje CSS klase za korištenje (uključuje class=" ")
[[+wf.classnames]] - sadrži samo naziv CSS klase (ne uključuje class=" ")
[[+wf.link]] - adresa (href) za link
[[+wf.title]] - tekst za naslov linka
[[+wf.linktext]] - tekst naslova linka
[[+wf.wrapper]] - mjesto za prikaz podmenija
[[+wf.id]] - izlaz jedinstvenog identifikatora (id)
[[+wf.attributes]] - prikaz dodatnih atributa veze
[[+wf.docid]] - identifikator dokumenta za trenutni element
[[+wf.subitemcount]] - broj stavki u folderu
[[+wf.description]] - prikazuje vrijednosti polja opisa
[[+wf.introtext]] - prikazuje vrijednosti polja uvodnog teksta
Primjer šablona:
Opcije predloška
Ovi parametri određuju dijelove koji sadrže obrasce koji će generirati Wayfinder izlaz.
U trenutnoj verziji Wayfindera za MODX Revolution, možete pristupiti svojim prilagođenim televizorima koristeći čuvare mjesta za wf prefiks. , na primjer [[+my_TV]]
U vrijeme pisanja, bit će vraćene samo originalne TV vrijednosti - one neće biti formatirane. Na primjer, ako je vaš TV slika - normalna upotreba je da će TV unutar vašeg predloška vratiti punu oznaku slike, ali unutar predloška Wayfinder - bit će vraćen samo put do slike.
Ako želite upravljati TV-om, to možete učiniti tako što ćete pozvati isječak unutar predloška reda Wayfinder (&rowTpl . Na primjer, vaša TV slika se zove ikona i obično šablon koristi kod kao što je ovaj za izlaz:
... ...
Ali budući da vam ovo neće omogućiti obradu TV-a, morate ga zamijeniti sa:
... ...
A sada unutar isječka processTV postavljamo sljedeći PHP kod:
getObject("modResource", $myId); return $doc->getTVValue($myTV);
Kao rezultat, vraća se potpuno obrađena TV slika.
&outerTpl
Ime dijela koji sadrži predložak vanjskog spremnika.
Dostupna rezervirana mjesta:
&innerTpl parametar sadrži isti skup čuvara mjesta kao &outerTpl.
&rowTpl
Ime dijela koji sadrži predložak za elemente reda menija.
Dostupna rezervirana mjesta:
Primjer upotrebe:
Druga opcija:
Primjeri
Prvi nivo
[[!Wayfinder? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktivan`
&rowClass=`eNav_li`]]
Vanjski kod dijela koda
[[+wf.wrapper]]
RowTpl dio koda
[[+wf.wrapper]]
Drugi nivo (u ovom primeru stavke menija i podmenija vizuelno su na istom nivou
[[!Wayfinder? &startId=`0` &level=`2`
&rowTpl=`rowTplFooterMenu`
&outerTpl=`outerTplFooterMenu`
&innerTpl=`innerTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`aktivan`]]
Kod dijela outerTplFooterMenu
[[+wf.wrapper]]
kod dijela rowTplFooterMenu
[[+wf.wrapper]]
innerTplFooterMenu kod dijela
[[+wf.wrapper]]
kod dijela innerRowTplFooterMenu