Daudzlīmeņu MODX izvēlne, izmantojot Bootstrap. PdoMenu - izveidojot izvēlni MODX Wayfinder, nosaukumi starp diapazoniem netiek parādīti
Bet tas nav priekš mums ;).
Mēs darīsim visu no nulles. Kāpēc mums (man) tas bija vajadzīgs, jo jau ir gatavas iespējas? Jo man labāk patīk šādi. Jo šī pieeja, manuprāt, ir vispareizākā. Jo, zinot, kā izstrādāt savējo, varam viegli saprast svešu kodu, to mainīt, izlabot kļūdas vai papildināt ar konkrētajā gadījumā nepieciešamo funkcionalitāti. Un galu galā pašam gatavot bieži ir tik jauki!
Turpmākajā stāstījumā tiks pieņemts, ka lasītājam ir minimālas zināšanas par PHP programmēšanu. Teorētiski tie cilvēki, kuri vispār nesaprot kodu, varēs kopēt kodu un reproducēt visas darbības, par kurām tiks runāts tālāk. Tomēr viņiem var būt labāk izmantot gatavus fragmentus a la Ditto, jo tie nodrošina daudz iespēju ārējai konfigurācijai, neiekļūstot galvenajā kodā.
Negribu strīdēties par to, kas ir labāk lietotājam - ņemt gatavu vai izstrādāt savu... Abiem gadījumiem ir savi plusi un mīnusi. Man personīgi otrajā variantā ir vairāk priekšrocību. Arī katrs lasītājs izlems pats.
Tātad, apskatīsim mūsējo vēlreiz. Tā kā mūsu vietnē ir diezgan daudz dažādu programmatūras daļu un mums kaut kur jāsāk, tāpēc ieprogrammēsim...
Augšējā izvēlne
Ar terminu “augšējā izvēlne” es domāju saišu kopu uz lapām vietnes augšdaļā (skatiet attēlu zemāk):
Es ļoti detalizēti aprakstīšu pirmo fragmenta izveides piemēru. Turpmāk koncentrēšos galvenokārt uz nozīmīgākajām detaļām.
Salīdzināsim to ar mūsu vietnes koku pārvaldības sistēmā, kuru izveidojām iepriekšējā rakstā:
Kā redzams attēlā, vietnes kokā ir izcelti četri dokumenti (proti, “Blogs”, “Par autoriem”, “Fotogrāfijas” un “ Atsauksmes"), kas pēc tam izveidos saites augšējā izvēlnē.
Atgādināšu arī, ka iepriekš esam paslēpuši dokumentus, kurus nevēlamies rādīt izvēlnē. Piemēram, dokumenta “Meklēšana vietnē” iestatījumos mēs noņēmām izvēles rūtiņu “Rādīt izvēlnē” un paslēpām divus atlikušos dokumentus “Saites” un “Kategorijas”, noņemot atzīmi no izvēles rūtiņas “Publicēt”. dokumenta iestatījumi (cilne “Lapas iestatījumi”) dokumenta iestatījumos).
Tādējādi iepriekšējā rakstā mēs sagatavojām vadības sistēmas augšējo izvēlni.
Tagad pāriesim pie jautājuma par mūsu darbību attēlošanu tieši vietnē.
Lielāko daļu vietnē esošo programmu izpilda t.s. " ", t.i. atsevišķas koda daļas (tās var saprast arī kā atsevišķas funkcijas vai apakšprogrammas) PHP. Tāpēc, lai MODx ieviestu augšējās izvēlnes attēlojumu, mums ir arī jāizveido jauns fragments, tas jāieprogrammē un veidnē īstajā vietā jāpievieno šī fragmenta izsaukums.
Dosimies uz pārvaldības sistēmu, atveram cilni "Resursi" -> "Resursu pārvaldība" -> cilni "Fragmenti" un noklikšķiniet uz saites "Jauns fragments". Laukā “Fragmenta nosaukums” ievadiet “TopMenu” bez pēdiņām un pagaidām saglabājiet tukšo fragmentu bez koda. Pēc saglabāšanas cilnē “Fragmenti” redzēsim mūsu fragmenta nosaukumu.
Atgādināšu, ka mūsu veidnē augšējo izvēlni ievietojām sadaļā “TOPMENU”. Pārslēgsimies uz cilni "Cunks" un atveriet " " gabalu. Šīs daļas saturā mēs redzēsim šādu kodu:
- Emuārs
- Par autoriem
- Fotogrāfijas
- Atsauksmes
Šis kods veido mūsu ēdienkarti. Komentēsim to un pievienosim izsaukumu "TopMenu" fragmentam šajā daļā:
[]
Šeit atkal būs nedaudz jāatkāpjas, lai izskaidrotu šīs konstrukcijas nozīmi []. Fakts ir tāds, ka ar tādu konstrukciju palīdzību kā [] vai [!SnippetName!] mēs varam izsaukt fragmentus jebkur mūsu veidnēs, gabalos un pat tikai jebkurā atsevišķā vietnes lapā.
Šajā gadījumā konstrukcija [] apzīmē izsaukumu kešatmiņā fragments, t.i. izsaucot dinamisku apakšprogrammu, kuras rezultāts tiks aprēķināts un izpildīts vienu reizi, un pēc tam, ielādējot lapu, kurā tiek izsaukts šis fragments, rezultāts paliks nemainīgs, jo fragments vairs netiek saukts vēlreiz. Tādā veidā mēs ietaupām resursus savā tīmekļa serverī (un tas vienmēr ir ļoti svarīgi, ja resursam ir liela trafika).
Tomēr ir situācijas, kad jums visu laiku ir nepieciešams atkārtoti izpildīt fragmenta kodu un jūs nevarat saglabāt rezultātus kešatmiņā. Šādos gadījumos tiek izmantota [!SnippetName!] konstrukcija, kas vienmēr piespiedīs fragmentu izpildīt bez kešatmiņas saglabāšanas. Pēc analoģijas šo konstrukciju sauc par zvanu nav kešatmiņā fragments.
Tātad, saglabāsim daļu "TOPMENU" un atjaunināsim vietnes lapu. Hmm, dīvainā kārtā augšējā izvēlne ir pazudusi. Bet vai tas tiešām ir tik pārsteidzoši? Komentējot izvēlnes HTML kodu gabalā, mēs paslēpām tā attēlojumu pārlūkprogrammā (pārbaudiet to apskatot avota kodu HTML lapas). Taču mūsu “TopMenu” fragments neko nedara, jo tam vēl nekas nav pievienots. Izlabosim šo trūkumu :).
Atgriezīsimies pie cilnes "Fragmenti", atveram izveidoto "TopMenu" fragmentu un mēģināsim pārbaudīt tā iespējas... Pacietību, mani pieredzējušie lasītāji, ne visi ir pazīstami ar šīm detaļām.
Vispirms uzrakstīsim vienkāršāko kodu (parasto PHP kodu):
atbalss "Pārbaude...";
?>
Pirms saglabāšanas atlasiet “Turpināt rediģēšanu”, jo mums būs vairāk nekā vienu reizi jāmaina mūsu fragmenta saturs, un pēc tam mēs saglabāsim fragmentu. Atsvaidzināsim vietnes lapu un augšējās izvēlnes vietā redzēsim... nu, godīgi sakot, no pirmā acu uzmetiena gandrīz nekādas izmaiņas neredzēsim, izņemot nedaudz izvērsto zilo izvēlnes fonu. Nospiedīsim "CRTL+A", lai atlasītu visu vietnes lapas tekstu, un mēs redzēsim, ka mūsu fragments tomēr parāda tekstu "Pārbaude..." izvēlnes vietā, tikai teksta krāsa atbilst fona krāsai. .
Mainīsim fragmenta kodu uz šādu:
atbalss" Notiek testēšana...";
?>
Tagad mēs skaidri redzam, ka mūsu fragments darbojas un pat (!) parāda kādu tekstu. Tas ir lieliski, taču mūsu uzdevumam nepietiek, jo mums ir jānodrošina, lai mūsu fragments parādītu saites no vadības sistēmas un tieši tajā pašā HTML kodā, kuru mēs komentējām sadaļā “TOPMENU”.
Un atkal neliela uzmanības novēršana...
Visa dokumentu attiecību sistēma MODx ir veidota pēc principa: katrs “vecāku dokuments” satur no nulles līdz daudziem “bērnu dokumentiem” (“vecāks” -> “bērni”).
Katram dokumentam MODx datubāzē ir savs unikālais identifikators “ID” — tas ir numurs, ko mēs redzam iekavās vietnes kokā blakus katram dokumentam.
Starp citu, šim unikālajam identifikatoram ir tikai viena nozīme - tas unikāli identificē konkrētu dokumentu vadības sistēmā un nekas vairāk! Es īpaši uzsveru šo faktu, jo esmu saskāries ar atkārtotiem mēģinājumiem mainīt šos identifikatorus visdažādākajiem mērķiem... Jums uzreiz jāatceras, ka tas ir vienkārši bezjēdzīgi, tāpēc nemēģiniet mainīt šos skaitļus. Jums nevajadzētu pievērst tiem lielu uzmanību; parasti šie skaitļi tiek vienkārši izmantoti, lai ģenerētu saites uz noteiktiem dokumentiem.
MODx datu bāze katram dokumentam izveido arī īpašu "vecāku" lauku. Šī lauka vērtība ir skaitlis, kas norāda vai nu vecākdokumenta unikālo identifikatoru, vai nulle, ja dokuments atrodas koka saknē. Tādējādi jūs vienmēr varat nepārprotami noteikt, kurš dokuments ir konkrētā dokumenta vecākdokuments.
Lai skaidri redzētu, par ko mēs tikko runājām, atveriet phpMyAdmin, atlasiet savu datu bāzi un atrodiet tabulu (PREFIX)site_content, kur (PREFIX) ir jūsu prefikss, ko ievadījāt instalēšanas laikā. Jūs redzēsit daudzus laukus, kuros tiek glabāti konkrēti dokumenta dati, tostarp "ID" - unikāls identifikators, "parent" - vecākdokumenta numurs, "pagetitle" - lapas nosaukums un citi.
Tātad, izmantojot šo informāciju par dokumentu glabāšanas un savienošanas principu MODx, mēs varam saprast, kā iegūt nepieciešamos datus, lai parādītu augšējās izvēlnes saites: mums ir jāatrod datu bāzē visi dokumenti, kas atrodas vietnes saknē. koks, t.i. laukā “parent” ir vērtība nulle.
Izmantojot SQL valoda, līdzīgs pieprasījums ir aprakstīts apmēram šādi (varat mēģināt ievadīt šo pieprasījumu phpMyAdmin SQL ievades laukā pēc "modx_" aizstāšanas ar prefiksu):
ATLASĪT*
NO `modx_site_content'
KUR “vecāks” = 0;
Tomēr šāds pieprasījums atgriezīs mums pilnīgi visus dokumentus no vietnes saknes, kas nav pilnīgi pareizi, pamatojoties uz galveno uzdevumu - parādīt saites tikai uz tiem dokumentiem, kuriem ir:
- publicēts statuss (datubāzē šo vienumu attēlo lauks “publicēts”, kur vērtība = 1 nozīmē, ka dokuments ir publicēts, un vērtība = 0 nozīmē nepublicēts).
- undzēsts (lauks "dzēsts", kur 1 tiek dzēsts un 0 netiek dzēsts),
- un kuriem ir iestatīta opcija “Rādīt izvēlnē” (lauks “hidemenu”, kur 1 nozīmē paslēpt un 0 nozīmē parādīt izvēlnē).
Turklāt, nedaudz skatoties uz priekšu, uzreiz sakārtosim dokumentus pēc parametra “Pozīcija izvēlnē”, kas noteiks katras saites pozīciju mūsu izvēlnē.
No SQL viedokļa tas ir pavisam vienkāršs uzdevums, un to var atrisināt šādi:
ATLASĪT*
NO `modx_site_content'
KUR `publicēts` = 1
UN “vecāks” = 0
UN "dzēsts" = 0
UN slēptā izvēlne = 0
SĀKOT PĒC `menuindex` ASC;
Teorētiski visus SQL vaicājumus var izpildīt fragmentos tieši, izmantojot PHP skripti, katru reizi savienojot datu bāzi no jauna un veicot daudzas citas ikdienas darbības, atkārtojot tās atkal un atkal... Bet, redziet, tas noliegtu ietvara izmantošanas jēgu, kas mūsu pārvaldības sistēma noteikti ir, jo MODx, starp citām priekšrocībām, nodrošina gatavs komplekts līdzekļus programmatūras interfeiss(API, lietojumprogrammu saskarne). API ir programmatūras funkcijas, kas apvieno un atvieglo daudzus datu apstrādes procesus.
Savā fragmentā izmantosim kādu no minētajām API funkcijām “getDocumentChildren”. Funkcija "getDocumentChildren" kā parametrus saņem šādus datus:
- $id — vecāka dokumenta numurs,
- $active — atlasiet tikai publicētos vai nepublicētos dokumentus (attiecīgi 1 vai 0),
- $dzēsts — atlasiet tikai dzēstos vai neizdzēstos dokumentus (1 | 0),
- $fields - lauki, kas ir atlasīti no datu bāzes,
- $kur - īpaši nosacījumi, t.i. KUR stāvoklī SQL vaicājums,
- $sort — lauks, pēc kura jākārto rezultāti
- $direction - kārtošanas virziens, var ņemt ASC vai DESC vērtības, t.i. kārtot no mazākās uz lielāko vērtību vai otrādi
- $limit - pieprasījuma limits, t.i. LIMIT nosacījums SQL vaicājumā
$results = $modx->getDocumentChildren(
$id = 0,
$aktīvs = 1,
$dzēsts = 0,
$kur = "hidemenu = 0",
$sort="izvēlnes indekss",
$dir="ASC",
$ limits
);
Drukāt ("
Foreach($rezultāti kā $key => $vērtība) (
print_r($vērtība);
}
Drukāt ("");
?>
Saglabājiet fragmentu un atsvaidziniet lapu. Atjauninātā "TopMenu" fragmenta izpildes rezultātā jūs redzēsit masīvu un to vērtību sarakstu, kas sakārtots pēc lauka "menuindex" vērtībām no mazākā līdz lielākajam. Mēģiniet mainīt parametru $dir="ASC" uz $dir="DESC" - rezultātā masīvi tiks pārbūvēti un dokuments ar lielāko "menuindex" lauka vērtību tiks parādīts kā pirmais dokuments.
Pieredzējuši programmētāji droši vien saprot, ka iegūtais rezultāts jau nodrošina visu nepieciešamo, lai izveidotu gatavu izvēlni ar saitēm. Nu, gandrīz viss. Jebkurā gadījumā es turpināšu: pārrakstīsim PHP kodu, lai pēc iespējas tuvāk sasniegtu vēlamo rezultātu.
$results = $modx->getDocumentChildren(
$id = 0,
$aktīvs = 1,
$dzēsts = 0,
"id, lapas nosaukums, publicēts, izvēlnes indekss, izdzēsts, slēpt izvēlni, izvēlnes nosaukums",
$kur = "hidemenu = 0",
$sort="izvēlnes indekss",
$dir="ASC",
$ limits
);
$items = "";
$izeja = "";
Foreach($rezultāti kā $key => $vērtība) (
$items .= "
".$value["lapas nosaukums"]."
}
Ja ($items != "") (
$izeja = "
- \n";
$izeja .= $preces;
$izeja .= "
}
Atgriezt $izeju;
Mēs neanalizēsim kodu sīkāk, jo tas ir visparastākais PHP kods, nekas vairāk. Ja kāds nesaprot kādu konstrukciju nozīmi, lūdzu, atstājiet komentāru vai vēl labāk - dodieties uz attiecīgajiem atbalsta forumiem.
Saglabāsim jauno fragmenta kodu un atsvaidzināsim lapu. Koda izpildes rezultātā mēs redzēsim gandrīz to, ko vēlējāmies iegūt:
Tie. Tās jau ir automātiski ģenerētas saites, kuru struktūra pilnībā atkārto MODx kokā esošo dokumentu struktūru. Lai to pārbaudītu, mēģiniet vietnes saknē izveidot testa dokumentu un atsvaidzināt lapu.
Tomēr tas vēl nav viss. Daudzi droši vien jau ir pamanījuši, ka ir saites, bet nav... Paradokss :). Es domāju, ka izvēlnē tiek parādīti dokumentu nosaukumi, bet saites uz tiem nedarbojas. Tas ir loģiski, jo pagaidām saites kods reālo ceļu vietā parāda "#".
Lai atrisinātu šo problēmu, jums jāapgūst vēl viena ļoti noderīga MODx funkcija: jebkuras vietnes iekšējās lapas adresi var iegūt, izmantojot šādu konstrukciju [~id~], kur id ir unikālais numurs nepieciešamo dokumentu, t.i. tas pats numurs, kas norādīts iekavās blakus katra dokumenta nosaukumam vietnes kokā. Tādējādi, pievienojot šādu konstrukciju [~1~] veidnes/gabala/lapas saturā,
-
- indekss – dokumenta "Blogs" aizstājvārds, ja kā dokumenta aizstājvārdu ievadījām "index", vai
- 1.html, ja dokumenta "Blogs" laukā "Segvārds" neko neievadījām
- ja draudzīgās saites ir atspējotas, mēs redzēsim tekstu index.php?id=1
Pārrakstīsim fragmentu, izmantojot šo informāciju:
$results = $modx->getDocumentChildren(
$id = 0,
$aktīvs = 1,
$dzēsts = 0,
"id, lapas nosaukums, publicēts, izvēlnes indekss, izdzēsts, slēpt izvēlni, izvēlnes nosaukums",
$kur = "hidemenu = 0",
$sort="izvēlnes indekss",
$dir="ASC",
$ limits
);
$items = "";
$izeja = "";
Foreach($rezultāti kā $key => $vērtība) (
$items .= "
".$value["lapas nosaukums"]."
}
Ja ($items != "") (
$izeja = "
- \n";
$izeja .= $preces;
$izeja .= "
}
Atgriezt $izeju;
Tāpēc mēs nomainījām # uz [~".$value["id"].."~], t.i. faktiski katram dokumentam no masīva tā unikālais ID tiek aizstāts [~id~] konstrukcijā. Rezultātā mēs iegūstam izvēlni ar darba saitēm.
Esam gandrīz sasnieguši ideālu... Tomēr arī šobrīd vēl ir viena detaļa, kas jāņem vērā: dizainere noteica, ka mūsu aktīvā saite ir jāizceļ ar baltu fonu un saites krāsa attiecīgi jāmaina uz oranžu.
Lai to panāktu, mēs atkal atklāsim MODx CMS noslēpumus :). API ir paslēpta funkcija $modx->documentIdentifier, kas atgriež pašreizējās lapas unikālā identifikatora vērtību. Mums tas būs nepieciešams, lai noteiktu aktīvo lapu un izceltu to izvēlnē:
$results = $modx->getDocumentChildren (
$id = 0,
$aktīvs = 1,
$dzēsts = 0,
"id, lapas nosaukums, publicēts, izvēlnes indekss, izdzēsts, slēpt izvēlni, izvēlnes nosaukums",
$kur = "hidemenu = 0",
$sort="izvēlnes indekss",
$dir="ASC",
$ limits
);
$cid = $modx->documentIdentifier;
$items = "";
$izeja = "";
Foreach($rezultāti kā $key => $vērtība) (
if ($value["id"] == $cid) (
$active = " id=\"active\"";
}
cits(
$aktīvs = "";
}
$items .= "
".$value["lapas nosaukums"]."
}
Ja ($items != "") (
$izeja = "
- \n";
$izeja .= $preces;
$izeja .= "
}
Atgriezt $izeju;
Nu, kā tas izdevās? Tas izdevās!
Bet jūs taču nedomājāt, ka ar to viss beigsies, vai ne? Un tas ir pareizi. Uzliekam sev augstāko latiņu, vēlamies izmantot MODx maksimālās iespējas. Un tāpēc ir vēl viena maza detaļa, kuru mēs palaidām garām.
Sīki apskatīsim to lauku nosaukumus, kurus pieprasām, izmantojot funkciju getDocumentChildren: "id, pagetitle,publiced, menuindex, deleted, hidemenu, menutitle". Starp tiem ir tāds lauks kā "menutitle". Kā norāda nosaukums, šajā laukā var saglabāt izvēlnes nosaukums. Vadības sistēmai ir arī ievades lauks "Izvēlnes vienums". Šis lauks nav obligāts. Taču loģika ir tāda, ka, ja šis lauks ir aizpildīts, tad mums ir jāaizstāj saites teksts izvēlnē ar lietotāja ievadīto. Nu, darīsim tā:
/********************************
Nosaukums: augšējā izvēlne
Mērķis: parādīt augšējo izvēlni
Projekts: MODx Demosite
********************************/
$results = $modx->getDocumentChildren(
$id = 0, // vecākdokumenta ID
$active = 1, // Atlasīt tikai publicētos dokumentus
$deleted = 0, // Atlasiet tikai neizdzēstos dokumentus
"id, lapas nosaukums, publicēts, izvēlnes indekss, izdzēsts, hidemenu, menutitle", // Atlasīt laukus no datu bāzes
$where = "hidemenu = 0", // Izvēlnē atlasiet tikai tos dokumentus, kas jāpublicē
$sort="menuindex", // Kārtot dokumentus pēc izvēlnes indeksa lauka
$dir="ASC", // Kārtot dokumentus augošā secībā
$limit = "" // Mēs nenosakām ierobežojumus (LIMIT parametrs SQL vaicājumā)
);
$cid = $modx->documentIdentifier; //iegūstiet pašreizējās lapas ID
$items = "";
$izeja = "";
Foreach($rezultāti kā $key => $vērtība) (
if ($value["id"] == $cid) (
$active = " id=\"active\"";
}
cits(
$aktīvs = "";
}
if ($value["menutitle"] != "") (
$nosaukums = $value["menutitle"];
}
cits(
$nosaukums = $vērtība["lapas nosaukums"];
}
$items .= "
".$title."
}
// Ja izdotos kaut vienu atrast izvēlnes vienums,
// izveidot HTML izvēlnes kodu
if ($items != "") (
$izeja = "
- \n";
$izeja .= $preces;
$izeja .= "
}
// Atgriež fragmenta rezultātu
return $izeja;
Tagad mēģiniet ievadīt tekstu jebkura dokumenta ievades laukā “Izvēlnes vienums”... Vai viss darbojas? Apbrīnojami!
P.S. Daži lasītāji var būt pārsteigti, ka, sekojot saitēm mūsu izvēlnē, lapu saturs nemainās, lai gan šķiet, ka, spriežot pēc ceļa pārlūkprogrammas adresē, mēs pārietam uz jaunām lapām... Tici man, tas ir pilnīgi normāli, jo Pilnīgi visas lapas pašlaik izmanto vienu un to pašu veidni. Patiesībā šajā veidnē mēs esam padarījuši dinamisku tikai augšējo izvēlni, un visa pārējā informācija paliek nemainīga. Mēs noteikti pievērsīsimies tam vēlāk, bet pagaidām - nekrītiet panikā ;).
Secinājums:
Tātad cits raksts ir nonācis pie sava loģiskā secinājuma.
Apmācības rezultāti:
- Mēs centāmies izprast dažu MODx dokumentu ievades lauku mērķi un aplūkojām šīs informācijas glabāšanu datu bāzē;
- Mēs uzzinājām par jauniem īpašiem MODx dizainiem: [], [!SnippetName!], [~id~];
- Mēs uzzinājām par īpašas API pieejamību un izmantojām dažas API funkcijas;
- Un, pamatojoties uz šīm zināšanām, mēs izveidojām savu jauno fragmentu MODx!
Sāksim MODx Revolution 8. nodarbību iesācējiem. Atgādināšu, ka mēs veidojam vietni MODx Revolution izpētei. Pēdējā nodarbībā mēs apskatījām fragmentu jēdzienu, kas ir PHP koda daļas, kas ļauj mūsu vietnei pievienot funkcionalitāti. Šajā nodarbībā mēs apskatīsim īpašu fragmentu - Wayfinder, un mēs to izmantosim, lai izveidotu mūsu vietnes dinamisku izvēlni.
Kas ir Wayfinder?
Ceļa meklētājs ir fragments, kas parāda nešķirotu saišu sarakstu uz resursiem jūsu vietnes kokā, saraksta izvades veids ir atkarīgs no fragmenta izsaukuma un šī izsaukuma parametriem. Kopumā tas nozīmē, ka, ievietojot Wayfinder zvanu savā veidnē, tas sāk meklēt resursus, kas atbilst tajā norādītajiem parametriem, un atgriež saišu sarakstu uz šiem resursiem nešķirotā saraksta formātā vai jūsu definētajā formātā.
Kāpēc izmantot Wayfinder?
Es parasti izmantoju Wayfinder, lai izveidotu dinamisku vietņu navigāciju, tas ir, izvēlnes. Kopš vairākuma HTML veidne ov izmanto nesakārtotus sarakstus, lai izveidotu izvēlnes, tad Wayfinder ir ideāls instrumentsšiem nolūkiem. Veidojot vietni, varat rūpīgi ievietot savus URL navigācijas izvēlnē, tāpat kā to darījāt iepriekš statiskā HTML vietnē. Tajā pašā laikā katru reizi, kad jums ir jāizdzēš vai jāizveido lapa, jums ir jāveic atbilstošas izmaiņas savā izvēlnē, jāmaina URL. Izmantojot Wayfinder fragmentu, lai dinamiski ģenerētu izvēlnes, tiek novērstas šīs galvassāpes, jo tas automātiski nosaka izmaiņas un attiecīgi maina izvēlni.
Wayfinder ir diezgan elastīgs rīks un ļauj noteikt, kādus resursus iekļaut vai izslēgt no izvēlnes, kāda ir izvēlnes veidne, cik dziļa ir jūsu vietnes izvēlne. Jūsu iespēju ierobežojumu nosaka jūsu HTML/CSS kods.
Kā lietot Wayfinder?
Kā jau minējām iepriekšējā nodarbībā, fragmentu izsaukšanas sintakse izskatās šādi: [[!somesnippet]]
Tas ir tikai pamata izsaukums un ar to nepietiek, turklāt mums ir jādefinē daži šī izsaukuma rekvizīti. Wayfinder gadījumā minimums, kas jādefinē rekvizītos, ir vieta, kur resursu kokā Wayfinder jāsāk veidot resursu sarakstu. Tādējādi, izsaucot Wayfinder fragmentu, ir jānorāda vismaz viens parametrs - sākotnējais ID. Pamata izsaukums uz Wayfinder fragmentu šajā gadījumā izskatīsies šādi:
Šis zvans liek Wayfinder sākt no koka saknes ( ID 0 nozīmē vietnes sakni) un parāda visus resursus, kas ir publicēti un kuriem izvēles rūtiņā nav atzīmes. Slēpt no izvēlnes.
Ja aplūkojam izmantoto veidni, mēs varam redzēt augšējo izvēlni ar vairākām opcijām un nolaižamajiem sarakstiem.
Apskatīsim veidni un izvadīto kodu šī izvēlne:
Kā redzat, šis ir ligzdots nesakārtots saraksts. Aizstāsim šo kodu ar pamata Wayfinder zvanu un redzēsim, ko mēs iegūstam. Izdzēsiet iepriekš minēto kodu un ielīmējiet tā vietā:
[[!Wayfinder? &startId=`0` ]]
Ja izmantojat to pašu veidni, ko es, jūsu kods izskatīsies apmēram šādi:
Saglabājiet veidni un skatieties mājas lapa, tam vajadzētu izskatīties šādi:
Fantastiski! Var redzēt, ka mūsu iepriekšējā izvēlne, kurā bija vairākas iespējas, tagad ir aizstāta ar vienkāršu izvēlni, kurā ir tikai viens vienums - Sākums. Tas mums norāda, ka Wayfinder darbojas, kā vajadzētu, un paņem vienu lapu no mūsu vietnes un parāda tās nosaukumu kā izvēlnes vienumu.
Izveidosim vēl pāris resursus. Es pievienošu lapu Par ar 3 pakārtotajām lapām (MODx, Pamācības, Kontaktpersonu un FAQ lapas). Savai vietnei varat izveidot jebkādus resursus vai lapas. Šī uzdevuma mērķis ir izveidot vairākus resursus, lai Wayfinder būtu ko parādīt.
Esmu pabeidzis lapu izveidi, un mana vietnes resursu koks izskatās šādi:
Tagad mums ir vairākas lapas, redzēsim, kā, piezvanot uz Wayfinder, tiks izveidota izvēlne mūsu vietnei:
Labā ziņa ir tā, ka visas mūsu lapas ir parādījušās izvēlnē un, noklikšķinot uz katra izvēlnes vienuma, mēs tiekam novirzīti uz attiecīgo lapu. (Lai pārbaudītu šo elementu, katrai lapai pievienojiet tekstu, piemēram, lapā Par varat pievienot "Šī ir lapa Par", un šis ziņojums parādīsies, kad lapa tiks atvērta. Atcerieties, ka mums ir jādefinē katrai lapai veidne. lapā, bet iekšā šobrīd Es par to neuztraucos).
Sliktā ziņa ir tā, ka izvēlnes formatējums ir bojāts, taču mēs varam to labot. Noklikšķiniet ar peles labo pogu noklikšķiniet peles klikšķi uz tīmekļa lapas un apskatiet avota kodu (vai izmantojiet firebug), jūs to tagad redzēsit Ceļa meklētājsģenerē HTML šādi:
- Sākums
- Par
- MODx CMS
- Kodēšanas bloks
- Emuārs
- Pakalpojumi
- Sazinieties ar mums
- Pamācības
- FAQ
Kā redzat, tas izskatās ļoti līdzīgs mūsu sākotnējam statiskajam kodam ar dažiem izņēmumiem. Pirmkārt, tika ģenerēts Wayfinder
- prece bez klases sf-izvēlne kas tika izmantots mūsu statiskajā kodā. Veidnei ir nepieciešama šī klase, lai tā darbotos ar CSS. Ir arī skaidrs, ka
- vienumiem ir parametrs span, kas attiecas uz saites teksta elementiem sākotnējā statiskajā kodā un nav ģenerētajā Wayfinder kodā. Turklāt mūsu statiskajam HTML kodam ir klase pašreizējās lapas vienums, kas nav attēlots mūsu Wayfinder fragmenta kodā. Visi šie trūkstošie gabali padara mūsu ēdienkarti neizskatīgu.
Kā pielāgot Wayfinder fragmenta izvades stilu
Aplūkojot, kā Wayfinder ģenerē kodu, rodas ļoti dabisks jautājums: "Kā mēs varam pievienot trūkstošās koda daļas, lai mēs vēlamies parādīt izvēlni mums vajadzīgajā formā?" Atbilde ir ļoti vienkārša, mēs izmantojam veidņu gabalus, lai formatētu Wayfinder fragmenta izvadi.
Wayfinder ir elastīgs rīks, kuru var definēt ar parametru palīdzību izskats izvade. Daži vispārīgi parametri ļauj noteikt, kādā līmenī sākt veidot ēdienkarti, kādus vienumus izvēlnē neiekļaut utt. Citi parametri ir veidnes parametri, kas ļauj iestatīt HTML veidnes kodu savai izvēlnei utt. Pēdējo aprakstus var atrast oficiālajā dokumentācijā - http://rtfm.modx.com/display/ADDON/Wayfinder.
Ņemiet vērā: Dažiem Wayfinder parametriem ir noklusējuma vērtības.
Tas izskaidro, piemēram, kāpēc Wayfinder ģenerētajā izvēlnē sākuma lapas vienumam ir klases nosaukums " pirmais aktīvs" Šī ir noklusējuma klase, taču mēs varam to ignorēt, definējot savas klases veidņu daļās.
Šajā apmācībā mēs izmantosim vairākas Wayfinder iespējas, taču iesaku jūs tās visas izpētīt un pēc iespējas vairāk praktizēt tās izmantošanu, lai izprastu visas to iespējas. Tā kā Wayfinder noklusējuma iestatījumi ir skaidri dokumentēti oficiālajā vietnē, būtu muļķīgi par tiem runāt šeit. Strādājot ar dažādām izvēlnēm, mēs to izmantosim arvien vairāk.
Lai sāktu darbu pie izvēlnes veidnes, izveidosim vairākas mini veidnes un saglabāsim tās pa daļām. Jūs redzēsiet, ka šajos gabalos mēs izmantojam HTML kodu, bet aizstājam dinamiskos elementus pildvielas(vai vietturi kā tos sauc arī), kuras sintakse izskatās šādi: [[+vietturis]]. Mūsu izmantotie vietturi ir specifiski Wayfinder fragmentam, un to definīcija ir acīmredzama no nosaukuma, taču vienmēr varat skatīt MODx dokumentāciju, lai iegūtu pilnīgāku palīdzību.
Tālāk ir norādīti gabali, ko izmantošu, lai izveidotu mūsu veidni:
7in1 izvēlne Ārējā– saturēs mūsu ārējā ul konteinera HTML kodu.
Jūs varat redzēt, ka esmu pievienojis klasi ārējai ul. Alternatīvs veids lai to izdarītu, izmantojiet vietturi wf.classes un pēc tam pievienojiet klases nosaukumu pašreizējam ceļa meklētāja izsaukumam, izmantojot parametru ārējā klase. Bet vienkāršības labad izmantosim pirmo metodi, taču abas noderēs...
7in1menuRow– saturēs pirmā līmeņa izvēlnes vienumu HTML kodu
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]][[+wf.wrapper]]
- [[+menutitle]][[+wrapper]]
- [[+menutitle]] ([[+bērni]]) [[+iesaiņojums]]` &countChildren=`1` ]]
- . Mēs nepārrakstīsim fragmentu, taču klases mainīšana stilos nav problēma.
- Izvēlne saraksta, tabulas, attēlu, ikonu utt. veidā.
- Statiskās izvēlnes
- Izvēlne ar dažādiem efektiem (nolaižamā izvēlne, nolaižamā izvēlne utt.)
- Vietnes karte
- [[+wf.linktext]][[+wf.wrapper]]
- wf.classes — parāda klases, kas ņemtas no Wayfinder parametru kopas (ieskaitot atribūtu class="")
- wf.classnames — parādīt klašu nosaukumus (bez class="")
- wf.wrapper - iekšējā satura izvade (rinda).
- wf.classes — klases izvade (ieskaitot atribūtu class="").
- wf.classnames — atbilstošo klašu izvade (bez class="")
- wf.link — izvēlnes saites atribūta vērtība href="".
- wf.title — saites virsraksta teksta nosaukums no lauka, kas norādīts parametrā &titleOfLinks
- wf.linktext — teksts aktīvajai saitei, kas norādīta laukā, kas nodots parametrā &textOfLinks
- wf.wrapper — parāda iekšējo saturu, piemēram, apakšizvēlni
- wf.id — parāda unikālo atribūta ID. Lai šis vietturis saņemtu vērtību, ir jānorāda parametrs &rowIdPrefix. Vērtība ir prefikss + docId.
- wf.attributes — parāda pašreizējā elementa atribūtu saiti
- wf.docid - pašreizējā elementa dokumenta identifikators
- wf.description — pašreizējā elementa apraksts
- wf.level — pašreizējais ligzdošanas līmenis
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]
[[+wf.title]]
[[+wf.title]]
Galvenā doma šeit ir tāda, ka es pievienoju tagu uz izvēlnes saites tekstu kā oriģinālajā statiskajā HTML kodā. Es iekļāvu arī vietturi wf.classes, un tas ļaus man definēt pašreizējās lapas klasi, kas ignorēs noklusējuma “aktīvo” klasi.
7in1 izvēlneIekšējā– saturēs iekšējo ul konteineru HTML kodu
- [[+wf.wrapper]]
7in1menuInnerRow– ietvers HTML kodu iekšējā līmeņa vienumu rindām
Tas ir viss, tagad mūsu veidņu gabali ir vietā, kā redzat (kārtības labad es tos ievietoju atsevišķā kategorijā):
Tagad mēs varam mainīt Wayfinder zvanu, lai mēs varētu izmantot šīs mini veidnes, lai izvadītu Wayfinder. Ja paskatās uz veidņu parametru sarakstu (būtu lietderīgi, ja jūsu priekšā būtu atvērts http://rtfm.modx.com/display/ADDON/Wayfinder vai izdrukātu to un paturētu ekrāna tuvumā), jūs redzēs, ka es izsaucu savus gabalus līdzīgi attiecīgajiem fragmentu izsaukuma parametriem. Es to darīju ērtības labad. Tas palīdz man sekot līdzi tam, kas notiek, kad sāku veidot savu zvanu. Pievienosim parametrus un izsaucam savus gabalus. Wayfinder zvans tagad izskatīsies šādi:
[[!Wayfinder? &startId=`0` &outerTpl=`7in1menuOuter` &rowTpl=`7in1menuRow` &innerTpl=`7in1menuInner` &innerRowTpl=`7in1InnerRow` &hereClass=`current_page_item` &firstClass]=`
Parametra vērtība tiek ievietota apostrofos (`), nevis iekšā atsevišķi pēdiņas (’).
Lieliski, apskatīsim šo izaicinājumu. Varat redzēt, ka mēs izmantojam veidņu opcijas, lai izsauktu mūsu gabalus, lai Wayfinder izvadītu mums nepieciešamo HTML ar pareizajām klasēm. Esmu definējis izsaucamo šeitKlase parametru un piešķīra tam vērtību pašreizējā_lapas_vienums lai tā atbilstu statiskajai HTML veidnei. Jūs varat pamanīt, ka es atstāju parametrus pirmā klase Un pēdējā klase tukšs. Iemesls tam ir tas, ka mana HTML veidne nenosaka klasi pirmajam un pēdējam izvēlnes vienumam, tāpēc, lai izvairītos no pārklāšanās, es tajos pārrakstīju tukšās virknes.
Redzams, ka mūsu ēdienkarte izskatās tieši tā, kā vēlējāmies. Nolaižamajā izvēlnē tiek izmantoti pareizie stili. Ja paskatās uz avota kodu, jūs redzēsit, ka ģenerēts Ceļa meklētājs"om HTML kods ir mainījies līdz nepazīšanai:
Šis kods atbilst mūsu veidnes sākotnējam statiskajam kodam, taču tas tika ģenerēts, zvanot Ceļa meklētājs.
Ir daudzas citas iespējas, kuras varat izmantot kopā ar Ceļa meklētājsēdienkartes veidošanai. Turpmākajās nodarbībās apskatīsim sarežģītas izvēlnes un to, kā tās integrēt programmā Wayfinder. Rezumējot: mūsu vietne tagad ir ieguvusi zināmu formu, un mums ir funkcionāla un dinamiska izvēlne.
Izvēlnes ģenerēšanas fragments. Var aizstāt Wayfinder un nodrošina lielāku elastību parametru norādīšanā.
Piemēram, tas var izveidot ēdienkarti no vairākiem vecākiem vienlaikus, parādot tos gan kopā, gan atsevišķās filiālēs.
Tas nodrošina ievērojamu ātruma pieaugumu tikai pirmajā palaišanas reizē, tad Wayfinder nav daudz sliktāks, pateicoties pareizai kešatmiņai.
Iespējas
Pēc noklusējuma pdoMenu pieņem parastos pdoTools parametrus un dažus savus parametrus:
Vārds | Noklusējums | Apraksts |
---|---|---|
&vecāki | Pašreizējais resurss | Vecāku saraksts, lai meklētu rezultātus, atdalīts ar komatiem. Ja tu ieliec &vecāki=`0`- izlase nav ierobežota. Ja vecāka ID sākas ar defisi, tas un tā bērni tiek izslēgti no atlases. |
&līmenis | 0 (neierobežots) | Izveidotās izvēlnes līmenis. |
&resursi | Rezultātos parādāmo resursu saraksts, atdalot tos ar komatiem. Ja resursa ID sākas ar defisi, šis resurss tiek izslēgts no atlases. | |
&veidnes | Rezultātu filtrēšanas veidņu saraksts, atdalītas ar komatiem. Ja veidnes ID sākas ar defisi, resursi ar to tiek izslēgti no atlases. | |
&kur | Masīvs papildu parametri paraugi, kodēti JSON. | |
&displejs Sākt | 0 | Iespējot sākuma izvēlnes mezglu rādīšanu. Noder, ja tiek norādīti vairāki "vecāki". |
&konteksts | Izlases ierobežošana pēc resursa konteksta. | |
&rādītSlēpts | 0 | Rādīt izvēlnē paslēptos resursus. |
&rādītNepublicēts | 0 | Rādīt nepublicētos resursus. |
&priekšskatījumsNepublicēts | 0 | Iespējojiet nepublicētu resursu rādīšanu, ja lietotājam ir atļauja to darīt. |
&slēpt apakšizvēlnes | 0 | Slēpt neaktīvos izvēlņu zarus. |
&atlasiet | Atlasāmo lauku saraksts, atdalīts ar komatiem. Piemēram, varat norādīt JSON virkni ar masīvu &select=`("modResource":"id,lapas nosaukums,saturs")` | |
&kārtot | izvēlnes indekss | Jebkurš kārtojamais resursa lauks, tostarp TV parametrs, ja tas norādīts parametrā &ieskaitot televizorus, Piemēram &sortby=`("tvnosaukums":"ASC","lapas nosaukums":"DESC")`. Varat norādīt JSON virkni ar vairāku lauku masīvu. Ja vēlaties šķirot nejauši, norādiet &sortby=`RAND()` |
&kārtot | A.S.C. | Šķirošanas virziens: dilstošs vai augošs. Ja parametrus &sortby un &sortdir atstājat tukšus, kārtošana notiks resursu secībā &resursi. |
&limits | 0 | Izlases rezultātu skaita ierobežošana. |
&nobīde | 0 | Rezultātu izlaišana no sākuma. Jāizmanto kopā ar skaidri norādītu &limits |
&atzīmējiet Atļaujas | Norādiet, kuras atļaujas lietotājam ir jāpārbauda, piemēram, parādot resursus &checkPermissions=`saraksts`. | |
&countBērni | 0 | Precīzi katras kategorijas pakārtoto resursu skaita saskaitīšana un to parādīšana vietturā [[+bērni]]. Veic papildu pieprasījumus datu bāzei, tāpēc pēc noklusējuma tā ir atspējota. |
&toPlaceholder | Ja fragments nav tukšs, visi dati tiks saglabāti vietturā ar šādu nosaukumu, nevis tiks parādīti ekrānā. | |
&plPrefikss | wf. | Atklāto vietturu prefikss. |
&showLog | 0 | Rādīt papildu informāciju par to, kā fragments darbojas. Tikai autorizētiem lietotājiem kontekstā “mgr”. |
&fastMode | 0 | Ātrs gabalu apstrādes režīms. Visi neapstrādātie tagi (nosacījumi, fragmenti utt.) tiks izgriezti. |
&kešatmiņa | 0 | Fragmentu rezultātu saglabāšana kešatmiņā. |
&kešatmiņas laiks | 3600 | Kešatmiņas derīguma laiks, sekundēs. |
&shēma | -1 | URL veidošanas shēma tiek nodota modX::makeUrl(), tātad iespējamie varianti vajag . Īpašais uri tips aizstāj resursa uri vērtību, nepalaižot funkciju. |
&izmantojiet WeblinkUrl | 1 | Ģenerējiet saiti, pamatojoties uz resursu klasi. |
&rowIdPrefikss | Prefikss id="" identifikatora iestatīšanai daļā. | |
&šeitId | ģenerētās izvēlnes pašreizējā resursa id. Tas ir jānorāda tikai tad, ja pats skripts to nepareizi definē, piemēram, parādot izvēlni no cita fragmenta daļas. | |
&ieskaitot televizorus | Atlasāmo televizora parametru saraksts, atdalot tos ar komatiem. Piemēram &includeTVs=`darbība, laiks` sniegs vietturi [[+darbība]] un [[+laiks]] . | |
&sagatavot televizorus | TV parametru saraksts ar failiem no multivides avotiem, kuriem jāģenerē pilni ceļi. Ja instalējat &prepareTVs=`1`, visi televizori, kas norādīti &ieskaitot televizorus. | |
&apstrādātTV | TV parametru saraksts, kas jāapstrādā un jāparāda atbilstoši to iestatījumiem sistēmas pārvaldniekā. Ja instalējat &processTVs=`1`, visi televizori, kas norādīti &ieskaitot televizorus. Palēnina darbu. | |
&tvPrefikss | TV parametru prefikss. |
Veidnes opcijas
Šie parametri iestata gabalus, kuros ir veidnes izvēlņu ģenerēšanai.
Vārds | Apraksts |
---|---|
&tplOuter | Visa izvēlnes bloka dizaina daļa. Noklusējums: @INLINE
|
&tpl | Izvēlnes vienuma dizaina daļa. Ja tas nav norādīts, resursa lauku saturs tiks izdrukāts uz ekrāna. Noklusējums: @INLINE |
&tplŠeit | Pašreizējā izvēlnes vienuma dizaina daļa. |
&tplSākt | Saknes vienuma dizaina daļa, ja tā ir iespējota &displejs Sākt. Noklusējums: @INLINE [[+menutitle]][[+iesaiņotājs]] |
&tplParentRow | Vecāku ar bērniem dizaina daļa, kas neatbilst &tplCategoryFolder nosacījumiem. Piemēram: @INLINE |
&tplParentRowHere | Pašreizējā dokumenta noformējuma daļa, ja tajā ir pēcteči. |
&tplParentRowActive | Vecāku un pēcnācēju dizaina gabals aktīvajā izvēlnes filiālē. |
&tplKategorijaMape | Īpašas kategorijas dizaina gabals. Par kategoriju tiek uzskatīts vecāks ar bērniem, kuru tukša veidne vai rel="category" laukā link_attributes. |
&tplIekšējais | Visa izvēlnes apakšvienību bloka dizaina daļa. Ja tukšs, izmantos &tplOuter. Piemēram: @INLINE |
&tplInnerRow | Izvēlnes apakšvienuma dizaina daļa. Piemēram: @INLINE |
&tplInnerŠeit | Daļa aktīvās izvēlnes apakšvienības noformējumam. |
CSS klases opcijas
Šie parametri iestata vietturu [[+classnames]] un [[+classes]] vērtību dažādiem izvēlnes vienumiem. Vietturis [[+klases nosaukumi]] parāda tikai klases nosaukumu bez atribūta class="", pretstatā [[+klases]] vietturim.
Piemēri
Parastā izvēlnes izvade no vietnes saknes uz vienu līmeni:
[]
Izvade, izslēdzot noteiktus vecākus un pārbaudot lietotāja atļaujas:
[]
Tiek parādīta divu vecāku izvēlne vienlaikus, parādot saknes punktus:
[]
Tiek parādīti divi resursu līmeņi, saskaitot ligzdoto:
[]` &tplParentRow=`@INLINE
Lai izveidotu dinamisku izvēlni, mēs izmantosim gatavu fragmentu Ceļa meklētājs. Fragments, kā jūs, cerams, atceraties no iepriekšējām nodarbībām, ir PHP koda gabals, ko varam iekļaut savā veidnē. Atšķirība no gabaliem ir tikai kodā un izsaukšanas metodē. Ja gabals tiek izsaukts, izmantojot dubultās cirtainās figūriekavas, tad fragmenti tiek izsaukti, izmantojot tālāk norādīto [!Fragmenta_nosaukums!]- kešatmiņā nesaglabāts zvans vai tamlīdzīgi [[SnippetName]]- kešatmiņā saglabāts zvans. Katram fragmenta kodam jāsākas ar un beigas ?> . Turklāt katru fragmentu var nodot īpašas nozīmes parametrus, ko tas apstrādās. MODx jau ir vairāki gatavi fragmenti, kurus izmantosim turpmāk.
Fragments Ceļa meklētājs kalpo MODx saišu sarakstu organizēšanai. Mūsu vietnes izvēlnē ir šādu saišu saraksts. Vispirms atradīsim koda daļu, kas ir atbildīga par mūsu izvēlnes parādīšanu. Izvēlne ir gabalā GALVENE, lūk, tas ir:
Izgriezīsim šo kodu un tā vietā ierakstīsim:
((IZVĒLNE))
Un mēs ielīmēsim kodu jaunā gabalā IZVĒLNE, gabala aprakstā mēs rakstīsim Vietnes izvēlne. Tagad izpētīsim šo kodu.
Mūsu vietnes izvēlne ir vienkāršs, nenumerēts saraksts, kas atrodas konteinerā ar id="templatemo_menu". Izgriezīsim šo sarakstu no konteinera un tā vietā ievietojiet mūsu fragmenta izsaukumu:
&startId=`0` ir parametrs ar vērtību 0, kas norāda fragmentam tās mapes ID, kurā atrodas apstrādātie dokumenti. Visi mūsu dokumenti, kurus parādīsim izvēlnē, atrodas saknes mapē, saknes mapes ID ir nulle. Paskatīsimies, kas mums ir.
Mūsu izvēlne darbojas, tikai aktīvais vienums vairs nav iezīmēts baltā krāsā:
Lai saprastu, kāpēc tas notika, mums ir jāaplūko lapas avota kods. IN Mozilla Firefox tas tiek darīts šādi: Skatīt >> Lapas pirmkods vai vienkārši nospiežot īsinājumtaustiņu Ctrl+U. Atrodiet kodu mūsu ēdienkartei:
Lūdzu, ņemiet vērā, ka iekš pirmkods aktīvajā punktā bija class="pašreizējais", un mūsu fragments tiek automātiski piešķirts aktīvajam vienumam class="active". Mēs arī pamanām, ka avota kodā klase tika lietota tagam
, un tagad uz tagu
Atrodiet failu mapē C:/xampp/htdocs/site/www/assets/templates/ templatemo_style.css un atveriet to, izmantojot Notepad++. Mēs meklējam pašreizējās klases aprakstu šajā failā, tas atrodas 198 rinda:
#templatemo_menu li .current(
polsterējums pa kreisi: 40 pikseļi;
krāsa: #ffffff;
}
aizstāt klasi strāva ieslēgts aktīvs, neaizmirstot to atkārtoti piešķirt atzīmei :
#templatemo_menu li.active a (
polsterējums pa kreisi: 40 pikseļi;
krāsa: #ffffff;
}
Saglabājiet failu. Paskatīsimies, kas notika.
Mūsu ēdienkarte darbojās tieši tā, kā dizaineri bija iecerējuši. Tagad mēs varam pārvietoties pa mūsu vietnes lapām, izmantojot mūsu galveno izvēlni. Kad saknes mapei pievienosit citus dokumentus, tie automātiski parādīsies mūsu izvēlnē. Lai izvēlnē netiktu parādīti nevēlami dokumenti, noņemiet atzīmi no tiem Rādīt izvēlnē. Izmantojot parametru, varat piespiedu kārtā izslēgt nevēlamu vienumu &excludeDocs=`izslēgto dokumentu ID saraksts, atdalīts ar komatiem`.
Lai izvēlnē netiktu rādīti bērnu dokumenti, kurus veidosim nākamajās nodarbībās, fragmenta izsaukumam pievienosim parametru līmenī, kas nosaka līmeņu skaitu izvēlnē, pēc noklusējuma tiks parādīti visi līmeņi, mēs to ierobežosim tikai vienā līmenī:
Ceļa meklētājs kalpo, lai sakārtotu MODX saišu sarakstus. Pateicoties veidņu atbalstam, tas ļauj parādīt sarakstus jebkurā vēlamajā formā:
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktīvs`
&rowClass=`eNav_li`]]
Snipet parametri:
&sākuma ID- vecāklapas ID, ja norādāt 0, tas būs no vietnes saknes. Noklusējuma vērtība ir aktīvās lapas ID
&displejs Sākt - rādīt dokumentu ar startI izvēlnes nosaukumā, noklusējuma kļūda
&līmenis- ligzdošanas dziļums, noklusējuma 0 - visi līmeņi
&limits- ierobežot lappušu skaitu izvadē (noklusējums 0 - bez ierobežojumiem)
&ignorētSlēpts- ignorēt lapas "Rādīt izvēlnē" izvēles rūtiņu, t.i. ja norādāt 1, tiks parādītas visas lapas. Noklusējums ir 0. Tiek rādītas tikai tās lapas, kurām ir atzīmēta izvēles rūtiņa “Rādīt izvēlnē”.
&ph - aizstājēja nosaukums, kas aizstāj tieši drukātos rezultātus. Noklusējums ir 0.
&atkļūdot- atkļūdošanas režīms (noklusējuma 0)
&slēpt apakšizvēlnes - izvērst tikai aktīvo apakšizvēlni (noklusējums 0)
&noņemtNewLines- izvades laikā noņem rindiņas pārtraukuma rakstzīmi (noklusējums 0)
&textOfLinks- izvēlnes saites nosaukumam. Iespējamie varianti:izvēlnes virsraksts, id, lapas nosaukums, apraksts, vecāks, aizstājvārds, garais nosaukums, ievadteksts . Noklusējumsēdienkartes nosaukums
&titleOfLinks- izvēlnes opcijas nosaukumam:izvēlnes virsraksts, id, lapas nosaukums, apraksts, vecāks, aizstājvārds, garais nosaukums, ievadteksts. Noklusējums lapas nosaukums
&rowIdPrefikss- iestata id (rowIdPrefix + docId) katram elementam. Noklusējums 0
&iekļauti dokumenti- ar komatiem atdalīto dokumentu ID, kas tiks iekļauti izvēlnē (nav norādīts pēc noklusējuma)
&izslēgtDokumentus - ar komatiem atdalīto dokumentu id, kas tiks izslēgti no izvēlnes (noklusējuma 0)
&konteksti- konteksts izvēlnes ģenerēšanai. Noklusējums ir pašreizējais.
&startIdContext - Konteksta identifikators, no kura tiek ņemti dokumenti, lai ģenerētu rezultātu.
&config - Ārējais PHP fails, lai saglabātu Wayfinder konfigurāciju (piemērs: kodols/komponenti/wayfinder/konfigurācijas).
&shēma - URL ģenerēšanas formāts. Iespējamās vērtības (pamatojoties uz makeURL API zvanu):
1: (noklusējuma) URL saistībā ar vietnes_url;
0: skatiet http;
1: skatiet https;
pilns: absolūtais URL, kas sākas ar vietnes_url;
abs: absolūtais URL, kas sākas ar base_url;
http: absolūtais URL, piespiedu kārtā http shēmā;
https: absolūtais URL, piespiedu kārtā https shēmā.
&kārtotPēc - Lauks, pēc kura notiek šķirošana. (noklusējums izvēlnes indekss)
Iespējas:
id, izvēlnes virsraksts, lapas nosaukums, ievadteksts, izvēlnes indekss, publicēts, slēpt izvēlne, vecāks, isfolder, apraksts, aizstājvārds, garais nosaukums, veids, veidne&kārtotPasūtīt- Šķirošanas secība."ASC" vai "DESC". Noklusējuma ASC
&kur - JSON filtrēšanas parametru stils (Atbilst vietai MySQL). Piemēram, ja vēlaties paslēpt emuāru vai ziņas no rakstu papildinājuma: &where=`[("class_key:!=": "Raksts")]`
Piemēri:
tikai izvades mapes: & kur = `isfolder = 1
&šeitId - Nosakiet pašreizējo ID, kas jāizmanto fragmentā. Izmantojiet [[*id]] vērtību, ja veidne ir norādīta, izmantojot parametru hereTpl, un ActiveRowParentTpl nav pareizi lietots izvēlnes vienumā. Noklusējums ir pašreizējais ID.
Tas ir jānorāda tikai tad, ja pats skripts to nepareizi definē, piemēram, parādot izvēlni no cita fragmenta daļas.
&šeitTpl - HereTpl veidne tiek izmantota, kad izvēlnē tiek parādīts pašreizējais vienums.
Iespējamie vietturi:
[[+wf.classes]] — vieta, kur norādīt izmantojamo CSS klasi (ietver class=" ")
[[+wf.classnames]] — satur tikai CSS klases nosaukumu (neietver class=" ")
[[+wf.link]] — saites adrese (href).
[[+wf.title]] — saites virsraksta teksts
[[+wf.linktext]] — saites virsraksta teksts
[[+wf.wrapper]] - vieta, kur parādīt apakšizvēlni
[[+wf.id]] — unikāla identifikatora (id) izvade
[[+wf.attributes]] — parādīt papildu saites atribūtus
[[+wf.docid]] — pašreizējā elementa dokumenta identifikators
[[+wf.subitemcount]] — vienumu skaits mapē
[[+wf.description]] - parāda apraksta lauka vērtības
[[+wf.introtext]] — parāda ievadteksta lauka vērtības
Veidnes piemērs:
Veidnes opcijas
Šie parametri norāda gabalus, kas satur modeļus, kas ģenerēs Wayfinder izvadi.
Pašreizējā Wayfinder for MODX Revolution versijā varat piekļūt saviem pielāgotajiem televizoriem, izmantojot wf prefiksa vietturus. , piemēram, [[+mans_TV]]
Rakstīšanas laikā tiks atgrieztas tikai sākotnējās TV vērtības - tās netiks formatētas. Piemēram, ja jūsu televizors ir attēls, parasti tiek izmantots tas, ka jūsu veidnē esošais televizors atgriezīs pilnu attēla atzīmi, bet Wayfinder veidnē tiks atgriezts tikai ceļš uz attēlu.
Ja vēlaties rīkoties ar TV, varat to izdarīt, izsaucot fragmentu Wayfinder rindas veidnē (&rowTpl . Piemēram, jūsu TV attēls tiek saukts ikonu un parasti veidnē izvadei tiek izmantots šāds kods:
... ...
Bet, tā kā tas neļaus apstrādāt televizoru, tas jāaizstāj ar:
... ...
Un tagad processTV fragmentā mēs ievietojam šādu PHP kodu:
getObject("modResource", $myId); atgriezt $doc->getTVValue($myTV);
Rezultātā tiek atgriezts pilnībā apstrādāts TV attēls.
&outerTpl
Tās daļas nosaukums, kurā ir ārējā konteinera veidne.
Pieejamie vietturi:
Parametrs &innerTpl satur tādu pašu vietturu kopu kā &outerTpl .
&rowTpl
Tās daļas nosaukums, kurā ir izvēlnes rindas elementu veidne.
Pieejamie vietturi:
Lietošanas piemērs:
Vēl viena iespēja:
Piemēri
Pirmais līmenis
[[!Wayfinder? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktīvs`
&rowClass=`eNav_li`]]
Daļas kods outerTpl
[[+wf.wrapper]]
RowTpl gabala kods
[[+wf.wrapper]]
Otrais līmenis (šajā piemērā izvēlnes un apakšizvēlnes vienumi bija vizuāli vienā līmenī
[[!Wayfinder? &startId=`0` &level=`2`
&rowTpl=`rindasTplFooterMenu`
&outerTpl=`outerTplFooterMenu`
&innerTpl=`iekšējāTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`aktīvs`]]
Daļas kods outerTplFooterMenu
[[+wf.wrapper]]
gabala kods rowTplFooterMenu
[[+wf.wrapper]]
innerTplFooterMenu gabala kods
[[+wf.wrapper]]
gabala kods innerRowTplFooterMenu