BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 24 | UU: 435
[Smarty] Własny modyfikator Smarty
10 kwiecień 2007

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

Dodaj komentarz









Komentarze
3 odpowiedzi
31 styczeń 2008, godz. 4:41

Dobre, dobre…

adamt
10 kwiecień 2007, godz. 2:48

jakie informacje konkretnie interesują Cie?? Może jesteśmy w stanie pomóc. proszę o założenie tematu na forum, postaramy się pomóc

rapi
10 kwiecień 2007, godz. 2:06

Właśnie interesuję się technologią Smarty, ale mało jest materiałow na ten temat w polskim internecie. Liczę na Was :)

 
 
Copyright © 2006-2011 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker