Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

). Mindegyik címke (szakasz) kell egy pár (/ szakasz). A szükséges paraméterek névÉs hurok. A ciklusnév (szakasz) bármi lehet, betűkből, számokból és aláhúzásjelekből állhat. Ciklusok (szakasz) beágyazhatók, és a beágyazott (szakasz) neveknek egyedinek kell lenniük egymás között. Változó hurok(általában értéktömb) határozza meg a ciklus iterációinak számát. Ha változókat nyomtat egy szakaszon belül, a szakasz nevének meg kell jelennie a változó neve mellett szögletes zárójelben. (másik szakasz) végrehajtva, ha a paraméter hurok nem tartalmaz értékeket.

Attribútum neve típus Kötelező Alapértelmezett Leírás
név húr Igen n/a Szakasz neve
hurok vegyes Igen n/a A ciklus iterációinak számát meghatározó érték.
Rajt egész szám Nem 0 Annak a pozíciónak az indexe, ahonnan a hurok indul. Ha az érték negatív, akkor a kezdőpozíciót a tömb végétől számítjuk. Például, ha a ciklusváltozónak 7 eleme van, és a start attribútum értéke -2, akkor a kezdőindex 5 lesz. Az érvénytelen értékeket (a tömbön kívüli értékeket) a rendszer automatikusan a legközelebbi érvényes értékre csonkolja.
lépés egész szám Nem 1 A lépésérték, amely a tömbön keresztül történő iterációhoz használatos. Például a step=2 megadja a tömb bejárását a 0,2,4 elemekkel... Ha a lépés negatív, akkor a tömb az ellenkező irányba halad.
max egész szám Nem 1 A ciklusiterációk maximális száma.
előadás logikai érték Nem igaz Meghatározza, hogy ez a szakasz megjelenjen-e vagy sem

jegyzet

A Smarty 1.5.0 óta a munkamenettulajdonság-változó szintaxisa (%szakasznév.varnév%) értékről ($smarty.section.sectionname.varname) módosult. A régi szintaxis továbbra is támogatott, de csak példákat fog látni az új szintaxisra.

Az index a tömb aktuális indexének megjelenítésére szolgál, nullától kezdődően (vagy a start attribútumtól, ha meg van adva), és eggyel növekszik (vagy a step attribútum értékével, ha meg van adva).

Műszaki megjegyzés

Ha a step és start attribútumok nincsenek megadva, akkor az index megegyezik az iterációs szakasz attribútumával, azzal a különbséggel, hogy 1 helyett 0-val kezdődik.

Az iteráció a ciklus aktuális iterációs számának megjelenítésére szolgál.

jegyzet

Ez az érték független a start, step és max tulajdonságoktól, ellentétben az index tulajdonsággal. Ezenkívül az iterációk egytől kezdődnek, nem nullától, mint az indexek. A rownum az iterációs tulajdonság szinonimája, ugyanúgy működnek.

7.38. példa. tulajdonság (szakasz) iterációja

assign("custid",$id); ?> (szakasznév=cu loop=$custid start=5 step=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/ szakasz)

A példa futtatásának eredménye:

Iteráció=1 index=5 id=3005
iteráció=2 index=7 id=3007
iteráció=3 index=9 id=3009
iteráció=4 index=11 id=3011
iteráció=5 index=13 id=3013
iteráció=6 index=15 id=3015

Ez a példa az iterációs tulajdonságot használja a táblázat fejlécének minden ötödik sorban történő megjelenítéséhez (az (if)-t mod operátorral használja - modulo).

(szakasznév=co loop=$contacts) (ha $smarty.section.co.iteration % 5 == 1) (/ha) (/ szakasz)
Név>itthonsejtEmail
Kilátás ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)


Dokumentum tartalomjegyzék

1. config_load függvény

Szintaxis:
(config_load file="file_name")

Ez a funkció a konfigurációs fájlok változóinak sablonba való betöltésére szolgál. Ennek a függvénynek a betöltendő fájl nevén kívül több további paramétere is lehet. Például a szakasz paraméter, amely megadja a betöltendő szakasz nevét. Ezekről és más lehetőségekről további információkat a Smarty dokumentációjában talál.

Példa:
(config_load file="task.conf")

2. Capture funkció

