Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP, sabloni, dizajneri, kuke i kvake...

[es] :: PHP :: PHP, sabloni, dizajneri, kuke i kvake...

[ Pregleda: 3338 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

broker

Član broj: 2415
Poruke: 8514
*.vdial.verat.net



+11 Profil

icon PHP, sabloni, dizajneri, kuke i kvake...23.10.2003. u 13:33 - pre 248 meseci
Ima jedan problem s kojim se stalno srecem ali jos nisam smilio zgodno resenje. Radi se o koriscenju sablona radi razdvajanja koda od izgleda strane i problemima koje to uzrokuje.

Sabloni su na prvi pogled sjajna stvar. Svi koji ih zagovaraju navide najocigledniju prednost: programer pise kod a dizajner dizajnira izgled strane a kad treba izmeniti izgled samo se izmeni sablon.

Sio mu ga Djura...

To jeste tako ali kada su dokumenti jednostavni, odnosno kada ne sadrze linkove ka drugim dokumentima. Ako pogledate sablone nekog iole komplikovanijeg sajta videcete da u tom dzumbusu moze da se snadje samo onaj ko je sajt isprogramirao.

- prvi problem: gubi se WYSIWYG u postupku dizajna

Generalno uzevsi, svaki dokument se sastoji od bar tri sablona: zaglavlja, tela i podnozja, koji se nalaze u odvojenom datotekama i, naravno, tako odvojeni ne lice ni na sta. Dizajnerima, za koje se podrazumeva da korsite neki WSIWYG alat ovakvi sabloni ne vrede mnogo. Kako god okrenu moraju da zarone u kod i u glavi zamisljaju kako stvari treba da izgledaju. Ja se slazem da svaki web dizajner mora da zna da roni po kodu, ali nikako ne mislim da treba ceo posao tako da odradi posto je to najsporiji nacin da se nesto uradi.

- drugi problem: gube se linkovi prema spoljnim dokumentima

Dobra praksa u projektovanju sajta je da se sadrzaj grupise i razmesti po direktorijumima kako bi se znalo gde se sta nalazi i tako lakse radilo azuriranje sadrzaja. Takodje je dobra praksa da su svi linkovi u dokumentima unutar sajta relativni cime se lako manipulise istima aposebno zato sto root sajda u dizajn rezimo i root u eksploataciji najcesce nemaju veze jedno s drugim.

Tako je dobra praksa i da se sami sabloni, s obzirom da su odvojeni od koda, odvoje u poseban direktorijum. E tu je kvaka. Onog trenutka kada smestite sablone u poddirektorijum imate problem.

S cemu se radi: sablon je, kao i svaki drugi klasican html dokument, koji cak moze i sadrzati samo cist html kod. Tako se i likovi prema drugim dokumentima, bitmapama i drugim sadrzajima rade isto kao i u HTML-u i po pravilu se adresiraju relativnim putanjama.

Definisacu relativnu putanju kao putanju koja pokazuje gde se neki dokument nalazi u odnosu na tekucu putanju dokumenta u kome se link nalazi.

Evo jednostavan primer strukture jednog sajta:

Code:

/root/
   /img/
      logo.gif
   index.php
      -> img/logo.gif


Dakle, index ucitava logotip u sebe relativnom putanjom do njega.


Ako uvedemo sablone struktura sajta ce se malo izmeniti:

Code:

/root/
   /images/
      logo.gif
   /templates/
       index.tpl
         -> ../images/logo.gif
   index.php
      -> index.tpl


Dodat je direktorijum templates gde se smestaju sabloni. Dizajner ce u njemu napraviti index.tpl i u njega vezati logotip po relativnoj putanji. U toku dizajna tekuca putanja je direktorijum u kome se nalaze sabloni.

Medjutim, kada index.php ucita index.tpl tekuca putanja je putanja na kojoj se nalazi index.php a ne putanja na kojoj se nalazi index.tpl. Kako je tekuca putanja promenjen tako su odmah svi linkovi sa relativnim putanjama postali neispravni i naravno ne rade.

Resenje kome se pribegava je da se u toku dizajniranja sablona unose relativne putanje do dokumenata ali u odnosu na direktorijum u kome se nelazi php skript koji ce ucitavati sablon a ne u odnosu na sam sablon. Takav sablon kada ga skript ucita ce imati ispravne putanje i strana ce biti prikazana kako treba.

Sada imamo situaciju da dizajner mora da radi napamet, jer nijedan spoljasnji element koji korsiti na strani on u toku dizajniranja ne moze da vidi. Ne moze da ga vidi ni WYSIWYG editor sto znaci da gomila prednosti takvih editora biva ponistena. Editor vise ne moze da procita ni sirinu i visinu bitmape koja se nalazi na strani a kamoli da uradi neki drugi pomocni posao kao to je recimo ucitavanje CSS definicije iz spoljasnjeg dokumenta. Prakticno, dizajner pred sobom ima gomilu nabacanih elemenata s kojima vizuelno ne moze da uradi nista nego mora da predje u editor koda i snalazi se po njemu.

Trazio sam po mrezi da li se neko bavio ovim problemom i nisam bas nista nasao. Kada se govori o sablonima prve se hvalospevi o njihovim prednostim ai mogucnostima a stalno se zaboravlja da nas oni istovremeno vracaju u kameno doba web dizajna, kada se sve radilo drvenim ralom. Danas, kada su web dokumenti veoma komplikovani, sadrze mnogo raznorodnih elemenata, cesto veliki broj grafickih elemenata, narocito lejera koji su skoro neupotrebljivi ako ne mozete da vidite na sta lice i mnogo vise skript koda nego samog HTML-a, nemogucnost vizuelnog rada jeste veliki problem.
 
Odgovor na temu

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.metrohive.net

Sajt: www.activecollab.com


+1 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...23.10.2003. u 18:18 - pre 248 meseci
Jesi li probao Smarty???

Navedeni problemi se lako "prevazilaze".

Prvo problem: radi u DW-u, a Smartyjem kasnije "parsiraj" tpl fajl i unesi sve sto ti treba. To je --zombie-- objasnio u svom clanku o smartyju (deo Smarty MX). Pitaj ga za link ka tom tutorijalu i procitaj...

Drugi problem: koristi konstante i dodeljuj ih tpl-ovima. Kad se path promeni promeni konstantu. Smesno :) Imas konstanti SITE_URL definisanu kao http://www.sima-i-djoka.com i IMAGES_DIR kao 'images' . Onda u tpl-u za logo.gif koji se nalazi u images dir-u imas:

