IPB

Welcome Guest ( Log In | Register )

7 Pages V   1 2 3 > »   
Reply to this topicStart new topic
> Smarty, a sablon kezelő rendszerek világa
toxin
post 2004. Oct 25., 15:46
Post #1


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



zsola2,TLof inspirált köszi nekik smile.gif

mivel én is rég néztem át, indítok egy topikot róla, majd haladunk a bonyolultabb dolgok felé

Próbáljuk összeszedni: miért is jó nekünk egy ilyen?

- függetlenné teheti a php kódot a megjelenítéstől márpedig ez jó dolog (Good Thing ™)

ez pedig általában egyébként is külön feladat külön embert jelent, képesek leszünk többrétegű alkalmazások készítésére (lásd invison power board és társai), megértjük ezek működését,

- tisztább logikusabb programot tudunk írni

- biztonságosabb kód (a grafikus kolléga nem fér hozzá az általunk készített remekműhöz)

- képesek leszünk felületcserés alkalmazás fejlesztésére (szabványos módszerekkel)

De mire is képesek az ilyen sablonrendszerek:

- alapvető változó behelyetítésre, egyszerű tagek
- dinamikus blokk funkciók (alapvető ciklusok)
- minden oldal letöltésekor megtörténik a sablon értelemezése
- sebesség növelése (kész feltöltött sablon tárolása)

Mi a Smarty-val fogunk ügykezelni mivel:
-php nyelven írodott (nem kell új ismeret a kezdéshez smile.gif )
-nincs felesleges sablon értelmezés ( 1-szer fordít)
-saját funckiókat, módosítókat tudunk alkalmazni
-szekciók alkalmazása (és egymásba ágyazhatósága if,foreach,section)
-a tag elválastók definiálhatók ( {} stb.)
-cache rendszerrel is el van látva,de tudunk írni saját cache funkciókat
-a sablon forrás többféle lehet (fájl ,adatbázis)
-plugin rendszere is van
- utoljára de nem utolsosorban eccerű

Mi kell a kezdéshez?
A szokásos Szentháromság, meg a Smarty rendszer: http://smarty.php.net/do_download.php?down...ty-2.6.6.tar.gz

