Starší komentáře ke článku: Řízená sazba textu

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2003 10:25:19

Radsej budem pouzivat toto, ako neake divne sablony. Nenasiel som ziadny rozumny a jednoduchy sablonovaci system. Vsetky spravia jedine: to co ste predtym pisali ako php + HTML vam odelia, ale do php a html + sablonovy kod. A prave tu je tan problem: mozno vzhlad bude na jednom nieste, ale logika alikacie sa roztrusi po sablonach a php.

Sablony uz nechcem ani vidiet, ani ich vlastne netreba. :). Staci aby skript produkoval pekny cisty a semnaticky kod ktory viem zobrazit pomocou CSS, parada.

Avatar

Autor komentáře: Ondrej Jurecek

Datum vložení: 20.3.2003 10:51:42

Sablony jsou velmi uzitecnym nastrojem a sam je vyhodne ke sve spokojenosti pouzivam.
Mam dobre zkusenosti s FastTemplates (mohu vas odkazat na clanek primo na Intervalu: <a href='http://www.interval.cz/clanek.asp?id=395' target='_blank'>http://www.interval.cz/clanek.asp?id=395</a> ).
Nez jsem si vybral prave FastTemplates, udelal jsem si maly pruzkum. V mnohych jinych jsem videl, ze do sablon je mozne zapsat konstrukce podobne vyznamu IF.. cili podminene zobrazeni vymezene casti textu. Podminene zpravidla na obsah urcite promenne. V tomto s Vami sdilim nazor - nemichat logiku programu do sablon.

Vas vyrok <I>php a html + sablonovy kod</I> bych si dovolil upravit na <B>PHP + DATA + SABLONOVY SYSTEM</B>. Do sablon tedy nevkladam HTML konstrukce, ale pouze DATA!

Avatar

Autor komentáře: Jan Prochazka

Datum vložení: 20.3.2003 13:16:05

Jaky mate nazor na Smarty?
(phpinsider.com)

Avatar

Autor komentáře: Ondrej Jurecek

Datum vložení: 20.3.2003 13:53:26

Necht se vyjadri Ti, kteri Smarty pouzivaji.
Urcite se na to ale podivam.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 20.3.2003 14:01:21

Já osobně považuji Smarty za velice kvalitní systém, jen na můj vkus poněkud přerostl sám sebe. Byl však zařazen do skupiny "oficiálních" PHP projektů, čímž je garantován jeho další rozvoj a podpora ;-)

Viz <a href='http://smarty.php.net' target='_blank'>http://smarty.php.net</a> ;-)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2003 14:03:38

Smaty som pouzival asi 3-4 mesiace. Toto j moj nazor:

smarty tak trochu zvadza k miesaniu php a html:

name: {$person->name}<br>
email: {$person->email}<br>

Cim sa straca hlavny zmysel sablon: odelenie kodu.

Ked vsak nebudem pouzivat tieto veci tak smarty je zbytocne zlozity system. Lepsie je potom pouzit PEAR::HTML_Template_IT.

Smarty vyzera byt celkom dobre len netreba uletiet a zabudnut na hlavny vyznam sablon. Jedna super vec na smarty je kompilacia a kesovanie sablon.

Veci ako

* this will display "no title" (without the quotes) if $articleTitle is empty *}
{$articleTitle|default:"no title"}

{$currentDate}
{$currentDate|date_format:"%A, %B %e, %Y"}
{$currentDate|date_format:"%H:%M:%S"}

by v smarty podla mna nemali vobec byt. Je to cesta spat. Sablny chcem pouzivat preto aby som odelil HTML od PHP takto sice mozno odelim HTML od PHP, ale znovu budem mat v HTML nieco ako 'Smarty php' .

Takze to co budem moc kludne spravit v php to si dam do Smarty a budem sa z toho vytesovat? Jedine co som si vyrobil je problem: Kde sa tie data tvoria? V PHP alebo Smarty?

