Smarty - компилирующий обработчик шаблонов

Monte Ohrt <monte at ohrt dot com>

Andrei Zmievski <andrei@php.net>

Sergei Suslenkov <student@bsuir-fcd.org>

George Miroshnikov <freespace@php.net>

2010-09-20


Table of Contents

Предисловие
I. Приступая к работе
1. Что такое Smarty?
2. Установка
Требования
Базовая установка
Расширенная установка
II. Smarty для дизайнеров шаблонов
3. Базовый синтаксис
Комментарии
Переменные
Функции
Параметры
Внедренные переменные в двойных кавычках
Арифметические операции
Предотвращение обработки Smarty
4. Переменные
Переменные, назначенные из PHP
Ассоциативные массивы
Индексы массивов
Объекты
Переменные файлов конфигурации
Зарезервированная переменная {$smarty}
Переменные запроса
{$smarty.now}
{$smarty.const}
{$smarty.capture}
{$smarty.config}
{$smarty.section}, {$smarty.foreach}
{$smarty.template}
{$smarty.version}
{$smarty.ldelim}, {$smarty.rdelim}
5. Модификаторы переменных
capitalize
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower
nl2br
regex_replace
replace
spacify
string_format
strip
strip_tags
truncate
upper
wordwrap
6. Комбинирование модификаторов
7. Встроенные функции
{capture}
{config_load}
{foreach},{foreachelse}
.index
.iteration
.first
.last
.show
.total
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{php}
{section},{sectionelse}
index
index_prev
index_next
iteration
first
last
rownum
loop
show
total
{strip}
8. Пользовательские Функции
{assign}
{counter}
{cycle}
{debug}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{popup}
{popup_init}
{textformat}
9. Конфигурационные файлы
10. Отладочная консоль
III. Smarty для программистов
11. Константы
SMARTY_DIR
SMARTY_CORE_DIR
12. Переменные класса Smarty
$template_dir
$compile_dir
$config_dir
$plugins_dir
$debugging
$debug_tpl
$debugging_ctrl
$autoload_filters
$compile_check
$force_compile
$caching
$cache_dir
$cache_lifetime
$cache_handler_func
$cache_modified_check
$config_overwrite
$config_booleanize
$config_read_hidden
$config_fix_newlines
$default_template_handler_func
$php_handling
$security
$secure_dir
$security_settings
$trusted_dir
$left_delimiter
$right_delimiter
$compiler_class
$request_vars_order
$request_use_auto_globals
$error_reporting
$compile_id
$use_sub_dirs
$default_modifiers
$default_resource_type
13. Методы класса Smarty
append() — добавляет элемент к назначенному массиву
append_by_ref() — добавляет значение по ссылке
assign() — назначает значение шаблону
assign_by_ref() — назначает переменную по ссылке
clear_all_assign() — очищает список назначенных переменных
clear_all_cache() — полностью очищает кэш шаблонов
clear_assign() — очищает назначенную переменную
clear_cache() — очищает кэш определенного шаблона
clear_compiled_tpl() — очищает скомпилированную версию указанного шаблона
clear_config() — очищает назначенную конфигурационную переменную
config_load() — загружает данные из конфигурационного файла и назначает их шаблону
display() — отображает шаблон
fetch
get_config_vars
get_registered_object
get_template_vars
is_cached
load_filter
register_block
register_compiler_function
register_function
register_modifier
register_object
register_outputfilter
register_postfilter
register_prefilter
register_resource
trigger_error
template_exists
unregister_block
unregister_compiler_function
unregister_function
unregister_modifier
unregister_object
unregister_outputfilter
unregister_postfilter
unregister_prefilter
unregister_resource
14. Кэширование
Настройка кэширования
Множественное кэширование страниц
Групповое кэширование
Управление кэшированием результатов работы плагинов
15. Расширенные возможности
Объекты
Префильтры
Постфильтры
Фильтры вывода
Управление кэшированием
Ресурсы
Шаблоны из папки $template_dir
Шаблоны из произвольной папки
Шаблоны из прочих источников
Функция для обработки шаблона по умолчанию
16. Плагины - расширение функциональности Smarty
Как работают плагины
Соглашение об именах
Написание плагинов
Функции шаблона
Модификаторы
Блоковые функции
Функции компилятора
Префильтры/Постфильтры
Фильтры вывода
Ресурсы
Вставки
IV. Приложения
17. Решение проблем
Ошибки Smarty/PHP
18. Советы
Обработка пустых переменных
Обработка переменных по умолчанию
Присвоение переменной заголовка (title) шаблону-шапке
Даты
WAP/WML
Составные шаблоны
Сокрытие E-mail адреса
19. Источники
20. Ошибки

