ГоловнаКаталогБлогРейтингЕ-Пошта 
 
 
Зробити домашньою у вибране  

  Базовий синтаксис  
Зміст

Коментарі
Змінні
Функції
Параметри
Змінні, що знаходяться в подвійних лапках
Арифметичні операції
Запобігання обробки Smarty


Всі теги шаблонів Smarty розташовуються між спеціальними роздільниками. По замовчуванню це { і }, але вони можуть бути змінені.

Для наших прикладів ми використовуватимемо стандартні роздільники. Smarty весь вміст поза роздільниками відображає як статичний контент, без змін. Коли Smarty зустрічає теги шаблону, то намагається інтерпретувати їх і вивести замість них відповідний результат.


Коментарі

Коментарі в шаблонах вкладають в зірочки (*) оточені роздільниками, наприклад: {* це коментар *}. Коментарі не відображаються у виведенні шаблону, на відміну від <!-- коментарів HTML -->. Вони використовуються для внутрішніх приміток в шаблонах.

Приклад 3-1. Коментарі

<body>

{* однорядковий коментар *}

{* цей багаторядковий коментар
не відправляється в оглядач
*}

{* тут включаємо заголовок *}
{include file="header.tpl"}

{* Примітка розробника: $includeFile призначається в скрипті foo.php *}
<!-- цей HTML-коментар буде відправлений браузеру -->
{include file=$includeFile}