Code:

PHP kod:
define('SITE_URL', 'http://www.sima-i-djoka.com');
define('IMAGES_DIR', 'images');
$smarty->assign('site_url', SITE_URL);
$smarty->assign('images_dir', IMAGES_DIR);

HTML:
<img src="{$site_url}/{$images_dir}/logo.gif" />


Definisi koliko god kontanti da ti je potrebno: IMAGES_DIR, DOCUMENTS_DIR, MY_FAVORITE_HARDCORE_IMAGES_DIR :-)

PS: Vise volim "rucno" pisanje HTML-a nego koriscenje WYSIWYG editora :-)

Pozdrav!
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
*.vdial.verat.net



+11 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...23.10.2003. u 20:30 - pre 248 meseci
Video sam to ali onako kako je ne pomaze. To samo zameni dw template kodove Smarty kodovima a problem relativnih adresa ostaje i dalje. Mzoda ako bi se filter doradio da preparsira i sve url-ove u dokumentu...

Ovaj drugi deo nije resenje jer ne omogucava ono sto je potrebno: da se dokument moze azurirati u WYSIWYG rezimu. I ja sam ljubitelj kodiranja u sorsu ali kad su u pitanju glomazne stvari to je neprakticno.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...23.10.2003. u 22:20 - pre 248 meseci
Ja ti ne volim te raznorazne eksterne biblioteke, više volim da imam "svoju" stvar. Stoga imam i svoju klasu za rad sa šablonima. Naime šablon je OBIČAN dokument, html, xhtml... sa sve odgovarajućom ekstenzijom. U šablonu se nalazi jedan red tabele, ili dva reda ako treba raditi u dve boje. Znači WYSIWYG podržan 100% jer je šablon ceo šablon.

U samom šablonu varijable su označene pomoću {!var_name!} sekcenci što nema šanse da se nađe u normalnom tekstu. Kontrolne strukture (sekvence koje se dupliraju, isključivi unosi tipa ili ovo ili ono i slično) su definisane pomoću komentara za HTML (<!-- ... -->). Sistem prilikom učitavanja šablona prenosi imenovani niz sa podacima klasi za obradu šablona koja onda na osnovu tog niza (ili ugneždenih nizova ako ima gore pomenutih ciklusa) parsira šablon i to sve lepo prikaže korisniku. Ima i malo dorađenosti gde se niz enkriptuje pa se šalje remote drugom sistemu koji onda primenjuje to kao podatke za njegove šablone itd...

Jedina mana ovoga jeste što se gubi jednom_zameni_svuda važi principa, mada se i to može dodati nekim kontrolnim strukturama koje traže iste elemente, pa promene u jednom prenose na sve šablone. Za sada se to ispravlja nekim internim sistemom šablona u WYSIWYG alatu koje koriste dizajneri pa onda od toga izgenerišu statični sajt.

