Template
Sziasztok!
Egy egyszerű template kezelőt készítek, és elakadtam benne. Adott egy html fájl, amely valamilyen kódot tartalmaz, most például legyen hozzászólásokhoz tartozó html.
Régebben az xTemplate-ben láttam olyat, hogy a blokkok egymásba voltak ágyazva:Odáig rendben vagyok, hogy kiszedem a <!-- --> tagek közti tartalmat, ha nincs egybeágyazás. Viszont ha egybe van ágyazva, mint a példában, akkor visszakapom az aktuális tag tartalmát plussz az az előtt lévő tartalmat is. Egész pontosan így szeretném a tartalmakat megkapni (mindig csak az aktuális részre vonatkozót):Egybeágyazás nélkül preg_replace_callback segítségével el tudom tárolni a blokkok nevét és hozzájuk a tartalmat.
A segítséget köszönöm!
■ Egy egyszerű template kezelőt készítek, és elakadtam benne. Adott egy html fájl, amely valamilyen kódot tartalmaz, most például legyen hozzászólásokhoz tartozó html.
Régebben az xTemplate-ben láttam olyat, hogy a blokkok egymásba voltak ágyazva:
<!-- BEGIN: hozzaszolasok -->
<h1>Eddigi hozzaszolasok</h1>
<!-- BEGIN: nev -->
<h2>{NEV}</h2>
<!-- END: nev -->
<!-- BEGIN: szoveg -->
<div>{HOZZASZOLAS}</div>
<!-- END: szoveg -->
<!-- END: hozzaszolasok -->
$blokkok = array(
'html_fajl_neve' => array(
'hozzaszolasok' => '<h1>...</h1>',
'nev' => '<h2>...</h2>',
'szoveg' => '<div>...</div>'
));
A segítséget köszönöm!
XSLT
Miért?
<?= $valtozo ?>
formát. Egy template fájl renderelése pedig ekkor leredukálódna a következőkre:Mert külön akarják választani a megjelenítést.
pp
HTML template helyett
A szerver oldalon tartja magát a vegyítés. Tudom, az MVC elmélet kifejti, mire jó a szétválasztás, és miért mégsem, de aki először hallja a varázslatos mondatot, az szó szerint veszi. A valóság hervasztó. Hozzá sem kezd a szétválasztáshoz aki sablonnal dolgozik.
Abban az időben, amikor a hozzászólás készült, éppen tanuló fázisban voltam. Form-mal és a html-css párossal kapcsolatban voltak hiányosságaim.(A PHP részt hamarabb ismertem.) Egyszerű, készítesz egy működő oldalt, a szerver oldalt szintén megírod, és közben tanulsz is. Ha kész, akkor kap az oldal segítséget a dizájn miatt. A demó változat fapados grafikus szemmel.
Itt azért van egy kis gond. Oldal tervezés ok, csakhogy élesben feltöltendő adatbázisból egy része. Megoldások: (kihagytam valamit?)
1 - Vegyített kód PHP nyelven,
2 - Vegyített kód sablon nyelven,
3 - Oldal előállítása PHP echo utasításokkal(tartalom generálás helper modulokkal, azt hiszem így hívják)
4 - Oldal felépítése böngésző oldalon, ezt most hagyjuk,
5 - Eredeti html szöveg kiegészítése.
Az utolsó az ami praktikusnak látszott. Ha egyszerre kell html-t és php-t programozni, hol ezt, hol azt, akkor jobb ha nem olvasztom be szerver kódba az oldal szövegét. Ráadásul kétirányú kapcsolatban maradhatok a dizájnerrel.
A legtöbb sablon motor az 1. és a 2. pontot valósítja meg. Az 5. pont szerint a bevezetőben említett "xTemplate" dolgozik. Felszerszámozod az oldalt blokk jelölésekkel, és csere változókkal. Megjeleníthető a tartalom simán böngészővel, méghozzá jól, és feldolgozható szerver oldalon is. Király. (A sablont- *.xtpl - át kell nevezni html-re akkor megy a böngészős nézegetés, a kiterjesztés a feldolgozó objektumot nem érdekli.)
Kérdésem:
- Kinek praktikus egy ilyen "xTemplate" sablonozó, és kinek nem?
( Rosszul teszem ha rá szavazok ?)
- Kezdésnek praktikusnak látszik, sokkal inkább mint a nagyágyúk. A klasszikus vegyítésről nem is beszélve. Mégis, találkozni csak véletlen lehet vele. Valahol kevés lesz az a szemlélet amit képvisel ?
Köszönöm a válaszokat előre is.
Ha egyedül dolgozol, akkor
Kisebb projekteknél szoktam
Smarty-t és társait soha nem értettem, minek, többet árt, mint használ. Tapasztalatom ezekről mondjuk nincs számottevő.
Az utóbbi időben a Mustache nevű templating megoldással dolgoztam, szerintem kiváló, ahogy állítja magáról, "logicless" és számtalan nyelvre van már hozzá bejáratott implementáció. Nagy könnyebség, hogy ugyanaz a template kliens- és szerveroldalon egyaránt használható, barátibb megvalósítani a fallbacket, ha a kliensen nincs Javascript, illetve a mozgástered is nagyobb. Úgy látom az xTemplate is hasonló logikát követ, javíts ki, ha tévedek, nem néztem nagyon utána. Próbáltam már kisebb projekteknél is a Mustache-t, szerintem oda is kiváló megoldás, átláthatóbb és rugalmasabb lesz minden. Az elején bele kell szokni, hogy nem irkálhatsz PHP-t a template-be (lustaság+megszokás+sietség eredménye, hogy kisebb projekteknél az ember néha azt mondja, na jó, gyorsan lekérem itt a template-be az adatbázisból ezt az egy dolgot vagy összeadom ezt a két értéket, nem lesz baj). Futottam vele akadályokba, az tény, de az többnyire az én rossz szemléletem miatt volt, nem a Mustache miatt.
A smarty és társai arra jók,
Mindamellett, hogy értem és
Nem igazán értem, amit írsz,
Mindenki a maga kódját ellenőrzi, de mit szeretnél integrálni?
Code review
Ez oké, de mi köze ennek a
ha le van tiltva a php
A sablonrendszerek használata melletti, nagyon elterjedt érvként ez az, ami arra enged következtetni, hogy hiányzik a code review. Ha lenne, aki átnézi a kódot, akkor ő kiszúrná, ha emailt küldesz sablonból.
Biztos nincs rá keret.
Azt én értem, de mégis kötve
Mustache? http://weblabor.hu
http://weblabor.hu/blog/20100814/php-alapu-sablonmegoldas#comment-70235
Nem rossz, de a Mustache
Nagyon régen én is emellett
A PHP sablonnyelvnek egyrészt
És hát ha erre találták ki, akkor nem végeztek túl jó munkát. Melyik az olvashatóbb:
Ebben teljesen egyetértek
Szerintem mindkettő ronda, én
Aztán amikor jön a
Másrészt a sablonok lassúak, éles környezetben le szeretné fordítani őket az ember nyers php sablonokra; egy fákat manipuláló kóddal némileg nehezebb ezt megtenni, mint egy sablon-alapúval.
Ez igaz. :-)
Eddig mondjuk nem nagyon láttam hátrányát ennek a megközelítésnek, de nem is csináltam nagy terhelésű rendszereket eddig... Nem tudom, hogy sebesség különbségben mennyit számít mindez egy jól cachelt kódnál. Gyanítom nem sokat...
xTemplate
Szerintem az "xTemplate" használatával (is) szép kódot kapunk. Tetszik, jobban mint más megoldások.
A kacsacsőr-kérdőjel kombó váltogatás html-tag sorozattal, na az az ami kiveri nálam a biztosítékot, projekt mérettől függetlenül. Különösen soron belül halmozva csodaszép. Hol van itt bármi külön választva? Nem tudom mi a helyes kifejezés erre az ősrégi dologra, talán a "webassembly" kifejezi a lényeget.
Az sem lehet véletlen, hogy többségünk menekül ettől, ki merre lát alapon. Egyéni preferenciák abban nyilvánulnak meg, hogy kinek a generált kód, kinek egy elegáns sablon nyelv a megfelelőbb. És meg is van az eredménye. Bármi hatékonyabb mint az alapból biztosított, tanított (sajnos), kevert kód. Az külön baj, hogy a sokunk által igényelt fejlettebb, de egyszerű lib-ek vagy nem működnek, vagy biztonsági hiányokkal küzdenek.
Szerintem a "Mustache" nem hasonlít, egy kód generátor van mögötte. Az "xTemplate" állítólag a drupal alap sablon nyelve, remélhetőleg nem tévedésből. Pont az benne az érdekes, hogy a sitebuilder kódját közvetlenül fel lehet használni. Minimális teendő van vele. Ha a web lap modelljének tekintjük, akkor a szerver oldali adatok helyét csak jelölni kell, és kész. A modell feltöltését már külön PHP program végezheti. Egyszerűbb esetekre alkalmazható, PHP nyelven működik, és nincs AJAX támogatás sem. Mondjuk egy webáruházhoz több mint elegendő. (kipróbáltuk)
A DOM fa építése érdekes kérdés. Ha a böngésző oldalon rakod össze az oldalt, akkor gondolom hasznos (nem próbáltam). Azonban, érdemes megfigyelni, hogy a sablonozó rendszerek, bár tiszteletben tartják a html struktúrát, nem foglalkoznak a DOM-mal. Nem is kell tudniuk mit jelent, elvannak nélküle.
xTemplate: A sablon html forrása
A Drupal alap sablonnyelve a
Aham. Gyökeresen nem más,
De amúgy használhatónak tűnik, ha nincs ilyen igényed.
Hogyan terjed a fals info
Lassan 10 éve nem az.
Kellett hozzá nem is 1 perc google:
http://drupal.hu/hirek/20050505/phptemplate
PHP vs HTML
A <?php ?> folyamatos használatától nekem égnek áll a hajam! Mindig olyan érzésem van tőle, mintha "csuklana" a kódfeldolgozó. Mintha nem tudnánk eldönteni milyen programnyelven is szeretnénk kódolni!
Nekem a sablonnyelvektől van
Tesztelni fogom a simpleXML-t, kíváncsi vagyok, hogy alkalmas e HTML építésére, és hogy egy sablonhoz képest mennyivel lassabb...
Nem kötelező a sablonnyelv
sablonnyelv nélkül
Miért éri ez meg neked? Nem
Nem lenne egyszerűbb simpleXML-el, vagy csak simán szöveg összefűzéssel megcsinálni? Akkor nem kellene html tagek között bűvészkedni különböző sablon kódokkal...
Megéri?
Olyankor is jól jött mikor 3-5 oldalas statikus oldalt kellett dinamikussá alakítani. Csak {} jelek közé tettem a dinamikus szakaszokat és készen is voltam.
Tudom, hogy ezeket <?php tag-ekkel oldják meg sokan, de én meg attól készülök ki! :-)
Én azt szeretem, ha a kész html kimenet az index.php utolsó sorában egy echo-val van egyben kitolva.
Tudom, hogy ezeket <?php
Én azt szeretem, ha a kész html kimenet az index.php utolsó sorában egy echo-val van egyben kitolva.
A sablonnyelvek mind php sablonra fordulnak le, ezt lementik, és a tényleges feldolgozásnál ez fut le (különben baromi lassú lenne), szóval nem értem az összefüggést, hogy miért ne lehetne kézzel írt php sablont használni...
Természetesen igazad van!
Itt most csak arról beszélünk, hogy fejlesztés alatt kinek mi az átláthatóbb módszer. Én jelenleg a Smarty-val teljesen meg vagyok elégedve. Részemről átláthatóbb és gyorsabb így a munka.
Részemről átláthatóbb és
kifejtenéd?
Itt most csak arról
Az egyik programozási nyelven
Amit te képtelen vagy megérteni, hogy a kódot nem magunknak írjuk, hanem az x évvel utánunk hozzányúló programozónak. Még az is lehet, hogy ez is te leszel, de már máshogy nézed a dolgokat, és szubjektíven más megoldás lesz átláthatóbb neked. Így az, hogy nekünk jelenleg szubjektíven átláthatóbb egy
Ha egy kódról nem tudom első ránézésre megmondani, hogy mit csinál, akkor annak a kódnak rossz az olvashatósága. Azért kell széttördelni a kódot, hogy a függvény- vagy osztály nevekkel egy magasabb absztrakciós szinten 10 sorban le tudjuk írni, hogy mit csinál egy 1000 soros kód. Ha arra vagyunk kíváncsiak, hogy hogyan csinálja, akkor lemegyünk egy alacsonyabb absztrakciós szintre, és megnézzük az ottani kódot. Ha ömlesztve megadod az 1000 sor kódot, az csak annyit mond ránézésre, hogy hogyan csinálja, de azt nem, hogy mit csinál. Ahhoz át kell nézni és meg kell érteni az egészet. Ez egy csomó plusz idő és munka, amit senki nem fizet meg...
mindenkinek igaza van/senkinek sincs igaza
Semelyik sem jobb és semelyik sem rosszabb általánosságban. Azt sem lehet eldönteni hogy melyik a legjobb autó és azt sem hogy ki a legszebb a világon :)