{include file=#includeFile#}

{* цей блок <select> непотрібний *}
{*
<select name="company">
{html_options options=$vals selected=$selected_id}
</select>
*}

</body>


Змінні

Змінні шаблону починаються із знаку $ доллара. Вони можуть складатися з цифр, букв, знаків підкреслення - як і звичайні змінні PHP. Ви можете звертатися до масивів, що мають числові і нечислові індекси. Ви також можете звертатися до властивостей і методів об'єктів. Змінні конфігураційного файлу - це виключення з доларового синтаксису. До них можна звертатися, оточивши їх #знаками дієзу# або скориставшись спеціальною змінною $smarty.config.

Приклад 3-2. Змінні

{$foo} <-- відображення простій змінній (не масив і не об'єкт)
{$foo[4]} <-- відображає 5-й елемент числового масиву
{$foo.bar} <-- відображає значення ключа "bar" асоціативного масиву, подібно PHP $foo['bar']
{$foo.$bar} <-- відображає значення змінного ключа масиву, подібно PHP $foo[$bar]
{$foo->bar} <-- відображає властивість "bar" об'єкту
{$foo->bar()} <-- відображає значення методу "bar" об'єкту, що повертається
{#foo#} <-- відображає змінну "foo" конфігураційного файлу
{$smarty.config.foo} <-- синонім для {#foo#}
{$foo[bar]} <-- синтаксис доступний тільки в циклі section, див. {section}
{assign var=foo value="baa"}$foo} <-- відображає "baa", див. {assign}

Також доступна безліч інших комбінацій

{$foo.bar.baz}
{$foo.$bar.$baz}
{$foo[4].baz}
{$foo[4].$baz}
{$foo.bar.baz[4]}
{$foo->bar($baz,2,$bar)} <-- передача параметру
{"foo"} <-- статичні значення також дозволені


Див. також "Зарезервована змінна $smarty" і "змінні файлів конфігурації".


Функції

Кожен тег Smarty або виводить значення змінної, або викликає деяку функцію. Для виклику функції треба укласти в роздільники назву функції і її параметри, наприклад: {funcname attr1="val" attr2="val"}.

Приклад 3-3. Синтаксис функцій

{config_load file="colors.conf"}

{include file="header.tpl"}

{if $highlight_name}
Welcome, <font color="{#fontColor#}">{$name}!</font>
{else}
Welcome, {$name}!
{/if}

{include file="footer.tpl"}

І вбудовані, і користувацькі функції використовуються з однаковим синтаксисом.

Вбудовані функції забезпечують внутрішню роботу Smarty, наприклад {if}, {section} і {strip}. Вони не можуть бути модифіковані.

Користувацькі функції є додатковими і реалізуються через плагіни. Вони можуть бути змінені по вашому бажанню, також ви можете додати нові. Прикладами користувауьких функцій можуть бути {html_options} і {popup}.


Параметри

Більшість функцій приймають аргументи, які уточнюють або змінюють її поведінку. Аргументи в Smarty дуже схожі на параметри в HTML. Статичні значення не обов'язково брати в лапки, але це рекомендується для текстових рядків. Змінні також можуть бути використані як параметри, і не повинні братися в лапки.

Деякі параметри приймають логічні значення (true або false). Вони можуть бути вказані словами true, on і yes, або false, off і no без лапок.

Приклад 3-4. Синтаксис параметрів функцій

{include file='header.tpl'}

{include file='header.tpl' attrib_name='attrib value'}

{include file=$includeFile}

{include file=#includeFile# title='Smarty is cool'}

{html_select_date display_days=yes}

{mailto address='smarty@example.com'}

<select name='company_id'>
  {html_options options=$companies selected=$company_id}
</select>


Змінні, що знаходяться в подвійних лапках

Smarty розпізнає присвоєні змінні, якщо вони зустрічаються в рядках, взятих в подвійні лапки, якщо змінні складаються з цифр, букв, знаку підкреслення і квадратних дужок. У випадку, якщо змінна містить інші символи (крапки, посилання на об'єкти і т.д.), змінну необхідно взяти в обернені лапки (`). В даному випадку ви не можете використовувати модифікатори, їх слід застосовувати поза лапками.

Приклад 3-5. Синтаксис використання змінних, взятих в подвійні лапки

Приклад синтаксису:
{func var="test $foo test"} <-- шукає $foo
{func var="test $foo_bar test"} <-- шукає $foo_bar
{func var="test $foo[0] test"} <-- шукає $foo[0]
{func var="test $foo[bar] test"} <-- шукає $foo[bar]
{func var="test $foo.bar test"} <-- шукає $foo (не $foo.bar)
{func var="test `$foo.bar` test"} <-- шукає $foo.bar
{func var="test `$foo.bar` test"|escape} <-- модифікатор поза лапками!

Практичні приклади:
{include file="subdir/$tpl_name.tpl"} <-- замінить $tpl_name на її значення
{cycle values="one,two,`$smarty.config.myval`"} <-- треба брати в обернені лапки

Див. також escape.


Арифметичні операції

Арифметичні операції можуть здійснюватися безпосередньо над значеннями змінних.

Приклад 3-6. Приклади арифметики

{$foo+1}

{$foo*$bar}

{* кілька складніших прикладів *}

{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}

{if ($foo+$bar.test%$baz*134232+10+$b+10)}

{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}

{assign var="foo" value="`$foo+$bar`"}

Див. також функцію {math} для складних обчислень.


Запобігання обробки Smarty

Іноді необхідно, щоб Smarty не обробляв частину шаблону, яка повинна за замовчуванням оброблятися. Класичним прикладом такої ситуації є вбудовування Javascript або CSS-коду в шаблон. Проблема з'являється через те, що ці мови використовують символи { і }, які так само використовуються як роздільники для Smarty.

Найпростішим рішенням є уникнення цієї ситуації шляхом винесення Javascript'у і CSS-коду в окремі файли і використання стандартних методів HTML для доступу до них.

Дослівне включення контента можливе за допомогою блоків {literal} .. {/literal}. Подібно до того, як ви використовуєте HTML-сутності (&nbsp; і т.п.), ви можете використовувати {ldelim},{rdelim} або {$smarty.ldelim} для відображення поточних розділителів.

Деколи буває зручно просто змінити властивості $left_delimiter і $right_delimiter у об'єкті Smarty.

Приклад 3-7. Зміна розділителів

<?php

$smarty = new Smarty;
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
$smarty->assign('foo', 'bar');
$smarty->display('example.tpl');

?>

Шаблон example.tpl:

<script language="javascript">
  var foo = <!--{$foo}-->;
  function dosomething()
    {
      alert("foo is " + foo);
    }
  dosomething();
</script>

Див. також модифікатор escape




  Ім'я:
  Пароль:
Комп'ютерні мережі, 2-е видання
Комп'ютерні мережі, 2-е видання

APServer | SiMan CMS | Лічильник відвідувань | Тека сайтів | Рейтинг | Форум | Лінійки малюкам | PHP Builder | Download | Шаблони сторінок | Посібник Smarty | Підручник PHP | Статті/Огляди | Розробка сайтів | Банерна мережа