Problem relativnih putanja se rešava obradom svih linkova, što je Predrag već napomenuo. Sistem traži href="", src="", action="",... i ako izmedju "" nije nešto što počinje sa xxxx: onda prebacuje relativnu putanju na putanju koja treba da bude pri prikazu posetiocu.

Sam sistem dosta brzo radi i obezbeđuje sve što mi je potrebno. A Smarty... pa hm, možda nekad i budem to koristio...


http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.162.EUnet.yu



+1 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 01:09 - pre 248 meseci
Možda ja ne znam da to može, ali me na početku zbunjuje kako neko može da radi WYSIWYG sa PHP-om? Ako može onda ti ne treba PHP?

Što se relativnih url-ova, najbolje rešenje je ono što Ilija predlaže, samo ja to malo drugačije radim. Ja definišem jedan objekat koji nazovem recimo $CFG i u njemu čuvam sve putanje, pa ga sa assign prenesem u template i uvek koristim absolutne putanje pa umesto
Code:

PHP kod:
define('SITE_URL', 'http://www.sima-i-djoka.com');
define('IMAGES_DIR', 'images');
$smarty->assign('site_url', SITE_URL);
$smarty->assign('images_dir', IMAGES_DIR);

HTML:
<img src="{$site_url}/{$images_dir}/logo.gif" />


koristim:
Code:

$CFG->root = "www....";
$CFG->images = $CFG->root."/images";
...
$smarty->assign('CFG', $CFG);

HTML:
<img src="{$CFG->images}/logo.gif" >


Resenje je skoro identicno, samo mislim da je preglednije koristiti jednu varijablu (nema gomile ->assign(...)) a i ne moze ti se desiti da zaboravis neki...

Goran Pilipović fka bluesman
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
*.vdial.verat.net



+11 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 10:25 - pre 248 meseci
Uh, sto smo mi programeri nezgodni. Covek pokrene jednu temu a svi komentarisu nesto drugo :)

Ald prvo ovo sto je na temu :)

Citat:

Problem relativnih putanja se rešava obradom svih linkova, što je Predrag već napomenuo. Sistem traži href="", src="", action="",... i ako izmedju "" nije nešto što počinje sa xxxx: onda prebacuje relativnu putanju na putanju koja treba da bude pri prikazu posetiocu.


Mislim da je to po svemu sudeci i jedino resenje. E sad kako ni ja nisam ljubitelj raznih gotovih sablonskih resenja nego vise volim da koristim poseban php dokument u kome je izdvojen vizuelni deo dokumenta to tako nece moci. Moracu da uvedem nekakve sablone.


Citat:

Možda ja ne znam da to može, ali me na početku zbunjuje kako neko može da radi WYSIWYG sa PHP-om? Ako može onda ti ne treba PHP?


Hm.. bluesmane siguran sam da si pratio moje ucesce u web dizajn forumima i da ti epoznato sa sam ja zagovornik toga da web dizajn rmora da zna da radi kod u sorsu. Medjutim, treba biti razuman. Ako posao moze da se olaksa i ubrza koriscenjem nekih alata onda te alate treba i korsititi. Vizuelni alati itekako ubrzavaju rad. Drugim recima, zamisli da se u Fordu drze nacela da sve mora da se odradi "majstorskom" rukom pa da nisu uveli robotske linije za proizvodnju automobila.

kako da ti pokazem kako izgleda kad se radi vizuelno a da ti ne pokazem :) Ne generise ti valjda php ama bas sav kod? Svaka strana ima dosta staticnih elemenata i mnogo je lakse ako se s njima radi u vizuelnom rezimu. Svaku stranu mozes da svedes na sablon - HTML kod kojim se upravlja php kodom. HTML kod je statican i s njim se moze raditi vizuelno a php sam u taj sablon ubacuje dinamicke elemente.

Osnovna sustina rada sa sablonima je upravo to da se aplikativni deo dokumenta odvoji od vizuelnog dela.

Ako vec ne koristis vizuelni alat sta ce ti onda sabloni (pogotovo smarty) kad sve mozes da odradjujes sa include()...



Citat:

Što se relativnih url-ova, najbolje rešenje je ono što Ilija predlaže, samo ja to malo drugačije radim. Ja definišem jedan objekat koji nazovem recimo $CFG i u njemu čuvam sve putanje, pa ga sa assign prenesem u template i uvek koristim absolutne putanje pa umesto...


Naravno, to je i logicno i tako i ja radim. Ovaj pristup je neophodan i zbog samog php include() koji takodje ima problem sa relativnim putanjama.