Po cca 1 mesiaci som zavrhol aky kolvek template system. Je to uplne nacic. Pri dobre strukturovanom a semnatickom kode si clovek uplne vystaci s CSS. (Ale to chce jednu vec: pouzivat tabulky na tabulky a nie na layout stranky). Aplikaciu staci rozdelit do modulov (= objektov) ak kazdy modul bude vypisovat HTML kod v takomto duchu:
[div id="module_id"]
...
[/div]

O kazdom module budem vediet aky kod generuje a ake classy pouziva => viem napisat celkom slusne CSS napriklad pre modul 'faq':
(Nehovorte mi o tom ze to browsre nepodporuju a ze sa to neda, neuverim vam.)


#faq .question {
font-weight: bold;
}

a HTML vystup z modulu faq bude:
[div id="faq"]
[p class="question"]...[/p]
[p class="answer"]...[/p]
[/div]

A je to . Ale MUSI byt splnena jedna zakladna podmienka modul nesmie vypisat ZIADNU informaciu o buducom vzhlade!!! Vsetko je potrebne nechat na CSS!!!


Avatar

Autor komentáře: Ondrej Jurecek

Datum vložení: 20.3.2003 14:58:40

<I>> name: {$person->name}
> email: {$person->email}</I>

Toto je pro me taky neprijatelne. (Nuze, Ondrejove musi drzet spolu! ;o) ..radeji vazne a k tematu). S timto principem vidim urcitou podobnost v Systemu R/3 (SAP), ve kterem aktivne programuji. Nelibi se mi to a hned reknu proc: sablona je pak primo vazana na obsluzny program - to je IMHO "nebezpecne", pokud jde o zajem zachovani transparentnosti programu. Nerikam, ze jiny program tuto sablonu nemuze pouzivat.. musi vsak prizpusobit nazvy promennych -- to by nebyl az takovy problem (napr. staci si ke kazde sablone napsat objekt). Mne se to proste nelibi a souvisi to spise se stylem pristupu k programovani. Kdybych zacal pouzivat tento pristup, za chvili bych mel chut si sablonovy system doplnit o ridici struktury (if, else, foreach.. viz <a href='http://www.php.cz/manual/cs/control-structures.php' target='_blank'>http://www.php.cz/manual/cs/control-structures.php</a> ) a pak uz jsme nekde jinde a stavime neco "NAD PHP". Rad se vsak necham poucit o vyhodach.

Citace:
---
<I>Po cca 1 mesiaci som zavrhol aky kolvek template system. Je to uplne nacic. Pri dobre strukturovanom a semnatickom kode si clovek uplne vystaci s CSS.

Aplikaciu staci rozdelit do modulov (= objektov) ak kazdy modul bude vypisovat HTML kod</I>
---
Na druhou stranu, Ondreji, s Vami nesouhlasim. Zkuste to jednoduse skombinovat: pouzivat sablony (tvorit validni XHTML) a v maximalni mire vyuzivat kaskadove styly. Neni na v tom prece nic sloziteho, sam mam s timto dobre zkusenosti.

Uvedu Vam priklad:
Pri tvorbe designu postaveneho na CSS hraje svou roli i poradi jednotlivych blokovych elementu (div, p apod.). Na tom se jiste vsichni shodneme. Rekneme, ze chcete pozdeji upravit design a vyzada si to pouhou zmenu poradi elementu v toku HTML. Jak toto budete resit? ..predpokladam, ze v PHP programu zmenite poradi volani metod, ktere generuji HTML. Pokud vsak pouzivate sablony, staci to upravit zde a kodu programu se tak vubec nedotknete. Myslim si, ze silu CSS precenujete. Anebo CSS ja podcenuji, hmm. ;-)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2003 16:14:29

ked si to pozieme zo stranky riadenia kvality a sw vyvoja dostaneme asi neco taketo:
bola zmena?
ano -> je potrebne previest testy
nie -> nic nerobime