List of Examples

2.1. Необходимые файлы библиотеки Smarty
2.2. Ручная установка константы SMARTY_DIR
2.3. Передача абсолютного пути к файлам библиотеки
2.4. Добавление библиотеки в путь в файле php.ini
2.5. Дописывание include_path из PHP-скрипта используя ini_set()
2.6. Вот как выглядит файловая структура
2.7. Установка прав доступа к файлам и директориям
2.8. /web/www.example.com/guestbook/templates/index.tpl
2.9. /web/www.example.com/docs/guestbook/index.php
2.10. /php/includes/guestbook/setup.php
2.11. /web/www.example.com/guestbook/htdocs/index.php
3.1. Комментарии внутри шаблона
3.2. Переменные
3.3. Синтаксис функций
3.4. синтаксис параметров функции
3.5. Примеры синтаксиса
3.6. Практические примеры
3.7. Примеры арифметики
3.8. Изменение разделителей
4.1. Пример использования переменных
4.2. Назначенные переменные
4.3. Обращение к ассоциативному массиву
4.4. Обращение к массиву по индексу
4.5. Обращение к свойствам объекта
4.6. Переменные из файлов конфигурации
4.7. Отображение переменных запроса
4.8. Использование {$smarty.now}
4.9. Использование {$smarty.const} для доступа к константам
5.1. Примеры модификаторов
5.2. capitalize
5.3. cat
5.4. count_characters
5.5. count_paragraphs
5.6. count_sentences
5.7. count_words
5.8. date_format
5.9. default
5.10. escape
5.11. indent
5.12. lower
5.13. nl2br
5.14. regex_replace
5.15. replace
5.16. spacify
5.17. string_format
5.18. strip
5.19. strip_tags
5.20. truncate
5.21. upper
5.22. wordwrap
6.1. Комбинирование модификаторов
7.1. Сохранение вывода шаблона в указанный атрибут
7.2. Сохранение содержимого в переменную
7.3. {config_load}
7.4. функция {config_load} с секцией
7.5. Атрибут item
7.6. Пример работы атрибутов item и key
7.7. {foreach} с ассоциативным атрибутом item
7.8. {foreach} со вложенными item и key
7.9. Пример использования {foreachelse} при работе с базой данных
7.10. index example
7.11. Примеры работы с iteration и index
7.12. Пример использования свойства first
7.13. Пример использования свойства last
7.14. Пример использования свойства total
7.15. примеры использования {if}
7.16. ещё несколько примеров использования {if}
7.17. Функция {include}
7.18. передача переменных в {include}
7.19. {include} и присвоение переменной
7.20. Примеры ресурсов шаблонов в {include}
7.21. Функция {include_php}
7.22. функция {insert}
7.23. {ldelim}, {rdelim}
7.24. another Javascript example
7.25. Тэги {literal}
7.26. Пример функции Javascript
7.27. Немного CSS в шаблоне
7.28. тэги {php}
7.29. Тэги {php} с глобальными переменными и назначение переменных
7.30. {section}
7.31. Переменная loop команды {section}
7.32. именование {section}
7.33. вложенные секции
7.34. секции и ассоциативные массивы
7.35. {sectionelse}
7.36. свойства {section} index
7.37. свойства {section} index_next и index_prev
7.38. свойство {section} iteration
7.39. свойства {section} first и last
7.40. свойство {section} index
7.41. атрибут {section} show
7.42. свойство {section} total
7.43. тэги {strip}
8.1. {assign}
8.2. {assign} и арифметика
8.3. Доступ к переменным {assign} из PHP-скрипта.
8.4. {counter}
8.5. {cycle}
8.6. {eval}
8.7. Другой пример использования {eval}
8.8. Пример {fetch}
8.9. {html_checkboxes}
8.10. Пример с базой данных (к примеру, PEAR или ADODB):
8.11. Пример работы html_image
8.12. {html_options}
8.13. {html_options} - Пример с базой данных (к примеру, PEAR или ADODB):
8.14. {html_radios} - пример №1
8.15. {html_radios} - пример №2
8.16. {html_radios} - пример с базой данных (к примеру, PEAR или ADODB):
8.17. {html_select_date}
8.18. {html_select_date}
8.19. {html_select_time}
8.20. {html_table}
8.21. Примеры использования {mailto} и результаты их обработки
8.22. {math}
8.23. {popup}
8.24. {popup_init}
8.25. {textformat}
9.1. Пример файла конфигурации
11.1. SMARTY_DIR
11.2. SMARTY_CORE_DIR
12.1. compile_id
13.1. append
13.2. append_by_ref
13.3. assign()
13.4. assign_by_ref()
13.5. clear_all_assign()
13.6. clear_all_cache
13.7. clear_assign()
13.8. clear_cache()
13.9. clear_compiled_tpl()
13.10. clear_config()
13.11. config_load()
13.12. display()
13.13. Пример работы функции display() с ресурсами шаблона
13.14. fetch
13.15. get_config_vars
13.16. get_registered_object
13.17. get_template_vars
13.18. is_cached
13.19. is_cached при множественном кэшировании шаблона
13.20. Загрузка плагинов фильтров
13.21. register_block
13.22. register_function
13.23. register_modifier
13.24. register_resource
13.25. unregister_function
13.26. unregister_modifier
13.27. unregister_resource
14.1. Включение кэширования
14.2. Установка собственного cache_lifetime для кэшированой копии
14.3. Включение $compile_check
14.4. Использование is_cached()
14.5. Очистка кэша
14.6. Вызов display() с идентификатором кэша
14.7. Передача cache_id в is_cached()
14.8. Удаление всех кэшированных копий с конкретным cache_id
14.9. Группы в cache_id
14.10. Предотвращение кэширования результата работы плагина
14.11. Предотвращение кэширования части страницы
15.1. использование зарегистрированного или присвоенного объекта
15.2. использование префильтра
15.3. использование постфильтра
15.4. Использование фильтра вывода
15.5. Применение MySQL в качестве хранилища кэшированных данных
15.6. Вызов шаблона из папки $template_dir
15.7. Вызов шаблона из произвольной папки
15.8. использование шаблонов с файловіми путями Windows
15.9. Использование собственных ресурсов
15.10. использование функции для обработки шаблона по умолчанию
16.1. Функция-плагин с выводом
16.2. Функция-плагин без вывода
16.3. Простой плагин-модификатор
16.4. Более сложный модификатор
16.5. Блоковая функция
16.6. Простой пример функции компилятора
16.7. Плагин префильтра
16.8. Плагин постфильтра
16.9. Плагин фильтра вывода
16.10. Плагин ресурса
16.11. Плагин вставки
17.1. Ошибка Smarty
17.2. Ошибки разбора PHP
17.3. Другие частые ошибки
18.1. Вывод &nbsp;, если переменная пуста
18.2. Назначение переменной шаблона значения по умолчанию
18.3. Присвоение переменной заголовка (title) шаблону-шапке
18.4. Использование date_format
18.5. Преобразование элементов формы ввода даты назад к временной метке
18.6. Использование {insert} для отправки заголовка Content-Type для WML
18.7. составной шаблон
18.8. Пример сокрытия e-mail адреса в шаблоне