Ali ovde se radi o staticnim elementima na strani koji nemaju i ne treba da imaju nikakve veze sa php-om.

Citat:

Ja ti ne volim te raznorazne eksterne biblioteke, više volim da imam "svoju" stvar. Stoga imam i svoju klasu za rad sa šablonima. Naime šablon je OBIČAN dokument, html, xhtml... sa sve odgovarajućom ekstenzijom. U šablonu se nalazi jedan red tabele, ili dva reda ako treba raditi u dve boje. Znači WYSIWYG podržan 100% jer je šablon ceo šablon.


Namerno prilikom postavljene teme nisam se vezivao ni za jedan pristup koriscenju sablona jer je za samu temu on nebitan. Kako god da izvodis sablone imas isti problem. ako se sablon nalazi u poddirektorijumu a skript koji ga ucitava u direktorijumu iznad.. stticni linkovi ne rade.

Stvar se naravno olaksava ako se sablon nalazi na istom emstu gde i skript ali to ona komplikuje odrzavanje narocito ako postoji mogucnot koriscenja vise sablona za isti dokument...
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
*.vdial.verat.net



+11 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 10:44 - pre 248 meseci
Za Samrty nadjoh da su se ljudi bavili problemom...

Evo jedan pokusaj koji obecava: http://www.naguib.info/Smarty/

A evo i jedan dosta interesantan clanak na temu koriscenja sablona. Nije bas u temi koju sam zapoceo ali od pocetka pravimo izlete te vrste :)
http://www.massassi.com/php/articles/template_engines/
Napomena: ignorisite komentare na samrti, bitna je susitna ideje o kojoj covek prica.
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.4.EUnet.yu



+1 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 11:09 - pre 248 meseci
Citat:

generise ti valjda php ama bas sav kod?

Ma jok, generisem ga ja :-)

Zezam se, kao sto rekoh, nisam dobro shvatio, mislio sam da design-time vidis output php... malo sam umoran :-)

Ne koristim vizuelni alat jos od Netscape 3.05 Gold kada sam poslednji put koristio njegov composer, ali opet kazem to ne znaci da WSIWYG ne valja, ja sam navikao bez njega pa nisam mozda kvalifikovan da govorim o tome.

Ne vidim prepreku da radis u DW sa smarty, koliko znam mozes lagano da editujes tekst, formulare ili sta god a smarty tagove kucas kao bilo koji drugi tekst, najveci je problem sto ne vidis include-ove pa tako ce WSUWYG koncept pada u vodu.

Goran Pilipović fka bluesman
 
Odgovor na temu

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.metrohive.net

Sajt: www.activecollab.com


+1 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 11:51 - pre 248 meseci
Citat:
bluesman:
Što se relativnih url-ova, najbolje rešenje je ono što Ilija predlaže, samo ja to malo drugačije radim. Ja definišem jedan objekat koji nazovem recimo $CFG i u njemu čuvam sve putanje, pa ga sa assign prenesem u template...


Pa ni ja ne radim tako kao sto sam napisao... Doduse, ne koristim objekte vec nizove, ali je princip isti (umesto $obj->dir imam $arr.dir). Manji problem kod nizova je sto ne mogu sadrzati funkcije (ili se varam???) ali to je sasvim druga prica...

Ja sam od DW-a digao ruke kada samo poceo malo ozbiljnije da se bavim HTML-om. Onaj njegov krs DIV-ova, BORDER-a kod slika (za to se koristi jedna linija CSS-a pobogu!), uzasno formatiranje koda i jos kojekakvi njegovi hirovu su krivi sto ga vise ne koristim. Zadnji put sam ga otvorio kad sam pisao tutorijal o njemu... Opet promasena tema, ali ajde... Vi ste poceli :-)
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
*.vdial.verat.net



+11 Profil

icon Re: PHP, sabloni, dizajneri, kuke i kvake...24.10.2003. u 12:01 - pre 248 meseci
Jao ljudi vama se sve mora nacrtati :)
Razmisljajte malo uopsteno, zdravo je to :)

U celoj temi, sve je uopsteno. Niko ne govori o konkretnom sistemu sablona, o konkretnom vizuelnom alatu, cak uopst ene mora biti rec o sablonima koji daju HTML strane. To mogu biti i Flash, i PDF, i RTF i DOC i AVI i svakojaki drugi dokumenti. Jedino sto nije uopsteno u ovoj temi je sam PHP :)

Bidnite malo konstruktivniji :)


---
Evo jos jedan internesantan clanak na temu korsicenja sablona: http://wact.sourceforge.net/index.php/TemplateView





 
Odgovor na temu

[es] :: PHP :: PHP, sabloni, dizajneri, kuke i kvake...

[ Pregleda: 3338 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.