Главная » PHP » smarty
Куда Вы попали?

Информационная связь с потребителем, безусловно, реально стабилизирует социометрический рейтинг, не считаясь с затратами. Стиль менеджмента стабилизирует конвергентный анализ зарубежного опыта, оптимизируя бюджеты. Емкость рынка вырождена. Стратегический маркетинг, не меняя концепции, изложенной выше, основан на тщательном анализе данных.
А если серьёзно, это просто блог.

Нужен сайт?

Тогда, возможно, Вы попали туда куда нужно.
Я занимаюсь созданием сайтов "под ключ".
Оцените качество работы, посмотрев
портфолио. Если Вы не рассчитываете на демпинг, связаться со мной можно при помощи формы обратной связи.



Для "спасибо"
Установите Flash-плеер

Авторизация

Есть что сказать?


Справочник по Smarty

Документация у шаблонизатора Smarty конечно отличная, но иногда бывает удобно когда всё самое необходимое в краткой форме и на одной странице. Это своего рода шпаргалка на случай когда надо быстро что-то вспомнить в процессе работы.

PHP

require_once('./libs/Smarty.class.php'); //Указываем путь до класса Smarty

//Другой пример указать путь до Smarty:
define('SMARTY_DIR','/usr/local/libs/');
require_once(SMARTY_DIR.'Smarty.class.php');

$smarty = new Smarty; //Создаем экземпляр объекта Smarty

$smarty->template_dir='./guestbook/templates/'; //Указываем папку с шаблонами
$smarty->compile_dir='./guestbook/templates_c/'; //Папка где будут храниться откомпилированные шаблоны
$smarty->config_dir='./guestbook/configs/'; //Папка с конфигурационными файлами
$smarty->cache_dir='./guestbook/cache/'; //Папка для файлов кэша

$smarty->caching = false; //Выключили кэширование шаблонов (не рекомендутся)

$smarty->assign("username",$username); //Передаем переменную или массив в шаблон
$smarty->register_object('foobar',$myobj) //Передаем объект в шаблон

$smarty->display('mainpage.tpl'); //Указываем какой шаблон вывести

Конфигурационные файлы


#задаем значение
bodyBgColor = #eeeeee

[Login]
pageTitle = "Login"

#спрятанная секция
[.Database]
host=my.example.com

Шаблоны


{$string} {*Выводим значение переменной*}
{$person->name} {*Выводим свойство объекта, назначенного из PHP*}