Je jedno kde ta zmena nastala testovanie sa musi robit stale. Z mojho pohladu je lepsie robi zmenu na jednom mieste a to v php kode. Dalsia vec je to ze poradie blokov moze byt v databze, konfiguracnom subore, .... Pri tejto zmene nieje potrebne uz robit nove testy. Uz mam skoro hotovy framework ktory bude takto fungovat. skusim ho na zopar projektoch a uvidim ci je to pouzitelne v realnom svete. :)

ad css:
aj pri pevnom poradi blokov sa daju robit zazraky, su tam iste obmedzenia ale ideto:
<a href='http://quax.kmit.sk/test/css-layout/index2.php?count=20' target='_blank'>http://quax.kmit.sk/test/css-layout/index2.php?count=20</a>
count moze byt max 60 (cca 250kb stranka).

Avatar

Autor komentáře: The King

Datum vložení: 20.3.2003 15:23:02

Ja pouziva vlastni sablony. Nevim co je spatneho ze se v sablonach "trochu" programuje. Treba mam nekde vypis seznamu clanku a k nekterym clankum jsou ve vypisu treba. Nejrozumejsi reseni je dat do sablony podminku ktera ikonu vlozi. V mem template engine to udelam takto:

<h2>~titulek~</h2>
~#if(icona)~<img src="icony/~icona~.png" />~#/if#~
...
bez "naprogramovani" podminky budu potrebovat dve sablony pro jednu vec, kdyz tam takovich veci bude vic tak tech sablon bude potreba hromada. Je to jen programovani vzhledu a vyhled na byt definovany v šabloně, to je podle me smysl šablon.

Avatar

Autor komentáře: Ondrej Jurecek

Datum vložení: 20.3.2003 16:22:07

Nic spatnyho na tom neni. Podobne jako strukturovane vs. OO programovani.

Pripad podobny vlozeni ikony je velmi casty. Oznacim si v sablone urcity blok, ktery pojmenuji. Tento blok se nezahrne do vysledku, pokud to z programu neurcim. Krom toho to neni jednosmyslné (jen pro IF), ale muzu z tento blok rozvinout v cely seznam ikon.

Opravdu zalezi na tom, jaka prace Vam vyhovuje a me by jen zajimaly vyhody jineho reseni. :-)

Avatar

Autor komentáře: Jan Prochazka

Datum vložení: 20.3.2003 22:20:01

Jen abych uresnil... Delal jsem se Smarty radove asi take 3 mesice, mozna trosku vic, a musim priznat, ze mi k srdci neprirostl... Jen mi nebylo jasne, jestli jsem Smarty nepochopil ja, nebo jestli je skutecne "prerostly" sam pres sebe...

Jako ukazku, co se se Smarty dalo delat posilam toto:
<a href='http://www.ngprague.cz/main.php?language=cz&pageid=calendar_frameset' target='_blank'>http://www.ngprague.cz/main.php?language=cz&pageid=calendar_frameset</a>

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 21.3.2003 12:56:57

no ja s sablonama zacal delat teprve nedavno a smarty me opravdu vyhovuje to ze jsou tam uz i podminky IF apod. tak to je uz jako okrasa navic stejne to vetsinou nevyuzijete a pouzivate ciste HTML

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2003 14:16:44

Ked sme pri tom ja by som skor potreboval system ktory funguje opacne. Nie tak ako vstky klasicke systemy:
> tu JE sablona ak mi povies co mam kam dat tak ja to spravym.
Ja by som rad nieco taketo:
> tu MAS sablonu povedz mi co tam je aby som ti mohol dat data ktore tam das.

Druhy sposob je podstatne flexibilnejsi. V prvom pripade je potrebne pre kazdu sablonu napisat specialny kod v druhom staci len povedat co a kam. (to co a kam moze by kludne v db kde sa to da velmy jednoducho uschovat).

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 20.3.2003 15:29:23

Ano, k podobnému názoru jsem také dospěl, momentálně si hraji s něčím, co by to mohlo provozovat v praxi ;-)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 20.3.2003 16:05:09

