Smarty Templating

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Smarty Templating

Δημοσίευση από ThyClub » 03 Δεκ 2005 13:09

Τι είναι το Smarty

Το Smarty είναι ενα σύστημα δημιουργίας templates. Τα συστήματα δημιουργίας templates αναλαμβάνουν
την δουλειά του να διαχωρίσει κανείς την λογική μιας εφαρμογής απο την εμφάνιση της. Έτσι αφήνει τους
προγραμματιστές να γράφουν τον κώδικα τους και τους σχεδιαστές να σχεδιάζουν χωρίς να μπλέκει ο ένας στα
πόδια του άλλου.

Πού το βρίσκουμε

Μπορούμε να κατεβάσουμε την τελευταία stable release από:
http://smarty.php.net/download.php εκεί θα βρούμε και το manual που καλό είναι να αναλώσει μερικά MBs απο
τον δίσκο μας.

Πώς δουλεύει;

Το Smarty χρειάζεται μερικά σταθερά paths που τα δίνουμε κάθε φορά που δημιουργούμε ενα instance της class.
Μετά περνάμε στο smarty οτιδήποτε θέλουμε να εμφανιστεί στην σελίδα μας. Μετά είναι δουλειά του σχεδιαστή το
που αυτό θα εμφανιστεί και άν.

Κώδικας: Επιλογή όλων


Ορισμός μιας μεταβλητής με περιεχόμενα name=Κώστας
<?php 

// load Smarty library 
require&#40;'Smarty.class.php'&#41;; 

$smarty = new Smarty; 

$smarty->template_dir = 'templates/'; 
$smarty->compile_dir = 'templates_c/'; 
$smarty->config_dir = 'configs/'; 
$smarty->cache_dir = 'cache/'; 

$smarty->assign&#40;'title','My Smarty Page'&#41;;
$smarty->assign&#40;'name','Κώστας'&#41;; 


$smarty->display&#40;'index.tpl'&#41;; 
?> 
Τα directories templates, templates_c, configs και cache είναι τα σταθερά που χρειάζεται το smarty για να
δουλέψει. Στον φάκελο templates βρίσκονται τα αρχεία του κάθε template όπως τα έχει δημιουργήσει ο
designer, στο φάκελο configs υπάρχουν διάφορα αρχεία με σταθερές μεταβλητές όπως πχ ο τίτλος της σελίδας κτλ,
στο φάκελο templates_c δημιουργούνται τα compiled αρχεία του template και στον φάκελο cache δημιουργούνται τα
αρχεία cache (προσωρινή μνήμη).
Οι φάκελοι templates_c και cache πρέπει να είναι world writeable 777

Ο παρακάτω HTML κώδικας είναι το template (index.tpl) :

Κώδικας: Επιλογή όλων

<html>
<head>
<title>&#123;$title&#125;</title>
</head>
<body>
Το όνομα μου είναι&#58; &#123;$name&#125;
</body>
</html>
Και το αποτέλεσμα:

Κώδικας: Επιλογή όλων

<html>
<head>
<title>My Smarty Page</title>
</head>
<body>
Το όνομα μου είναι&#58; Κώστας
</body>
</html>
Μορφοποίηση μεταβλητών

Μπορούμε να μορφοποιήσουμε διάφορα δεδομένα με το Smarty. Μπορούμε πχ να εμφανίσουμε μια ημερομηνία
με όποιο τρόπο επιθυμούμε:

Κώδικας: Επιλογή όλων

&#123;$smarty.now|date_format&#58; "%m-%d-%Y"&#125;
&#123;$name|capitalize&#125;
Το παραπάνω τυπώνει 12-03-2005 και την μεταβλητή $name με το πρώτο γράμμα κεφαλαίο.

Αρχεία ρυθμίσεων.

Τα αρχεία ρυθμίσεων είναι διάφορα αρχεία που δημιουργούμε και ορίζουμε μερικές σταθερές μεταβλητές
για το template. Μπορούμε να ορίσουμε γενικές μεταβλητές αλλά και μεταβλητές περιοχών:

Κώδικας: Επιλογή όλων

tableBGcolor=#cccccc
headerTextColor="Magenta"
title="Exampe page"

&#91;Downloads&#93;
title="Downloads page"
tableBGcolor=#f5f5f5
Στο παραπάνω ορίσαμε τον τίτλο μιας σελίδας, το χρώμα των tables και το χρώμα του header. Δημιουργήσαμε και
μια υποκατηγορία με το όνομα Downloads. :

Εμφάνιση Global:

Κώδικας: Επιλογή όλων

&#123;config_load file="config.ini"&#125;
<html>
<title>&#123;#title#&#125;</title>
<body>
<table bg-color=&#123;#tableBGcolor#&#125;><tr>
<td>The header text color for this page is&#58; &#123;#headerTextColor#&#125;</td>
</tr></table>
</body>
</html>
Εμφάνιση Section:

Κώδικας: Επιλογή όλων

&#123;config_load file="config.ini" section="Downloads"&#125;
<html>
<title>&#123;#title#&#125;</title>
<body>
<table bg-color=&#123;#tableBGcolor#&#125;><tr>
<td>This table's bg color is &#58; &#123;#tableBGcolor#&#125;</td>
</tr></table>
</body>
</html>

Cache

