Daudzlīmeņu MODX izvēlne, izmantojot Bootstrap. PdoMenu - izveidojot izvēlni MODX Wayfinder, nosaukumi starp diapazoniem netiek parādīti

Sākums / Ierīces uzstādīšana

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"]."
  • \n";
    }

    Ja ($items != "") (
    $izeja = "

      \n";
      $izeja .= $preces;
      $izeja .= "
    \n";
    }

    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"]."
  • \n";
    }

    Ja ($items != "") (
    $izeja = "

      \n";
      $izeja .= $preces;
      $izeja .= "
    \n";
    }

    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"]."
    \n";
    }

    Ja ($items != "") (
    $izeja = "

      \n";
      $izeja .= $preces;
      $izeja .= "
    \n";
    }

    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."
    \n"; //savākt izvēlnes vienumus
    }

    // Ja izdotos kaut vienu atrast izvēlnes vienums,
    // izveidot HTML izvēlnes kodu
    if ($items != "") (
    $izeja = "

      \n";
      $izeja .= $preces;
      $izeja .= "
    \n";
    }

    // 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

    © 2024 ermake.ru - Par datoru remontu - Informācijas portāls