ja to uz mam skoro hotove a bude to free, odhadujem to este na cca 2-3 tyzdne

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 21.3.2003 9:00:29

A pochlubíte se nám tady? ;-)

Avatar

Autor komentáře: Petr Spurný

Datum vložení: 21.3.2003 20:41:29

Dobry vecer,

ja tedy ke sve plne spokojenosti pouzivam k oddeleni vzhledu a logiky aplikace XSLT. PHPkem si vygeneruju XML, ktere po tom do libovolnych formatu transformuju prave pomoci XSL. Oproti "sablonovacim" systemum vydim velikou vyhodu: pravdepodobne vyssi rychlost a mnohem vetsi univerzalnost nez v pripade treba Smarty nebo Fast templates a (priznam se, ze neznam ani Smarty ani FastTemplates dokonale) i vetsi moznosti.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 21.3.2003 21:22:08

Rychlost? to nie, rychlostou to bude zhruba rovnako, skusal som. Inac vec by bola pouzitie Apache 2.0 filters:

<Files *.php>
SetOutputFilter PHP XSLT
SetInputFilter PHP
</Files>

co znamena asi tolko ze vystup z php sa preda modulu xslt. Zatial som este nenasiel modul ktory by bol ako filter a vedel by xslt. (existuje mod_xlst alebo tak nejak, ale ten nevie robit filter).

Avatar

Autor komentáře: Juraj Chlebec

Datum vložení: 20.3.2003 15:32:02

No ja osobne som skusal niekolko sablonovych systemov a nakoniec som zostal pri TemplatePower. Je jednoduchy a ucelny - nie je tam zavlecene ziadne programovanie a lahko sa s nim naraba. Teoreticky sa da nad nim postavit aj cache system, pripadne vkladat sablony do db. Smarty som mal tiez v rukach - skutocne je to dost hroza - skoro dalsi programovaci jazyk.

Avatar

Autor komentáře: Tantrick

Datum vložení: 28.1.2004 22:17:22

Tak jsem se začetl pane Jureček. Jestli jsem to dobře pochopil, tak máte pole $FLOW, ve kterém máte další pole, ve kterém máte index ORDER, podle kterého se to pole seřadí a tím se postupně vypíší prvky z pole CONTENT, na jehož indexy ukazuje ukazatel POINTER z pole v poli FLOW, že?
Co místo toho všeho jen:
$content = array();
$content[0] = & readfile('head.html');
$content[1] = '<title>Úvodní stránka</title>';
$content[2] = readfile('top.html');
$content[4] = $content[8] = & readfile('menu.html');
$content[5] = & readfile('uvod.html');
$content[6] = & readfile('banner.html');
$content[7] = & readfile('rightboxes.html');
$content[9] = & readfile('foot.html');
printf ($content);
------------------
Pokud neošetřujete chyby. Pokud ano, tak readfile nahradit vlastní funkcí, která to zajistí. Samozřejmě, pokud nahrajete do jednoho indexu vícekrát, tak se to přepíše. Ve vašem případě, se ty kolizní bloky se stejným indexem vytisknout za sebou v nedefinovaném pořadí. Tak nevím, co je lepší. Máte navíc fíčuru s nulou. Hm.

V obou případech to má použití jen pro statické html bloky, takže prakticky nanic.

Avatar

Autor komentáře: Ondřej Jureček

Datum vložení: 1.2.2004 22:33:01

Pochopil jste to asi spravne a ten kod, ktery jste predlozil, ma principialne stejnou funkcnost. Rozdil je v tom, ze uprednostnujete strukturovany pristup pred objektovym. Takze ta featurka ma nahle sirsi moznosti vyuziti plynouci z OOP (zapouzdreni, polymorfismus, dedicnost). Jinak vas priklad je huste zavadejici. Pokud bych chtel pouze nacist jednotlive elementy do pole a vytisknout hezky za sebou vsechno, urcite nebudu investovat cas do podobne tridy a ja se nerad omezuji na konkretni priklady pouziti.

Zpět na článek | Úvodní stránka Interval.cz