Dokumentum tartalomjegyzék

1. config_load függvény

Szintaxis:
(config_load file="file_name")

Ez a függvény a sablon változóinak betöltésére szolgál konfigurációs fájlok. A betöltendő fájl nevén kívül ennek a funkciónak több más is lehet további beállítások. Például a szakasz paraméter, amely megadja a betöltendő szakasz nevét. Több részletes információk ezek és más lehetőségek a Smarty dokumentációjában találhatók.

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 a $smarty.capture.varname speciális változó használatával sablonban használható, ahol a varname a rögzítési függvény name attribútuma számára átadott érték. Ha nincs megadva változónév, akkor a rendszer az alapértelmezett értéket használja.

A második hozzárendelés paraméter adja meg annak a változónak a nevét, amelyhez a rögzített kimeneti érték hozzá lesz rendelve. 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.

Általában a hurok az típusú változó tömböt, és a szakasziterációk 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)

Példa 15.8. 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 tömb aktuális eleméhez tartozó kulcs neve é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 ciklus név 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 oldalon a szükséges kódot tartalmazó fájlokat beépítsük. 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 tovább fut (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 ...

Az ilyen problémák lehetőségének kiküszöbölése érdekében a fejlesztők gyakran használják az include _once and request _once utasításokat. Működési elvük pontosan ugyanaz, mint az include-é és a követelményé, de ha az ilyen utasításban szereplő fájl már össze van kapcsolva a miénkkel, akkor csatlakozzon újra nem fog megtörténni.

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. Figyelembe véve ez a megközelítés példánkban 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. A Tobish csak az oldalon belül globális hatókörrel rendelkezik, a függvényen belül pedig helyi hatókörrel.
  • Bárhol használhatjuk az include-ot a request-el. Még a szkripteken belül is.

). Minden 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ó 7 elemből áll, é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 munkamenet tulajdonságvá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 kezdve (vagy a start attribútumtól, ha meg van adva) és eggyel növekszik (vagy a step attribútum értékével, ha volt megadva).

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)


Egy cikk, amely figyelembe veszi a szakasz HTML elemét a szakaszolási kategóriából.

A szakaszelem célja

A szakasz elem egy olyan szakasz létrehozására szolgál egy dokumentumban, amely néhány aktuális tartalmat csoportosít. A dokumentum minden szakaszánál fel kell tüntetni annak címét (tárgyát). Ez általában címsorokkal történik (h1 - h6 elemek).

szakasz címe

A szakasz tartalma...

szakaszelemek általában a következő esetekben használatosak:

  • szakaszok megjelölésére egy szakaszon belül. Például egy cikk fejezeteinek, párbeszédpanelek füleinek, szakdolgozat szakaszainak megjelölésére stb.
  • több szakaszt egy tematikus csoportba csoportosítani. Például csoportosításra legfrissebb hírek az oldalon, megjegyzések a cikkhez stb.

Így a szakaszelemet csak akkor szabad bizonyos tartalomhoz használni, ha van címsora, és valami más része.

A szakaszelem alkalmazása

Vegyünk például egy oldal kódrészletet, amely megjegyzésekkel ellátott cikket tartalmaz. A felhasználó által az oldalon hagyott megjegyzések mindegyike tartalmaz valamilyen befejezett tartalmat, ezért cikkelemnek tekinthető. De ugyanakkor minden hozzászólás valamilyen témacsoportot képvisel, ezért elhelyezhető a szekcióelemben, pl. ez az elem az oldalon lévő összes megjegyzést csoportosítja.

Cikk címe

Hozzászólások

Megjegyzés címe

Megjegyzés szövege...

Megjegyzés címe

Megjegyzés szövege...

A cikk címe Megjegyzések Hozzászólás címe Hozzászólás címe

Fontolja meg például szakaszelemek használatát egy cikkelemen belüli szakaszok létrehozásához:

A könyv neve

Első fejezet

Második fejezet

Harmadik fejezet

A. melléklet

B melléklet

A fenti példa a következő struktúrával (vázlattal) rendelkezik:

Könyvcím Első fejezet Második fejezet Harmadik fejezet A függelék B függelék

Korlátozások a szakaszelem használatakor

A HTML 5 szakaszeleme nem általános elem a tartalom csoportosításához; nem használható olyan tartalom becsomagolására, amely tetszik. Fő célja, hogy szemantikát adjon a dokumentumhoz, és létrehozza annak szerkezetét (vázlatát).

Ha egy szerzőnek csak azért kell csoportosítania a tartalmat, hogy stílusa legyen, vagy JavaScriptben dolgozzon vele, akkor a legjobb a div elem használata. A div elem a szekció elemmel ellentétben nem ad szemantikát a dokumentumhoz, és nem vesz részt a szerkezetének (vázlatának) létrehozásában.

Különbség a szakasz és a cikk elemei között

A szakasz- és cikkelemek, bár látszólag nagyon hasonlóak, eltérő szemantikai jelentéssel bírnak. A cikk elem a teljes, önálló és az oldal többi tartalmától elkülönült tartalom csoportosítására szolgál. A szakasz elemnek pedig más a szemantikai jelentése, tartalom csoportosítására szolgál, ami van szerves része valami más.

De honnan tudja a szerző, hogy milyen tartalom az oldalon? Nézzük meg ezt egy példacikkrészlet segítségével. A töredék egy cikk része, ezért a szakaszelemet kell használni a tartalom csoportosítására. De ugyanaz a töredék, amelyet már kommentárként hagytak, valami egész, teljes lesz. Ezért ebben az összefüggésben a cikk elem használható csoportosítására. De persze az ellenkezőjéről is lehet vitatkozni. Ezért a legtöbb esetben az Ön szubjektív szerzői véleményétől függ, hogy melyik elemet használja a tartalom csoportosításához. De a legfontosabb ebben a megközelítésben a választott pozíció megtartása. Ezért minél következetesebb a szerző a szerkezet megalkotásában, annál több értelmet tud belefektetni.