csináljunk egy könytárat a htdocs-ban, ebben fogunk ügyködni, csináljunk benne két könyvtárat : templates ill. templates_c -t, majd másoljuk bele a Smarty-2.6.6.tar.gz-ből a libs/*.* -ot. Tehát most így néz ki :
(nekem zsola2 az alapkönyvtár biggrin.gif )

htdocs/
.
.
.
zsola2/libs/ (itt van a smarty motor amit idemásoltunk)
-------/templates
-------/templates_c
.
.

Első programunk: Hello világ!

Irjuk meg a sablon fájlt

HTML
<html>
<head>
</head>
<body>
{$title}
</body>
</html>



mentsük el temp1.tpl néven a templates könyvtárba majd, majd írjuk meg első sablon motorunkat, ezt pedig helyezzük el az alapkönyvtárba (mostantól :zsola2) pl. temp1.php néven

[php]
<?php

require('./libs/Smarty.class.php');

$smarty=new smarty;

$smarty->assign('title','Hello világ!');
$smarty->display('temp1.tpl');

?>
[/php]

a működése: becsatoljuk a smarty-t, majd létrehozzuk az objektumunkat, a következő lépésben hozzárendeljük a title-t a sablonban megadott {$title} változóhoz, a végén pedig megjelenítjük az egészet.
Meg is nézhetjük, nálam http://localhost/zsola2/temp1.php, ha ügyesek voltunk kimenetként láthatjuk művünket a Smarty belerakta a Hello világ! -ot a sablonba, és megjelenítette. dance.gif

Mára ennyi folyt köv. (ha lenne kérdés hajrá, majd felrakom valami free szerverre a példákat)

ui: Harder lektoráld lécci respect2.gif smile.gif

This post has been edited by toxin: 2004. Oct 25., 15:53


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
Harder
post 2004. Oct 25., 16:26
Post #2


Admin
*****

Group: Admin
Posts: 8049
Joined: 03. March 16.
From: Hungary
Member No.: 2



Ez nagyon jó ötlet meg téma, engem már régebben is érdekelt ez a smarty. smile.gif
Mi lenne kimenne ebben a formában a lapra, mint tutorial?


--------------------
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 17:11
Post #3


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



felőlem smile.gif , de még had gyűljön mert hosszú lesz


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
LeGaS
post 2004. Oct 25., 17:30
Post #4


Frontend developer
*****

Group: moderator
Posts: 5236
Joined: 04. August 2.
From: Budapest
Member No.: 413



QUOTE (toxin @ Oct 25 2004, 04:11 PM)
felőlem smile.gif , de még had gyűljön mert hosszú lesz

Szerintem már ezt is ki lehet rakni, mert ha egyet rak ki, de az bazi hosszú lesz, akkor azt senki se olvassa végig. dry.gif


--------------------
LeGaS | Moderátor
Webfejlesztő blogom
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 17:40
Post #5


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



jó de akkor legyen az alapkönyvtár smarty (hadjuk 'szegény' zsola2-őt biggrin.gif pedig az ő kódja miatt kezdtem el)

felraktam a példát: (a könytárszerkezet a régi, templates ide mennek a sablon html fájlok tpl kiterjesztéssel, templates_c ez a smarty-nak kell, libs itt vannak a smarty-s objektumok) és a smarty-ba mennek a php-k

1. példa "Helló világ!"

http://ixedik.uw.hu/smarty/temp1.php

forrás: http://iXedik.uw.hu/smarty/pelda1.rar

This post has been edited by toxin: 2004. Oct 25., 17:46


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
Harder
post 2004. Oct 25., 17:45
Post #6


Admin
*****

Group: Admin
Posts: 8049
Joined: 03. March 16.
From: Hungary
Member No.: 2



rendben. smile.gif


--------------------
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 18:30
Post #7


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



akkor még fontosnak érzem a kezdéshez:

-PHP 4.0.6 a minimális php verziószám
-hozzunk létre egy cache, és egy configs könyvtárat, és adjuk meg a 775-ös jogot ennek és a templates_c könyvtárnak

akkor tehát ezek most így néz ki a struktúra:
-smarty/
--------/libs/ (itt van a smarty)
--------/cache (itt tárolja majd az összeállított kész sablonokat)
--------/configs (ez önmagért beszél)
--------/templates (itt vannak a sablonok)
-------/templates_c (ide generálja a kimenő kódot a smarty)

ha nem free szerveren lennénk így alakulna az elrendezés:

/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/core/*.php
/usr/local/lib/php/Smarty/plugins/*.php

/web/www.mydomain.com/smarty/webapplication/templates/
/web/www.mydomain.com/smarty/webapplication/templates_c/
/web/www.mydomain.com/smarty/webapplication/configs/
/web/www.mydomain.com/smarty/webapplication/cache/

/web/www.mydomain.com/docs/webapplication/index.php


This post has been edited by toxin: 2004. Oct 25., 18:49


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
BlackY
post 2004. Oct 25., 19:16
Post #8


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



Toxin, már bocs, de nem egyszerűbb ez:
CODE

function read_template($template)
   {
   global $lang;
   if(!file_exists($template))
       {
       return false;
       }
   $fopen = fopen($template, 'r');
   $contents = fgets($fa, 1024);
   fclose($fa);

   if(Is_array($lang))
       {
       foreach($lang as $var)
           {
           $contents = eregi_replace('{' . key($lang) . '}', $var, $contents);
           }
       }
   return $contents;
   }

kész. Nyelvi file megoldva. Vagy ha nem sablonokat akarunk használni, hanem egy változóban tárolt teljes oldal(részletet), akkor:
CODE

function translate($string)
   {
   global $lang;
       foreach($lang as $var)
           {
           $string = eregi_replace('{' . key($lang) . '}', $var, $string);
           }
   return $string;
   }


A cuccok használata:
- Mindkettő megköveteli, hogy a fordításokat a $lang nevű lehetőleg egydimenziós tömbben tároljuk. smile.gif

Ha egy teljes előre lementett template-t akarunk fordíttatni:
CODE

$valami = read_template('file_neve');


Ha egy már egy változóban elmentett cuccot akarunk fordítani:
CODE

$valami = translate($valtozo neve);


Ennyi az egész, és nem kellett hozzá objektum-osztályokat bevezetni smile.gif
Ja, és persze a behelyettesítendő cuccokat ilyen formában írjuk be:
{szoveg_neve_a_tombben}
Ez case-insesitive, tehát a {tItLe} ugyanaz, mint a {title} v. {TITLE}.

pl.:
A tömbben van egy ilyenünk:
$lang['title'] = "BlackY weblapja";

Akkor egy ilyesmit kéne csinálnunk:
CODE

<html>
<head>
<title>{title}</title>
</head>

BlackY

This post has been edited by BlackY: 2004. Oct 25., 19:21


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 19:17
Post #9


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



de kis buta vagyok rolleyes.gif , free szerveren 777-es jog kell a cache,templates_c könyvtárnak ennek örömére át is mentem az srv.hu-ra

következő példánk már onnan érkezik, ha kiváncsiak vagyunk mit is alkot smarty barátunk, egészítsük kódunkat a következőképpen

[php]
<?php

require('./libs/Smarty.class.php');
$smarty=new smarty;

$smarty->debugging = true;

$smarty->assign('title','Példa2 vagyok');
$smarty->display('temp1.tpl');

?>

[/php]

ekkor pop-up ként láthatjuk a Smarty Debug Console-t, ezen legfelül a temp1.tpl sablont, és feldolgozási idejét, majd a végrehajtott szkript nevét(/i/x/ixedik/smarty/temp2.php), a behelyetesített sablon változót (Példa2 vagyok), valamint a konfig fájlokat (ezek még nincsenek)

2. példa

http://free.srv.hu/i/x/ixedik/smarty/temp2.php

This post has been edited by toxin: 2004. Oct 25., 19:28


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 19:25
Post #10


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



QUOTE (BlackY @ Oct 25 2004, 07:16 PM)
Toxin, már bocs, de nem egyszerűbb ez:
.
.
.

Ennyi az egész, és nem kellett hozzá objektum-osztályokat bevezetni smile.gif

BlackY

BlackY ismered a Smarty-t, ha nem akkor várd ki a végét... smile.gif

This post has been edited by toxin: 2004. Oct 25., 19:32


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
BlackY
post 2004. Oct 25., 19:31
Post #11


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



De az én szkriptem üzembehelyezés - hatékonyság arány még mindig jobb smile.gif
Nem kell neki egy rakás file meg könyvtár, csak egy sima copy->paste.

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 19:49
Post #12


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



na akkor figyu, tud a tied ilyet (saját makro nyelv?), pedig ez már a holnapi anyag lett volna biggrin.gif (a lényegi huncutságok pedig csak ezután jönnek, de nagyon nem akarok előreszaladni, meg nézni akarom Bagi-Nacsát is biggrin.gif )


a sablonunk így változott

HTML
<html><head></head>
<body>
{$title}</br>
{$title|upper}</br>
{$title|spacify}</br>
{$title|spacify|upper}</br>
</br></br>
{$user.name}</br>
{$user.lakcim}</br>
{$user.email}</br>


</body>
</html>




a sablon motorunk meg így

[php]
<?php

require('./libs/Smarty.class.php');
$smarty=new smarty;
$smarty->debugging = true;

$smarty->assign('title','Példa3 vagyok');

$smarty->assign('user',array("name"=>"valaki","lakcim"=>"valahol","email"=>"valami"));

$smarty->display('temp2.tpl');

?>
[/php]

látható hogy a sablonban a php motortól függetlenül formáztuk a szöveget (egy kis programozás úgyse árt a grafikus kollégáknak evil.gif lesz majd bonyolultabb is), majd egy asszociatív tömböt illesztettünk be a motorba, és azon keresztül a sablonba, érdemes megfigyelni a Smarty Debug Consol változásait, magyarázatra ezesetben nem szorulnak

Példa 3:
http://free.srv.hu/i/x/ixedik/smarty/temp3.php

This post has been edited by toxin: 2004. Oct 25., 19:52


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
toxin
post 2004. Oct 25., 21:13
Post #13


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



na ezt az utolsót még berakom, lássunk valami hasznosabb gyakorlati példát is, aztán visszatérünk az alapokhoz

Harder esetünkben egy átlagos grafikus megkérdezzük tőle if/elseif/else szerkezetet kell magyarázni? evil.gif

HTML
<html><head></head>
<body>
{$title}<br/>

{if $name eq "boss"}
A rendszer Adminisztrátorként azonosította önt Üdvözöljük a rendszerben
{elseif $name ne""}
Hello Juzer
{else}
Be kéne jelentkezni
{/if}


</body>
</html>





[php]
<?php

require('./libs/Smarty.class.php');

$smarty=new smarty;

$smarty->debugging = true;
$smarty->assign('title','Példa 4');
$smarty->assign('name','valaki');


$smarty->display('temp4.tpl');

?>

[/php]

felmerül a kérdés akkor most ki a programozó smile.gif , lesznek objektumok is html oldalon, mehet majd Harder (tömböket kell magyarázni)?

Akkor mi lesz most a kimenet, kitaláljátok? ( smile.gif BlackY ilyet is tud a kódod?)

http://free.srv.hu/i/x/ixedik/smarty/temp4.php

This post has been edited by toxin: 2004. Oct 25., 21:21


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
zsola2
post 2004. Oct 25., 21:42
Post #14


aki zsola, csak 2...
****

Group: moderator
Posts: 3800
Joined: 04. April 28.
Member No.: 305



Ennek igazán örülök, hoyg ilyen "múzsa" vagyok, ám egyenlőre még a felét sem értem a dolognak...
De nem baj, úgy érzem, ez nem is az én világom... smile.gif


--------------------
- egy blog a rengetegben -
A fórum etikettjét mindenképp olvasd el! --> Fórum looser's guide
Webszerkesztéssel kapcsolatos kérdésekre PM-ben _nem_ vagyok hajlandó válaszolni... A fórum azért van, hogy ezt ott beszéljük meg!
"Ne feledd, ha valaki felbosszant, az arcodon 42 izom rándul össze. De csupán négy izom kell ahhoz, hogy kinyújtsd a kezed, és pofán vágd vele az ilyen seggfejeket."
Go to the top of the page
 
+Quote Post
Harder
post 2004. Oct 25., 21:42
Post #15


Admin
*****

Group: Admin
Posts: 8049
Joined: 03. March 16.
From: Hungary
Member No.: 2



Én már teljesen elvesztettem a fonalat... smile.gif Az ilyen tömbök, objektumok és egyéb programozási részek nekem elég homályosak, és mint átlag grafikus hadd adjak egy tanácsot: bármely munka során nem örülnék, ha nekem ilyen szinten kellene turkálnom a kódban. smile.gif Nagyon lassítja a melót és nem is az én reszortom, amivel én esetleg órákat elszöszmötölök, azzal a programozó percek alatt megvan.
Szóval ennél nekem (bár nekem nagyon nincs hozzá érzékem) biztos részletesebben kellene magyarázni (hisz még az alapfogalmakat sem értem), egyelőre csak olvasgatom és figyelek, aztán meglátom mi sül ki belőle a végén. smile.gif


--------------------
Go to the top of the page
 
+Quote Post

7 Pages V   1 2 3 > » 
Reply to this topicStart new topic

 



Lo-Fi Version Time is now: 2012. May 23. - 11:19

Harder - webdesigner blog | keresőoptimalizálás | honlapkészítés