<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>adamczuk.net.pl &#187; templates</title>
	<atom:link href="http://adamczuk.net.pl/tag/templates/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamczuk.net.pl</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:33:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Smarty 3.0</title>
		<link>http://adamczuk.net.pl/2010/11/15/smarty-3-0/</link>
		<comments>http://adamczuk.net.pl/2010/11/15/smarty-3-0/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 07:40:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[tpl]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=423</guid>
		<description><![CDATA[Informacja o wydaniu nowej wersji Smarty.]]></description>
			<content:encoded><![CDATA[<p><a href="http://adamczuk.net.pl/wp-content/uploads/2010/11/smarty.jpg"><img src="http://adamczuk.net.pl/wp-content/uploads/2010/11/smarty.jpg" alt="" title="smarty" width="200" height="100" class="align left size-full wp-image-424" /></a>Nareszcie po wielu miesiącach oczekiwań pojawiła się nowa wersja najpopularniejszego systemu szablonów dla PHP, a mianowicie <a href="http://www.smarty.net/">Smarty</a>. Minie trochę czasu zanim dokładnie przetestuję nowe możliwości i sprawdzę wydajność szablonów w praktycznych projektach. W przyszłości przygotuję porównanie znanych systemów szablonów dla PHP, jak choćby <a href="http://phptal.org/">PHPTal</a> czy <a href="http://www.twig-project.org/">Twig</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2010/11/15/smarty-3-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Szablony Smarty &#8211; część 1</title>
		<link>http://adamczuk.net.pl/2009/02/15/szablony-smarty-czesc-1/</link>
		<comments>http://adamczuk.net.pl/2009/02/15/szablony-smarty-czesc-1/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 22:32:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=144</guid>
		<description><![CDATA[Ogólne wprowadzenie do szablonów Smarty]]></description>
			<content:encoded><![CDATA[<p>Pisanie funkcjonalnych stron internetowych wymaga stosowania kilku technologii. Najczęściej spotykane w sieci jest połączenie PHP, MySQL i XHTML. Jednak tworzenie aplikacji poprzez wzajemne przeplatanie składni tych języków jest równie częste. O ile tworzenie  prostej strony dla siebie jest jeszcze zrozumiałe, to napisanie poważnego projektu webowego bez rozdzielenia wszystkich komponentów jest niemożliwe.<br />
<span id="more-144"></span><br />
<strong>Smarty</strong> to obiektowa biblioteka służąca do tworzenia szablonów dla aplikacji PHP. Pozwala na oddzielenie logiki od warstwy prezentacyjnej, a tym samym łatwiejsze analizowanie i rozwijanie kodu. Szablony wykorzystują określone znaczniki, które przez silnik Smarty są zastępowane generowaną treścią.</p>
<p>Smarty umożliwia stosowanie struktur kontrolnych, a także wielu modyfikatorów. Wysoka wydajność pakietu została osiągnięta poprzez kompilowanie szablonów do skryptów PHP, a także wbudowanemu systemowi buforowania. Najnowsza wersja biblioteki dostępna jest na stronie <a href="http://smarty.net/">Smarty</a>.</p>
<h3>Wstęp</h3>
<p>Na początku musimy rozpakować paczkę i przegrać na serwer lub do katalogu na lokalnym komputerze. W naszym przypadku tworzymy plik <em>example-01.php</em>, w którym zapisujemy następujący kod.</p>
<pre><code>&lt;?php
	require_once('../libs/Smarty.class.php');

	$TPL = new Smarty;
	$TPL -&gt; template_dir = 'templates/';
	$TPL -&gt; compile_dir = 'templates_c/';
	$TPL -&gt; compile_check = true;
	$TPL -&gt; debugging = false;
	$TPL -&gt; caching = false;
	$TPL -&gt; use_sub_dirs = false;
?&gt;</code></pre>
<p>Powyższy fragment kodu dołącza plik <em>Smarty.class.php</em>, tworzy i ustawia odpowiednie parametry konfiguracyjne. Na początku wystarczy nam jedynie określenie położenia szablonów i szablonów skompilowanych, a w późniejszym czasie możemy dopisać bardziej szczegółowe ustawienia.</p>
<h3>Wyświetlanie szablonu</h3>
<p>Strona internetowa zapisana jako HTML/XHTML byłaby w dużym podobna do kodu przedstawionego poniżej. Jeśli korzystalibyśmy z PHP to pomiędzy znaczniki wpisalibyśmy wywołania funkcji <code>echo</code> lub <code>print</code>.</p>
<pre><code>&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
	...
	&lt;/body&gt;
&lt;html&gt;</code></pre>
<p>Jeżeli skorzystamy z systemu szablonów to w pliku sterującym wystarczy wywołać metodę <code>display()</code> z parametrem.</p>
<pre><code>$TPL -&gt; display('example-01.tpl');</code></pre>
<p>Widoczne jest, że ilość kodu jest większa, niż w przypadku gdybyśmy kod szablonu zapisali w samym pliku <em>example-01.php</em>. Jednak naszym celem jest rozdzielenie kodu i części prezentacyjnej, co osiągnęliśmy w prosty sposób.</p>
<h3>Zmienne w szablonie</h3>
<p>Wyświetlanie statycznych szablonów jest przydatne, ale nasze aplikacje generują głównie dynamiczną zawartość pobieraną z plików czy bazy danych. Smarty posiada możliwość przekazywania zmiennych do szablonu. Chcielibyśmy zmienić tytuł naszej strony, a także wyświetlić przykładowy tekst.  Zmodyfikowana wersja szablonu przedstawia się następująco:<code></code></p>
<pre><code>&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;{$title}&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;Example 1&lt;/h1&gt;
			&lt;p&gt;{$text}&lt;/p&gt;
	&lt;/body&gt;
&lt;html&gt;</code></pre>
<p>Z kolei w pliku sterującym dopisujemy dwie linijki, odpowiadające na przekazanie zmiennych do szablonu. Metoda <code>assign()</code> przesyła zmienną PHP do szablonu.</p>
<pre><code>$title = 'SMARTY - Template Engine';

$TPL -&gt; assign('title', $title);
$TPL -&gt; assign('text', 'Lorem ipsum dolor sit amet...');

$TPL -&gt; display('example-01.tpl');</code></pre>
<p>Sposób w jaki przekażemy argumenty metodzie <code>assign()</code> zależy od nas. Może to być zwykły <em>string</em> lub inna zmienna  zdefiniowana w pliku. Wartość przesyłanej zmiennej, którą można formatować wyświetli się w szablonie. Możemy korzystać z komentarzy, które zapisujemy przy pomocy <code>{*</code> i <code>*}</code>.</p>
<pre><code>{* Komentarz w szablonie *}</code></pre>
<p>Możliwe jest również wyświetlenie zmiennej z pliku konfiguracyjnego.</p>
<pre><code>{#zmienna_konfiguracyjna#}</code></pre>
<p>Możemy w końcu wywołać funkcje Smarty.</p>
<pre><code>{funckja_smarty}</code></pre>
<p>Możemy w końcu wywołać funkcje Smarty.</p>
<h3>Modyfikatory</h3>
<p>Zmienne przesyłane do szablonów można w różny sposób formatować. Przykładowy ciąg znaków możemy wyświetlić jako  małe, duże litery czy kapitaliki. Przykładowa składania takiego modyfikatora przedstawia się następująco.</p>
<pre><code>{$text|lower}        {* string pisany małymi literami *}
{$text|upper}        {* string pisany wielkimi literami *}
{$text|capitalize}   {* string pisany kapitalikami *}</code></pre>
<p>Możliwe jest również łączenie kilku modyfikatorów, celem osiągnięcia kilku złożonego formatowania. W tym przypadku tekst będzie wyświetlany wielkimi literami, a znaki załamania wiersza zostaną zastąpione przez <code>&lt;br /&gt;</code>.</p>
<pre>{$text|upper|nl2br}</pre>
<p>Pełna lista modyfikatorów oraz sposób ich działania znajduje się w tabeli poniżej.</p>
<table cellspacing="0" width="100%">
<caption>Przegląd modyfikaorów dostępny w szablonach Smarty</caption>
<thead>
<th scope="col">Lp.</th>
<th scope="col">Modyfikator</th>
<th scope="col">Działanie</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>capitalize</td>
<td>zamiana litery na kapitaliki</td>
</tr>
<tr>
<td>2</td>
<td>cat</td>
<td>złączanie napisów</td>
</tr>
<tr>
<td>3</td>
<td>count_characters</td>
<td>zliczanie znaków</td>
</tr>
<tr>
<td>4</td>
<td>count_paragraphs</td>
<td>zliczanie akapitów</td>
</tr>
<tr>
<td>5</td>
<td>count_sentences</td>
<td>zliczanie zdań</td>
</tr>
<tr>
<td>6</td>
<td>count_words</td>
<td>zlicznanie słów</td>
</tr>
<tr>
<td>7</td>
<td>date_format</td>
<td>formatowanie daty</td>
</tr>
<tr>
<td>8</td>
<td>default</td>
<td>wartość domyślna zmiennej</td>
</tr>
<tr>
<td>9</td>
<td>escape</td>
<td>cytowanie znaków specjalnych w napisie</td>
</tr>
<tr>
<td>10</td>
<td>indent</td>
<td>wcięcia akapitów</td>
</tr>
<tr>
<td>11</td>
<td>lower</td>
<td>zmiana liter na małe</td>
</tr>
<tr>
<td>12</td>
<td>nl2br</td>
<td>zamiana znaku załamania <code>\n</code> na <code>&lt;br /&gt;</code></td>
</tr>
<tr>
<td>13</td>
<td>regex_replace</td>
<td>zamiana wyrażeń regularnych</td>
</tr>
<tr>
<td>14</td>
<td>replace</td>
<td>zamiana napisów</td>
</tr>
<tr>
<td>15</td>
<td>spacify</td>
<td>rozstrzelenie napisu</td>
</tr>
<tr>
<td>16</td>
<td>string_format</td>
<td>formatowanie napisu</td>
</tr>
<tr>
<td>17</td>
<td>strip</td>
<td>usuwanie białych znaków</td>
</tr>
<tr>
<td>18</td>
<td>strip tags</td>
<td>usuwanie znaków</td>
</tr>
<tr>
<td>19</td>
<td>truncate</td>
<td>skracanie długości napisu</td>
</tr>
<tr>
<td>20</td>
<td>upper</td>
<td>zamiana liter na wielkie</td>
</tr>
<tr>
<td>21</td>
<td>wordwrap</td>
<td>łamanie wierszy w napisie</td>
</tr>
</tbody>
</table>
<p>Możemy w końcu wywołać funkcje Smarty.</p>
<h3>Tablice</h3>
<p>Często do szablonów potrzebujemy przesyłać tablice zmiennych. Możliwe jest to dzięki znanej metodzie <code>assign()</code>.</p>
<pre><code>$arrBooks = array(
	array('1', 'Standardy sieciowe', 'J.Zeldman'),
	array('2', 'XHTML i CSS', 'Z.Kowalski'),
	array('3', 'ABC Programowania', 'A.A.Atkinson'));

$TPL -&gt; assign('arrBooks', $arrBooks);</code></pre>
<p>Przeglądanie tablicy w szablonie umożliwia specjalna konstrukcja <code>{section}</code>, która oznacza początek pętli. Koniec pętli przeglądającej tablicę oznacza <code>{/section}</code>. Indeks kolejnych wierszy uzyskujemy poprzez <code>[</code> i <code>]</code>.</p>
<pre><code>&lt;h1&gt;Example 2&lt;/h1&gt;
	&lt;table&gt;
	{section name=n loop=$arrBooks}
		&lt;tr&gt;
			&lt;td&gt;{$arrBooks[n].0}&lt;/td&gt;
			&lt;td&gt;{$arrBooks[n].1}&lt;/td&gt;
			&lt;td&gt;{$arrBooks[n].2}&lt;/td&gt;
		&lt;/tr&gt;
	{/section}
&lt;/table&gt;</code></pre>
<p>Sekcja może posiadać opcjonalny fragment <code>{sectionelse}</code>. Wówczas treść szablonu umieszczona pomiędzy znacznikami <code>{sectionelse}</code> oraz <code>{/section}</code> będzie zawarta w stronie wynikowej wówczas, gdy żaden spośród elementów tablicy nie zostanie przetworzony przez iterację.</p>
<h3>Podsumowanie</h3>
<p>Smarty to bardzo wydajny system. Pętle przetwarzające tablice oraz modyfikatory zmiennych pozwalają całkowicie odseparować logikę od części prezentacyjnej. W plikach php nie stosowaliśmy znaczników HTML.</p>
<p>System pozwala na warunkowe przetwarzanie szablonów, a także stosowanie innych użytecznych funkcji. Możliwe jest również napisanie własnej i dołączenie jej do silnika. Kolejne przykłady zastosowania przedstawię w następnym artykule dotyczącym szablonów.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/02/15/szablony-smarty-czesc-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