Szintaxis:

(capture name="blokk_neve"
assign="változónév") ...
(/elfog)

Ennek a funkciónak az a célja, hogy a sablon kimenetét egy változóba gyűjtse a képernyőn való megjelenítés helyett.

Bármi, ami (capture name="varname") és (/capture) között van, egy varname nevű változóba lesz írva. Az így rögzített tartalom sablonban használható a $smarty.capture.varname speciális változó használatával, ahol a varname a következőnek átadott érték. név attribútum rögzítési funkciók. Ha nincs megadva változónév, akkor a rendszer az alapértelmezett értéket használja.

A második hozzárendelési paraméter adja meg annak a változónak a nevét, amelyhez a rögzítésre került kimeneti érték. Ez a paraméter, akárcsak a név, nem kötelező.

3. szakasz funkció

Szintaxis:

(szakasz neve="szakasz_neve"
loop="változó_kiszámítandó_az_iterációk_száma"
[,start="start_pozícióindex"]
[, step="step"] [,max="max_iterations"]
[,show="show_section"] )...
(/ szakasz)

A szakasz egy hurok egy tömb elemeinek bejárására. A szükséges paraméterek a name, amely a szakasz nevét adja meg, és a ciklus, amely egy változó, amely meghatározza a ciklus iterációinak számát.

A ciklus általában egy tömbváltozó, és egy szakasz iterációinak száma megegyezik a tömb elemeinek számával. A cikluson belüli változó megjelenítéséhez meg kell adnia a szakasz nevét szögletes zárójelben a változó neve után.

(szakasz neve=művészeti hurok=$cím)

Cím: ($title)

(/ szakasz)

15.8. példa. Hurok a tömb elemei közötti iterációhoz

4. foreach funkció

Szintaxis:

(foreach from="tömb_neve"
item="jelenlegi_elem_neve")
... (/az egyes)

Ezenkívül használhat további attribútumkulcsot - a kulcs neve a tömb aktuális eleméhez és neve - a ciklus neve, amellyel hozzáférhet a tulajdonságaihoz. A from és item attribútumok kötelezőek.

A foreach hurkok a szakaszhurkok alternatívája. A foreach függvény nagyon hasonlít a PHP foreach ciklusához.
(foreach from=$articles item=art)
Cím: ($art)

(/az egyes)

Példa 15.9. foreach hurok

A foreach ciklusoknak megvannak a saját tulajdonságai. Ezeket a következőképpen érhetjük el: ($smarty.foreach.foreachname.varname), ahol a foreachname a hurok name paramétere által adott neve, a varname pedig a tulajdonság neve.

5. If, elseif, else kijelentés

Szintaxis:

(ha kifejezés) action_block
(elseif kifejezés1) action_block1
(egyéb) action_block2
(/ha)

Az operátor működése szinte hasonló a PHP nyelv if...elseif...else operátorához.

A következő összehasonlító operátorok használhatók a kifejezésekben: eq, ne, neq, gt, lt, lte, le, gte, ge, páros, páratlan, nem páros, nem páratlan, nem, mod, div by, páros által, páratlan, ==, !=, >,<, <=, >=. Mindegyiket szóközzel kell elválasztani a környező értékektől. A kifejezésekben zárójelek használhatók, és PHP függvények hívhatók meg.

(ha $name eq "Vasya")
Üdvözöljük Vasya.
(elseif $name eq "Petya")
Isten hozott, Petya.
(más)
Üdvözöljük. És te ki vagy?
(/ha)

15.10. példa. if, elseif, else állítások

(* ez a példa nem működik, mert nincsenek szóközök az összehasonlító operátorok körül *)
(ha $name=="Vasya" || $name=="Péter")
...
(/ha)
Példa 15.11. Törött példa

Amikor saját készítésű oldalakat hozunk létre (keretrendszerek, CMS és egyéb divatos dolgok használata nélkül, amelyek megkönnyítik a webfejlesztők életét), azzal a problémával szembesülünk, hogy sok oldal esetén módosítani kell az oldalon.