{config_load file="foo.conf"} {*Подключаем конфигурационный файл*}
{#bodyBgColor#} {*Выводим значение из foo.conf*}
{$Smarty.config.bodyBgColor} {*Альтернативный синтаксис*}

{$Smarty.get.page} {*Отображения параметра page из URL ...index.php?page=contacts*}
{$Smarty.post.page} {*Параметр page из формы*}
{$Smarty.server.SERVER_NAME} {*Вывод значения серверной переменной*}
{$Smarty.env.PATH} {*Переменная системного окружения "PATH"*}
{$Smarty.session.id} {*Переменная сессии PHP ($_SESSION['id']) *}
{$Smarty.request.username} {*Переменная из get/post/cookie/server/env*}

{$Smarty.const.MY_CONST_VAL} {*Вывод значения константы*}

{include file='header.tpl'} {*Вставить другой шаблон*}


Основные модификаторы переменных:

{$article|count_characters} {*Вывод числа символов строки*}
{$article|count_words} {*Число слов*}
{$smarty.now|date_format:"<b>%d.%m.%y</b> %H:%M:%S"} {*Формат даты*}
{$article|escape:"htmlall"} {*Перевод в html-сущности*}
{$article|lower} {*Нижний регистр*}
{$article|upper} {*Верхний регистр*}
{$article|nl2br} {*Превращает каждый перевод строки в <br />*}
{$article|replace:"Вася":"Миша"} {*Поиск и замена*}
{$article|regex_replace:"/[\r\t\n]/":" "} {*Поиск и замена при помощи регулярного выражения*}
{$number|string_format:"%.2f"} {*Оставляем 2 знака после запятой в числе*}
{$number|string_format:"%d"} {*Округление до целого числа*}
{$article|strip} {*Заменяет все повторяющиеся пробелы, переводы строк и символы табуляции одним пробелом*}
{$article|strip_tags} {*Удаляет теги*}
{$article|truncate:30:"..."} {*Обрезает строку до опредиленной длинны (30 символов) и ставит ...*}
{$article|lower|truncate:30|nl2br} {*Комбинирование модификаторов*}


Шаблонные функции:

{ldelim}{rdelim} {*Вывод фигурных скобок (например в JS-функции)*}
{literal} JS-скрипт {/literal} {*Обрабатывать фигурные скобки как обычно*}
{php}{/php} {*Вставить php-код*}
{include_php file="nav.php"} {*Вставить php-файл*}
{strip}{/strip} {*Сожранить разметку (отступы) html-кода*}
{assign var="name" value="Bob"} {*Назначить щначение переменной*}
<tr bgcolor="{cycle values="#eeeeee,#dddddd"}"> {*Чередование*}
{html_image file="image.gif"} {*Выводит картинку <img src...> (c размерами)*}
{html_select_date month_format="%m" start_year="1980" end_year="2008"} {*Выводит выпадающие списки для выдбора даты*}
{mailto address="me@domain.ru" subject="Привет!"} {*Вывод ссылки на e-mail*}
{mailto address="me@domain.ru" encode="javascript"} {*антиспамная ссылка*}
{mailto address="me@domain.ru" encode="hex"} {*антиспамная ссылка*}
{* $height=4, $width=5 *} {math equation="x+y" x=$height y=$width} {*математические вычисления*}



Вывод массива с помощью section:

{section name=i loop=$array}
  {$array[i][0]} {*Вывод значения массива*}
  {$array[i].name} {*Вывод значений ассоциативного массива*}
  {$smarty.section.i.index} {*Текущий индекс массива*}
  {$smarty.section.i.index_prev} {*Предыдущий индекс массива*}
  {$smarty.section.i.index_next} {*Следующий индекс массива*}
  {$smarty.section.i.iteration} {*Текущий номер итерации цикла*}
  {if $smarty.section.i.first}
    Первая итерация
  {/if}
  {if $smarty.section.i.last}
    Последняя итерация
  {/if}
  {$smarty.section.i.total} {*Общее число итераций. Можно использывать вне секции*}
{sectionelse} {*Выводит строку если $array не содержит значений*}
  Ничего не найдено
{/section}


Вывод массива с помощью foreach:

{foreach  key=key item=item from=$array}
  {$key}: {$item}
  {$smarty.foreach.foreachname.iteration}
  {if $smarty.foreach.foreachname.first}...{/if}
  {if $smarty.foreach.foreachname.last}...{/if}
{/foreach}

--------

{*длинный путь*}
{if $title eq ""}
  пусто
{else}
  {$title}
{/if}

{*короткий путь*}
{$title|default:"пусто"}

Написать комментарий

  • Обязательные для заполнения поля помечены знаком *.
Код подтверждения:


Andchir
Ответов: 1
Комментарий
2Anonymous
Ответ #4 дата : Wed April 08, 2009, 20:35:53
Возможно я бы согласился с тем, что Smarty требует больше ресурсов чем чистый php (больше время генерации страниц), но с этим
В итоге получается излишний код, излишние переменные и массивы
я никак не могу согласиться. Может это Вы делаете излишние переменные и массивы, но никак не Смарти :). Время генерации впрочем сокращается правильным кэшированием в Смарти. Согласен с тем, что можно и без Смарти отделить php-код от html, но все-таки использование этого инструмента сокращает время разработки и делает шаблоны более понятными и простыми.
Anonymous
Ответов: 3
Комментарий
Re: Справочник по Smarty
Ответ #3 дата : Wed April 08, 2009, 14:12:19
Ничего отличного. В итоге получается излишний код, излишние переменные и массивы.
Как по мне то смарти для вэб-дизайнеров, что бы почувствовать себя программистом.
Всё выше описанное и всё описанное на офф сайте смарти делать можно на чистом PHP, при этом не заключая в программный код HTML вёрстку дизайнера.
Как правило, универсальные вещи не так хороши, как вещи, которые созданы для определённой цели.
Удобно модифицировать код?
Да не так уж и удобно. Вся конструкция работает, по каким то определённым правилам. И изменение части правела или конструкции, ведёт за собой такой же процесс модификации кода, как и при обычном чистом PHP.
Andchir
Ответов: 3
Комментарий
Re: Справочник по Smarty
Ответ #2 дата : Fri January 16, 2009, 20:36:36
А что именно не удобно? По-моему там всё продумано очень хорошо и всё очень удобно. Есть некоторые мелкие недостатки, но в целом инструмент отличный.
тяпляп
Ответов: 3
Комментарий
Re: Справочник по Smarty
Ответ #1 дата : Fri January 16, 2009, 04:13:36
Скажи пожалуйста - тебе удобно работать со смарти?
мне чего то до ужаса неудобно