Prilikom stvaranja web stranica na vlastitom pisanju (bez korištenja okvira, CMS-a i drugih modernih stvari koje pojednostavljuju život web programerima), suočeni smo s problemom uređivanja web stranice kada ima puno stranica.
Kako ne bismo morali mijenjati iste dijelove web stranice u svakoj datoteci stranice, možemo koristiti prikladne PHP upute koje nam omogućuju da datoteke sa potrebnim kodom uvrstimo u sve stranice s doslovno jednim redom koda. Zatim, promjenom sadržaja uključene datoteke, mijenjamo kôd na svim stranicama web stranice. Zgodno, bez obzira na to kako izgledate.
Sada pogledajmo pobliže kako spojiti datoteke:
Korištenje include i require
Nećete moći sa svom svojom željom pronaći fundamentalnu razliku između ova dva uputstva, ali postoje nijanse:
Ako dođe do greške tokom izvršavanja naredbe require, parser će primiti fatalni odgovor na grešku i izvršenje koda stranice će se zaustaviti, dok će include samo izdati upozorenje i izvršenje datoteke će se nastaviti (datoteka jednostavno neće biti povezana ).
Uzmimo jednostavan primjer za bolje razumijevanje teme.
Imamo svoju mini stranicu na kojoj su zaglavlje i podnožje isti na svim stranicama, a tijelo dokumenta se mijenja.
Kreiramo datoteke header.php i footer.php u koje stavljamo kôd koji će biti isti na svim stranicama, a u datotekama index.php i newpage.php povezujemo statičke dijelove. Kao rezultat toga, dobijamo:
Header.php sadržaj
< header> < nav> < a href= "newpage1.php" title= "stavku menija" >stavku menija a> < a href= "newpage2.php" title= "stavku menija" >stavku menija a> < a href= "newpage3.php" title= "stavku menija" >stavku menija a> nav> header>
Footer.php sadržaj
< footer> < p>Proizvedeno od nas p> footer>
Sadržaj drugih stranica web stranice
Puno korisnih informacija
Kao rezultat učitavanja naše stranice, dobivamo sljedeću sliku:
Kao što vidimo, sve funkcionira odlično.
Želio bih vam skrenuti pažnju na činjenicu da smo primjer pokrenuli na lokalnom Denwer serveru, jer PHP -u je potreban server sa podrškom za PHP. Ako kreirate web stranicu u jednostavnoj mapi na računaru, ništa neće funkcionirati.
U gornjem primjeru koristili smo zaglavlje require i footer include. Na vama je da odlučite šta ćete koristiti na svojim web stranicama. Kao što je već spomenuto, nema velike razlike među njima. Osim ako se zahtjev ne smatra nešto strožim iskazom.
Zapravo, linija jednostavno kopira cijeli sadržaj datoteke, putanju na koju smo naveli, u dokument u kojem se nalazi.
Korištenje include _once i require _once
Prilikom rada na web mjestu mogu nastati problemi zbog činjenice da je isti dio koda više puta uključen u istu datoteku.
Pretpostavimo da se to dogodilo zbog činjenice da je nekoliko ljudi radilo na web mjestu, a kada su kodovi spojeni, izašao je takav incident ...
Programeri često koriste naredbe include_once i require_once kako bi uklonili mogućnost takvih problema. Princip rada za njih je potpuno isti kao i za include with require, ali ako je datoteka u takvoj uputi već povezana s našom, tada se ponovno povezivanje neće dogoditi.
Nedostaci ove metode uključuju činjenicu da radi sporije i intenzivnije na računanju nego što su to uključivali prethodnici sa zahtjevom, jer postaje potrebno zapamtiti sve uključene datoteke i uporediti ih kako bi se izbjeglo dupliranje koda.
Na napomenu
- Da bismo olakšali razlikovanje datoteka stranica web stranica i datoteka njihovih fragmenata, koje u njih uvrštavamo, obično uključene datoteke imenu dodaju česticu inc. Uzimajući u obzir ovaj pristup u našem primjeru, dobili bismo datoteku header.inc.php iz datoteke header.php itd. Ovaj pristup može olakšati razumijevanje strukture web stranice u budućnosti.
- Kod iz datoteke koju povezujemo nasljeđuje opseg linije u koju je povezan. Tobish samo unutar stranice imat će globalni opseg, a unutar funkcije imat će lokalni.
- Možemo koristiti include with require gdje god želimo. Čak i unutar skripti.
1. funkcija config_load
Sintaksa:(config_load file = "naziv datoteke")
Ova funkcija se koristi za učitavanje varijabli iz konfiguracijskih datoteka u predložak. Osim naziva učitane datoteke, ova funkcija može imati i nekoliko dodatnih parametara. Na primjer, parametar odjeljka koji navodi naziv odjeljka za učitavanje. Više informacija o ovim i drugim parametrima možete dobiti iz Smarty dokumentacije.
Primjer:
(config_load file = "task.conf")
2. Funkcija snimanja
Sintaksa:(naziv snimanja = "naziv_bloka"
assign = "variable_name") ...
(/ snimanje)
Ova funkcija je dizajnirana za prikupljanje rezultata predloška u varijablu umjesto prikazivanja na ekranu.
Sve između (naziv hvatanja = "varname") i (/ hvatanje) bit će zapisano u varijablu pod imenom varname. Sadržaj snimljen na ovaj način može se koristiti u predlošku pomoću posebne varijable $ smarty.capture.varname, gdje je varname vrijednost proslijeđena atributu name funkcije hvatanja. Ako naziv varijable nije naveden, koristit će se naziv default.
Drugi parametar dodjeljuje naziv varijable kojoj će biti dodijeljena snimljena izlazna vrijednost. Ovaj parametar, kao i naziv, nije obavezan.
3. Funkcija presjeka
Sintaksa:(naziv odjeljka = "naziv_odjela"
loop = "varijabla_za_izvan_broj_iteracija"
[, start = "start_position_index"]
[, step = "step"] [, max = "maximum_iterations"]
[, show = "show_or_section"]) ...
(/ odjeljak)
Odsek Odsek je petlja za kretanje po elementima niza. Traženi parametri su name, koji se koristi za postavljanje naziva odjeljka, i petlja, koja je varijabla koja određuje broj iteracija petlje.
U pravilu, petlja je varijabla tipa niza, a broj iteracija odjeljaka jednak je broju elemenata ovog niza. Da biste prikazali promenljivu unutar petlje, morate da navedete naziv odeljka u uglastim zagradama iza imena promenljive.
(naziv odjeljka = umjetnička petlja = $ naslov)
Naslov: ($ naslov)
(/ odjeljak)
Primjer 15.8. Petlja za ponavljanje po elementima niza
4. Foreach funkcija
Sintaksa:(foreach from = "array_name"
item = "current_item_name"))
... (/ za svaki)
Osim toga, možete koristiti dodatni ključ atributa - naziv ključa za trenutni element niza i naziv - naziv petlje, s kojim možete pristupiti njegovim svojstvima. Atributi from i item su potrebni.
Foreach petlje su alternativa petljama presjeka. Funkcija foreach funkcionira vrlo slično kao PHP petlja foreach.
(foreach from = $ articles item = art)
Naslov: ($ art)
(/ za svaki)
Primjer 15.9. Foreach petlja
Foreach petlje imaju svoja svojstva. Možete im pristupiti na ovaj način: ($ smarty.foreach.foreachname.varname), gdje je foreachname naziv petlje specificiran parametrom imena, a varname ime svojstva.
5. Operater if, elseif, else
Sintaksa:(ako je izraz) action_block
(elseif izraz1) akcija_blok1
(else) action_block2
(/ ako)
Radnja operatora je gotovo ista kao i PHP ako ... elseif ... else operator.
Sljedeći operatori usporedbe mogu se koristiti u izrazima: eq, ne, neq, gt, lt, lte, le, gte, ge, paran je, neparan, nije paran, nije neparan, ne, mod, div by, paran po, neparno po, == ,! =,>,<, <=, >=. Svaki od njih mora biti odvojen razmacima od okolnih vrijednosti. U izrazima možete koristiti zagrade i pozivati php funkcije.
(ako je $ name eq "Vasya")
Dobrodošao, Vasya.
(inače $ name eq "Petya")
Dobrodošao, Petya.
(drugo)
Dobrodošli. Ko si ti?
(/ ako)
Primjer 15.10. Ako, elseif, else izjave
( * ovaj primjer neće raditi jer nema razmaka oko operatora usporedbe *)
(ako je $ name == "Vasya" || $ name == "Petya")
...
(/ ako)
Primjer 15.11. Slomljeni primjer
Članak koji istražuje element HTML odjeljka iz kategorije odjeljka.
Svrha elementa sekcije
Element odjeljka koristi se za stvaranje odjeljka u dokumentu koji zajedno grupira neke sadržaje. Za svaki odjeljak u dokumentu treba navesti njegov naziv (temu). To se obično radi sa zaglavljima (elementi h1-h6).
Sadržaj odeljka ...Naslov odeljka
Elementi presjeka obično se koriste u sljedećim situacijama:
- za označavanje odjeljaka u odjeljku. Na primjer, za označavanje poglavlja u članku, tabova u dijaloškom okviru, odjeljaka u disertaciji itd.
- grupirati nekoliko odjeljaka u jednu tematsku grupu. Na primjer, za grupiranje najnovijih vijesti na web mjestu, komentara na članak itd.
Dakle, element odjeljak treba koristiti samo za neki sadržaj ako ima naslov i dio je nečeg drugog.
Korištenje elementa odjeljak
Na primjer, razmislite o isječku koda stranice koji sadrži članak s komentarima. Svaki od komentara koje je korisnik objavio na stranici sadrži neki potpuni sadržaj i stoga se može smatrati elementom članka. Ali, istovremeno, svi komentari predstavljaju određenu tematsku grupu, pa se stoga mogu smjestiti u element odjeljka, tj. ovaj element će grupirati sve ove komentare na stranici zajedno.
Naslov članka
Komentari (1)
Zaglavlje komentara
Zaglavlje komentara
Naslov članka Komentari Komentar Naslov Komentar Naslov
Na primjer, razmislite o upotrebi elemenata odjeljka za kreiranje odjeljaka unutar elementa članka:
Naslov knjige
Prvo poglavlje
Poglavlje drugo
Treće poglavlje
Dodatak A
Dodatak B
Gornji primjer imat će sljedeći prikaz:
Naslov knjige Poglavlje jedno Poglavlje Drugo Poglavlje Treće Dodatak A Dodatak B
Ograničenja pri korištenju elementa odjeljka
Element odjeljka u HTML 5 nije generički element za grupiranje sadržaja, tj. ne smije se koristiti za umotavanje bilo kojeg sadržaja koji vam se sviđa. Njegova glavna svrha je dodavanje semantike dokumentu i stvaranje njegove skice.
Kada autor treba grupirati sadržaj samo da bi ga stilizirao ili manipulirao u JavaScript -u, najbolje mjesto za njih je korištenje elementa div. Element div, za razliku od elementa odjeljka, ne dodaje semantiku dokumentu i ne sudjeluje u stvaranju njegove skice (strukture).
Razlika između elemenata odjeljka i članka
Elementi odjeljka i članka, iako se na prvi pogled čine vrlo sličnima, imaju različita semantička značenja. Element članka namijenjen je grupiranju cjelovitog, samostalnog sadržaja i može se gledati odvojeno od ostatka sadržaja stranice. Element odjeljka ima drugačije semantičko značenje, namijenjen je grupiranju sadržaja koji je sastavni dio nečega drugog.
Ali kako autor može znati šta je neki sadržaj na stranici? Pogledajmo ovo s primjerom isječka članka. Isječak je dio članka, pa se stoga element odjeljka mora koristiti za grupiranje njegovog sadržaja. Ali isti fragment, koji je već ostavljen kao komentar, predstavljat će nešto potpuno, cjelovito. Stoga se u ovom kontekstu element članka može koristiti za njegovo grupiranje. Ali, naravno, može se zaključiti, i obrnuto. Stoga, koji element koristiti za grupiranje sadržaja u većini slučajeva ovisi o vašem subjektivnom mišljenju kao autora. No, najvažnija stvar u ovom pristupu je zadržati odabranu poziciju. Stoga, što je autor dosljedniji u stvaranju strukture, to ima više smisla.
). Svaka oznaka (odjeljak) mora imati par (/ odjeljak)... Traženi parametri su ime i petlja... Naziv petlje (sekcije) može biti bilo koji naziv koji se sastoji od slova, brojeva i donjih crta. Ciklusi (odjeljak) mogu biti ugniježđeni, a ugniježđena imena (odjeljak) moraju biti jedinstvena među sobom. Variable petlja(obično niz vrijednosti) određuje broj iteracija petlje. Prilikom ispisivanja varijabli unutar odjeljka, naziv odjeljka mora biti naveden pored naziva varijable unutar uglatih zagrada. (drugo) se izvršava ako je parametar petlja ne sadrži vrijednosti.
Naziv atributa | Vrstu | Obavezno | Zadano | Opis |
---|---|---|---|---|
ime | string | Da | N / A | Naziv odjeljka |
petlja | mješovito | Da | N / A | Vrijednost koja određuje broj iteracija petlje. |
start | cijeli broj | Ne | 0 | Indeks pozicije na kojoj će petlja započeti. Ako je vrijednost negativna, početna pozicija se računa od kraja niza. Na primjer, ako u varijabli petlje ima 7 elemenata i vrijednost početnog atributa je -2, tada će početni indeks biti 5. Nevažeće vrijednosti (vrijednosti izvan niza) automatski se skraćuju na najbližu važeću vrijednost. |
korak | cijeli broj | Ne | 1 | Vrijednost koraka koja se koristi za kretanje po nizu. Na primjer, korak = 2 označava obilazak niza elementima 0,2,4 ... Ako je korak negativan, tada će se niz prelaziti u suprotnom smjeru. |
max | cijeli broj | Ne | 1 | Maksimalan broj iteracija petlje. |
show | boolean | Ne | istinito | Pokazuje treba li prikazati ovaj odjeljak ili ne |
Bilješka
Počevši od Smarty 1.5.0, sintaksa varijabli svojstava sesije je promijenjena iz (% sectionname.varname%) u ($ smarty.section.sectionname.varname). Stara sintaksa je i dalje podržana, ali vidjet ćete samo primjere nove sintakse.
index se koristi za prikaz trenutnog indeksa niza, počevši od nule (ili atributa start, ako je naveden) i povećan za jedan (ili za vrijednost atributa step, ako je naveden).
Tehnička napomena
Ako atributi step i start nisu navedeni, tada je indeks isti kao atribut odjeljka za iteraciju, osim što počinje s 0 umjesto 1.
iteracija se koristi za prikaz trenutnog broja iteracije petlje.
Bilješka
Ova vrijednost je neovisna o svojstvima start, step i max, za razliku od svojstva indeksa. Takođe, iteracije započinju na jedan, a ne na nuli sličnih indeksa. rownum je sinonim za svojstvo iteracije, rade na isti način.
Primjer 7.38. iteracija svojstva (sekcije)
assign ("custid", $ id); ?> (naziv odjeljka = cu petlja = $ custid start = 5 korak = 2) iteracija = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ odjeljak)
Rezultat ovog primjera:
Iteracija = 1 indeks = 5 id = 3005
iteracija = 2 indeks = 7 id = 3007
iteracija = 3 indeks = 9 id = 3009
iteracija = 4 indeks = 11 id = 3011
iteracija = 5 indeks = 13 id = 3013
iteracija = 6 indeks = 15 id = 3015
Ovaj primjer koristi svojstvo iteracije za ispis naslova tablice svakih pet redaka (koristi (ako) s operatorom mod).
Ime> | Dom | Cell | ||
---|---|---|---|---|
pogled | ($ contacts.name) | ($ contacts.home) | ($ contacts.cell) | ($ contacts.email) |