Annak érdekében, hogy ne kelljen ugyanazokat az oldalrészeket módosítanunk az egyes oldalfájlokban, használhatunk kényelmes PHP-utasításokat, amelyek lehetővé teszik, hogy egyetlen kódsorral minden oldalra felvegyük a szükséges kódot tartalmazó fájlokat. Ezután a mellékelt fájl tartalmának megváltoztatásával megváltoztatjuk a kódot az oldal összes oldalán. Kényelmes, akárhogyan is nézzük.

Most nézzük meg részletesebben a fájlok összekapcsolásának módjait:

Az include és a követelmény használata

Nem fog tudni alapvető különbséget találni e két utasítás között minden vágyával, de vannak árnyalatok:

Ha hiba történik a request parancs végrehajtása során, az elemző végzetes hibaválaszt kap, és az oldalkód végrehajtása leáll, míg az include csak figyelmeztetést ad, és a fájl fut tovább (a fájl egyszerűen nem szerepeljen).

Vegyünk egy egyszerű példát a téma jobb megértéséhez.

Megvan a mini-webhelyünk, ahol a fejléc és a lábléc minden oldalon azonos, de a dokumentum törzse megváltozik.

Elkészítjük a header.php és a footer.php fájlokat, amelyekben elhelyezzük azt a kódot, amely minden oldalon azonos lesz, az index.php és newpage.php fájlokban pedig összekapcsoljuk a statikus részeket. Ennek eredményeként a következőket kapjuk:

header.php tartalom

< header> < nav> < a href= "newpage1.php" title= "menü tétel" >menü tétel < a href= "newpage2.php" title= "menü tétel" >menü tétel < a href= "newpage3.php" title= "menü tétel" >menü tétel

lábléc.php tartalom

< footer> < p>Mi készítettük

Az oldal egyéb oldalainak tartalma

Minisite

Sok hasznos információ

Oldalunk betöltése eredményeként a következő képet kapjuk:

Amint látjuk, minden remekül működik.

Felhívjuk figyelmét, hogy a példát a továbbiakban futtattuk helyi szerver Denwer, mert azért PHP munka szüksége van egy szerverre a támogatásával. Ha létrehoz egy webhelyet egy egyszerű mappában a számítógépen, semmi sem fog működni.

A vizsgált példában a szükséges fejlécet használtuk a csatlakozáshoz, és az include láblécet. Ön dönti el, hogy mit használ a webhelyein. Mint már említettük, nincs sok különbség köztük. Kivéve, ha a követelmény valamivel szigorúbb utasításnak minősül.

Valójában a vonal egyszerűen bemásolja a fájl teljes tartalmát, az általunk megadott elérési utat, abba a dokumentumba, amelyben található.

Az include _once és a request _once használata

A webhelyen végzett munka során problémák adódhatnak abból a tényből, hogy ugyanaz a kód többször szerepel egy fájlban.

Tegyük fel, hogy ez annak köszönhető, hogy többen dolgoztak az oldalon, és amikor a kódokat kombinálták, akkor egy ilyen incidens jött ki ...

Hogy kizárja annak lehetőségét hasonló problémákat a fejlesztők gyakran használják az include _once és a request _once utasításokat. Működési elvük pontosan ugyanaz, mint az include és a require-é, de ha az ilyen utasításban szereplő fájl már össze van kapcsolva a miénkkel, akkor az újracsatlakozás nem történik meg.

A hátrányokhoz ez a módszer annak tudható be, hogy lassabb és számításilag drágább, mint elődei include with request, mivel szükségessé válik az összes benne lévő fájl emlékezése és összehasonlítása a kódduplikáció elkerülése érdekében.

Egy megjegyzésre

  • Annak érdekében, hogy kényelmesebben meg lehessen különböztetni a webhelyoldal fájljait és a töredékeik fájljait, amelyeket belefoglalunk, általában a mellékelt fájlok egy inc részt adnak a névhez. Példánkban ezt a megközelítést figyelembe véve a header.inc.php fájlt a header.php fájlból kapjuk, és így tovább. Ez a megközelítés nagyban leegyszerűsítheti a webhely szerkezetének megértését a jövőben.
  • Az általunk felvett fájl kódja örökli annak a sornak a hatókörét, amelyben szerepel. Tobish csak azon az oldalon belül van, amelyen lesz globális hatókör, a függvényen belül pedig - local.
  • Bárhol használhatjuk az include-ot a request-el. Még a szkripteken belül is.

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: