W niniejszej poradzie przedstawiony zostanie sposób napisania własnego modyfikatora Smarty.
Dla osób stykających się po raz pierwszy z tym zagadnieniem odsyłam do porady [Smarty] Co to są Smarty i jak je stosować?
Modyfikacje bazują na funkcjach php - własnych lub wcześniej zdefiniowanych. Poniższy przykład obrazuje ich zastosowanie:
Kod: smarty
{"<span>To jest przykładowy napis</span>"|strip_tags}
<!– Lub –>
{$opis|truncate:40:"…"}
Wykorzystanie gotowych modyfikacji to nie wszystko, czasem konieczne jest napisanie własnych. Taką własną modyfikację przedstawię na przykładzie podmiany ciągów znaków prezentujących tzw. buzki(smiles) na ścieżki do odpowiednich obrazków. Stwórz plik o nazwie: modifier.buzki.php i umieść go w katalogu /libs/plugins/. Gdy otworzysz którąś z instniejących już modyfikacji, zobaczysz opis dokumentujący jej działanie. Dobrze abyś do swojej własnej modyfikacji, w podobny sposób, dodał odpowiedni opis. Do podmiany ciągów znaków z buźkami na ścieżki url do obrazków, użyjemy funkcji php: str_replace.
Kod: php
<?php
/**
* Smarty Plugin
* Typ: modifier
* Nazwa: buzki
* Działanie: zamienia buźki na obrazki
* Przykład: {$tekst|buzki}
*/
function smarty_modifier_buzki($string)
{
$url = "obrazki/";
$znaki = array(‘:)’, ‘:(’, ‘;)’, ‘:|’, ‘:S’ ,‘:P’ ,‘:$’,‘:O’, ‘:*’, ‘:D’);
$podmiana = array(
‘<img src="’.$url.‘buzka1.gif" alt=":)" />’,
‘<img src="’.$url.‘buzka2.gif" alt=":(" />’,
‘<img src="’.$url.‘buzka3.gif" alt=";)" />’,
‘<img src="’.$url.‘buzka4.gif" alt=":|" />’,
‘<img src="’.$url.‘buzka5.gif" alt=":S" />’,
‘<img src="’.$url.‘buzka6.gif" alt=":P" />’,
‘<img src="’.$url.‘buzka7.gif" alt=":$" />’,
‘<img src="’.$url.‘buzka8.gif" alt=":O" />’,
‘<img src="’.$url.‘buzka9.gif" alt=":*" />’,
‘<img src="’.$url.‘buzka10.gif" alt=":D" />’
);
$string = str_replace($znaki, $podmiana, $string);
return $string;
}
?>
Dla prawidłowego działania, funkcja musi zostać nazwana wg odpowiedniego wzoru: smarty(dolny podkreślnik)modifier(dolny podkreślnik)nazwa, gdzie nazwa będzie określać nazwę modyfikacji. W naszym przykładzie nazwa to buzki. Funkcja smarty_modifier_buzki analizuje podany jako jej argument ciąg znaków $string i podmienia zawarte w nim "buzki" na ścieżki do odpowiednich obrazków. Aby zaprezentować działanie modyfikacji, stwórzmy plik buzki_przyklad.php:
Kod: php
<?php
include "includes/config.php";
$opis="To śmieszna sentancja:)<br />To smutna sentencja:(";
$smarty->assign("opis", $opis);
$smarty->display("buzki_przyklad.tpl.htm");
?>
Następnie stwórzmy plik buzki_przyklad.tpl.htm i umieśćmy go w katalogu templates
Kod: smarty
{include file="glowka.tpl.htm"}
<h2>Tekst bez podmiany buziek na obrazki</h2>
<div>
{$opis}
</div>
<h2>Tekst z podmianą buziek na obrazki</h2>
<div>
{$opis|buzki}
</div>
{include file="stopka.tpl.htm"}
Wyjściowy kod html będzie następujący:
Kod: html4strict
<html>
<head>
<title></title>
</head>
<body>
<h2>Tekst bez podmiany buziek na obrazki</h2>
<div>
To śmieszna sentancja:)
<br />
To smutna sentencja:(
</div>
<h2>Tekst z podmianą buziek na obrazki</h2>
<div>
To śmieszna sentancja
<img src="obrazki/buzka1.gif" alt=":)" />
<br />
To smutna sentencja
<img src="obrazki/buzka2.gif" alt=":(" />
</div>
</body>
</html>
Proste i użyteczne. W taki sposób można tworzyć wiele innych modyfikacji, ale to pozostawiam już Waszej inwencji.
Opracowanie: Adam Suchowski