Με το Smarty μπορούμε να δημιουργήσουμε cached σελίδες και να ορίσουμε το πόσο αυτές θα υπάρχουν. Αυτό βοηθά στο
να έχουμε λιγότερο load στον server καθώς αν μια σελίδα δεν έχει αλλάξει δεν θα ξαναδημιουργηθεί. Μπορούμε επίσεις να
ορίσουμε διάφορα κομμάτια που θα χρησιμοποιούν cache και ξεχωριστές ρυθμίσεις για το καθε ένα. Ένα απλό παράδειγμα:

Κώδικας: Επιλογή όλων

<?php
// load Smarty library 
require&#40;'Smarty.class.php'&#41;; 

$smarty = new Smarty; 

$smarty->template_dir = 'templates/'; 
$smarty->compile_dir = 'templates_c/'; 
$smarty->config_dir = 'configs/'; 
$smarty->cache_dir = 'cache/'; 

$smarty->caching=true;
$smarty->cache_lifetime=60;
?>
Χρησιμοποίηση caching με διάστημα ζωής τα 60 δεύτερα.


Loops

Ίσως η μεγαλύτερη και η καλυτερη δυνατότητα που σου δίνει το smarty είναι αυτή που το διαχωρίζει απο ένα απλό <?php echo $data; ?>. Η δυνατότητα του να loopάρει κανείς ανάμεσα σε δεδομένα. Για παράδειγμα δείτε το επόμενο array:

Κώδικας: Επιλογή όλων

<?php
$menu=array&#40;
array&#40;'title'=>'Home','link'=>'index.php'&#41;;
array&#40;'title'=>'Search','link'=>'search.php'&#41;;
array&#40;'title'=>'Forums','link'=>'forum.php'&#41;;
&#41;;

$smarty->assign&#40;'menu',$menu&#41;;
$smarty->display&#40;"index.tpl"&#41;;
?>
Θέλουμε να εμφανίσουμε το παραπάνω array στην μορφή μιας λίστας και να ορίσουμε την όψη του με css:

Κώδικας: Επιλογή όλων

<html>
<body>
<ul>
&#123;section name=list loop=$menu&#125;
<li><a href="&#123;$menu&#91;list&#93;.link&#125;">&#123;$menu&#91;list&#93;.title&#125;</a></li>
&#123;/section&#125;
</ul>
</body>
</html>
Με τον παραπάνω κώδικα δημιουργήσαμε ενα μενού που μπορούμε να εμφανίσουμε οριζόντια, κάθετα κτλ κτλ. Βέβαια θα
μπορούσαμε να το εμφανίσουμε σε ένα jump menu ή όπως αλλιώς θέλουμε.

Εξωτερικές μεταβλητές

Με το smarty μπορούμε να ελέγξουμε και να χρησιμοποιήσουμε εξωτερικές μεταβλητές ($_POST ? $_GET):

Κώδικας: Επιλογή όλων

&#123;if $smarty.post.submit&#125;
Form submitted
&#123;elseif $smarty.post.get=="admin"&#125;
You must be joking
&#123;else&#125;
Hi there
Οι μεταβλητές $_POST είναι {$smarty.post.ΟΝΟΜΑ} και οι $_GET {$smarty.get.ΟΝΟΜΑ}

Περισσότερα στο manual

[END]

Ελπίζω κάποιος να βρεί τα παραπάνω χρήσιμα :)
Τελευταία επεξεργασία από το μέλος ThyClub την 04 Δεκ 2005 23:54, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Smarty Templating

Δημοσίευση από skeftomilos » 03 Δεκ 2005 23:55

Πολύ ενδιαφέρον βοήθημα, και πολύ καλογραμμένο! :D Αν και ο Rapid θεωρεί αυτά τα κόλπα «ταρζανιές», νομίζω ότι σε κάποιες περιπτώσεις θα πρέπει να είναι αρκετά χρήσιμα.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Smarty Templating

Δημοσίευση από cherouvim » 04 Δεκ 2005 11:13

Ωραία! Δεν έχω χρησιμοποιήσει ποτέ ένα τέτοιο templating engine γιατί έχω φτιάξει ένα δικό μου σύστημα για να πετύχω το διαχωρισμό MVC, αλλά πάντα τέτοιου tutorials και προροβουλίες είναι καλοδεχούμενα.

Έχε δοκιμάσει κανείς Ruby on Rails?

Keep it up

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Smarty Templating

Δημοσίευση από fafos » 04 Δεκ 2005 16:50

To Smarty einai to kalytero templating system pou kykloforei.. Exei poly kalh koinothta kai synexos anavathmizete me nea pragmata..

Epeidh to doulevo edo kai 3-4 xronia exo na dhloso oti opoios to mathei tha tou lythoun ta xeria se polles periptoseis.. epishs na toniso oti prosferei meiosh xronou anoigmatos selidas eos kai 50% merikes fores! Osoi asxolountai epaggelmatika aksizei na to mathoun.. Ena sxetiko manual tha vreite edo

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

Smarty Templating

Δημοσίευση από Basilakis » 04 Δεκ 2005 18:14

Den mou anoigei h selida tou smarty? Giati?

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Smarty Templating

Δημοσίευση από ThyClub » 04 Δεκ 2005 23:54

fixed :wink:

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27622
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Smarty Templating

Δημοσίευση από cordis » 05 Δεκ 2005 00:24

πολύ ωραίο βοήθημα... γιατί βαριόμουν να το ψάχνω στα τυφλά. :P
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Smarty Templating

Δημοσίευση από panosru » 04 Απρ 2006 17:59

oraio to smarty!
palia eixa dei to flexy den to thymamai katholou tora...
opoios exei dokimasei kai ta dyo poio protinei smarty h flexy?

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης