În exemplul de aspect există trei tipuri de navigare: un meniu cu un nivel, un meniu pe mai multe niveluri și crocante de pâine.
Navigarea pe site este formată folosind următoarele funcții:
- nc_browse_level () - afișați meniul unui anumit nivel de cuibărit;
- nc_browse_path () - ieșire de friptură de pâine;
- nc_browse_path_range () - ieșire de friptură de pâine (cu parametri);
- nc_browse_sub () - afișează meniul dintr-o anumită secțiune;
- nc_cond_browse_sub () - afișați meniul dintr-o anumită secțiune (cu condiția);
- nc_browse_cc () - afișează meniul blocurilor de informații ale secțiunii;
- nc_browse_catalogue () - scoateți meniul site-urilor.
Să aruncăm o privire asupra fiecărei funcții.
Există trei funcții pentru afișarea meniului:
- nc_browse_level ($ nivel, $ browse_template).
Efectuați un meniu cu un anumit nivel de cuibărit. - nc_browse_sub ($ browse_parent_sub, $ browse_template, $ ignore_check = 0, $ unde_cond = "", $ level = 0)
Afișați meniul dintr-o anumită secțiune. - nc_cond_browse_sub ($ browse_parent_sub, $ browse_template, $ where_cond = "")
Afișați un meniu dintr-o anumită secțiune cu o condiție. Funcția este un caz special al celui precedent.
Meniu la un nivel
Primul tip de meniu din structura eșantionului este un nivel:
În aspectul aspectului, meniul arată astfel:
Pentru a forma un meniu cu un nivel, puteți utiliza prima sau a doua funcție.
Trebuie să transmiteți parametrii necesari funcției:
- $ level - numărul de nivel al partiției (cel mai înalt nivel corespunde valorii 0);
- $ browse_template - șablon de ieșire de navigare.
Șablonul de ieșire de navigare este o matrice unidimensională $ browse_template a formularului:
Următoarele variabile de macro sunt disponibile în șabloanele de navigare:
- % NAME - numele elementului (secțiune);
- % URL - calea către secțiune;
- % PARENT_SUB - numărul partiției părinte (numai pentru partiții);
- % KEYWORD - cuvântul cheie al secțiunii (numai pentru partiții);
- % SUB este numărul de partiție;
- % COUNTER - numărul articolului afișat în listă (pornind de la zero);
- % NEXT_LEVEL - Afișează următorul nivel al meniului. Se utilizează atunci când se creează meniuri pe mai multe niveluri.
- % field_name în system_table este o variabilă arbitrară specificată în blocul "Partitions" din tabelele de sistem.
Unele variabile sunt destinate numai formării meniurilor.
Gama de formare a navigației poate avea elementele:
Să schimbăm matricea $ browse_template în funcție de html-codul dat:
Plasați această matrice în câmpul șablon de ieșire pentru navigare.
În șablon, în loc de codul html, scrieți funcția:
Numărul 0 din funcție indică nivelul ieșirii din meniu. În acest caz, toate elementele incluse în partiția rădăcină vor fi afișate.
În figură, secțiunile marcate cu gri nu vor fi afișate.
Acum fragmentul de cod al părții de sus a site-ului arată astfel:
Meniul pe mai multe niveluri
În coloana laterală a site-ului există un meniu pe mai multe niveluri:
În cazul în care coloana laterală ar fi necesară pentru a aduce sub-meniul orizontal (adică un singur nivel), este posibil să se utilizeze aceeași funcție, dar cu un parametru de nivel egal cu 1, 2, etc., în funcție de nivelul de imbricare ..:
În acest caz, sunt afișate subsecțiunile unei anumite secțiuni și se utilizează funcția de ieșire:
Funcția poate fi utilizată atât pentru formarea unui meniu cu un singur nivel, cât și pentru un meniu pe mai multe niveluri. Trebuie să transmiteți parametrii necesari funcției:
- $ browse_parent_sub este idul partiției părinte din care vor fi generate elementele de meniu. Partiția rădăcină are numărul 0.
- $ browse_template - șablon de ieșire de navigare. În funcție, trebuie să treci o variabilă cu o ieșire de nivel de meniu și o matrice a șablonului.
De asemenea, puteți specifica parametrii opționali:
- $ ignore_check = 0 - dacă parametrul este setat la 1, toate partițiile dezactivate vor fi afișate.
- $ where_cond = "" - parametrul specifică condițiile suplimentare de eșantionare din tabela de subdiviziune.
- $ level = 0
Utilizarea parametrilor opționali va fi descrisă mai jos.
În cod, ieșirea din meniu arată astfel:
Să compunem matricea de ieșire a meniului pe mai multe niveluri:
Deoarece meniul este pe mai multe niveluri, o nouă variabilă macro% NEXT_LEVEL este adăugată în șablonul de navigare.
În structură, în loc de codul HTML, scrieți apelul funcției:
unde 299 este numărul secțiunii părinte din care sunt afișate subsecțiunile. În harta site-ului se arată astfel:
Luați în considerare exemplul în care cazuri puteți utiliza parametrul $ where_cond al funcțiilor nc_browse_sub () și nc_cond_browse_sub ().
Să presupunem că harta site-ului are aproximativ cincisprezece elemente în partiția rădăcină. Unele articole trebuie să fie afișate în meniul de sus, unele în partea de jos. În funcție de design, meniurile pot fi amplasate în locuri diferite și pot exista mai mult de două.
Fără a utiliza parametrul $ where_cond condiție, executarea sarcinii este mult mai complicată. Soluția este simplă - în tabelele de sistem din blocul "Secțiuni" trebuie să adăugați câmpuri noi.
Câmpurile ar trebui să fie la fel de multe ca și tipurile de meniuri.
Prin urmare, în fila de setări avansate, fiecare secțiune va avea o opțiune, care trebuie setată la valoarea dorită.
În funcția de ieșire, acum trebuie să adăugați parametrul $ where_cond care conține numele câmpului. De exemplu,
O inserare similară trebuie făcută și pentru alte cazuri de afișare a meniului.
Utilizarea s_browse_
Dacă nu aveți suficiente variabile macro sau doriți să utilizați condiții PHP, puteți utiliza funcții cu prefixul s_browse_. în ele un array intern $ data [] este disponibil și eval () de șabloane este executat, astfel încât să puteți trece codul (ecranat) în șablonul PHP. Matricea $ data [] conține toate datele din tabelul Subdiviziune despre subsecțiunile curente afișate de funcție.
De exemplu:
De asemenea, puteți utiliza interogări suplimentare în șablon. De exemplu, trebuie să afișați numărul de elemente în secțiuni. Pentru a face acest lucru, adăugați interogarea la șablon:
unde XX este numărul componentei conectate în partiții.
Fii atent la semnele în fața slash-uri și $“, acestea sunt necesare, deoarece procesarea matrice și funcția imbricată trebuie să fie realizată în cadrul s_browse_ funcție și nu în timpul inițializării matrice $ browse_sub.
Important: variabila macro% NEXT_LEVEL nu este disponibilă în funcțiile s_browse_.
Important: s_browse_ nu selectează automat nivelul de șablon așa cum este făcut în% NEXT_LEVEL, deci trebuie să treci un anumit nivel de șablon, de exemplu atunci când apelați funcția, de exemplu
Pentru a afișa nivelul următor al matricei, este necesar să înregistrați apelul funcției pentru nivelul următor în interiorul șablonului și să îl afișați astfel încât apelul să treacă prin funcția nivelului curent.
De asemenea, șablonul de nivel următor $ left_menu1 [1] nu va fi disponibil în domeniul de aplicare al funcției s_browse_sub, deci trebuie să îl accesați prin globalizare:
Un exemplu complet de 3 nivele de cuibărit:
Important: în cazul în care șablonul de navigare este descris în șablonul de componentă (prefix / setări de sistem), este necesar să se preleveze matricea șablonului din domeniul de aplicare al componentei la cea generală în plus:
Harta site-ului
Lista tuturor secțiunilor (harta site-ului) pe site-ul în sine este afișată la fel de simplu. Pentru harta site-ului, trebuie să creați o secțiune nouă, să vă conectați la ea un aspect al designului care citește:
- în șablonul de ieșire de navigare, scrieți:
- în locul ieșirii cardului, înregistrați apelul funcției:
În acest exemplu, fiecare element de șablon apelează din nou funcția cu același model, iar ID-ul secțiunii de ieșire curentă este trecut ca numărul secțiunii. Astfel, aveți o ierarhie completă a structurii site-ului pe o singură pagină.
Paine de pâine
Ultimul element de navigare pe pagină este fâșiile de pâine. Se formează utilizând următoarele funcții:
- nc_browse_path ($ browse_template)
Ieșire pentru un șablon dat - nc_browse_path_range ($ de la, $ la, $ browse_template, $ inverse = 0, $ show = 0)
Ieșire cu parametrii specificați
Ca variabile $ browse_template este de asemenea necesar să specificați o serie de date. În cod, pe linia sunt afișate miezuri de pâine:
Trebuie să creați o matrice pentru ieșire:
și să prescrie ieșirea în aspect:
Vedere finală
Elementele de navigație sunt adaptate și acum în câmpul "Șabloane de ieșire de navigație" există 4 blocuri de tablouri:
Partea de sus a layout-ului a fost semnificativ redusă și acum arată astfel:
- nc_browse_sub () - scoate lista subsectiunilor partitiei date in conformitate cu template-ul $ template
- nc_browse_catalogue () - lista de rezultate a site-urilor
- nc_browse_level () - scoate un meniu (lista secțiunilor) de un anumit nivel
- nc_browse_messages () - generează o listă de pagini cu obiecte
- nc_browse_path () - calea de ieșire "friptură de pâine"
- nc_browse_path_range () - ieșire din calea (pâine) din intervalul specificat