Smarty что это за программа

Основы использования шаблонизатора Smarty

Появилась необходимость создания сайта работающего на нескольких языках. Перебрав в голове несколько вариантов, решил что самым удачным будет использование шаблонизатора, тем более его внедрение назревало уже давно. С его помощью код сайта будет отделен от его представления(HTML кода). Таким образовым, не меняя PHP код мы сможем быстро менять представление сайта и тем самым получим возможность легкого добавления необходимого количества языков.

Споры по поводу применения готовых шаблонизаторов(и Smarty в частности) не угасают до сих пор, в комментариях к каждой статье на эту тему можно найти огромное количество записей про то, что использование готовых шаблонизаторов по совершенно разным причинам неоправданно. Проанализировав данные сообщения, лично я, пришел к выводу, что все они оставлены в основном начинающими программистами, а так же людьми которые очень любят все изобретать заново. Рано или позно, но веб-разработчик приходит к необходимости использования шаблонизатора.

Введение в шаблонизатор Smarty

В маленьких сайтах конечно использование шаблонов не слишком оправдано, но когда сайт достаточно большой и особенно если при создании задействованы несколько человек(один работает с кодом, а другой ничего не понимая в коде свободно может менять дизайн сайта), то использование шаблона просто необходимо. Появляется возможность достаточно легко масштабировать сайт и наращивать его функциональность. Да и просто просмотр и написание чистого PHP (или HTML) кода намного приятнее чем смеси из различных языков.

Сейчас в сети можно найти огромное количество различных шаблонизаторов и просто способов создания шаблонов(вплоть до простого применения str_replace). У меня не стоит задача рассматривать их все и поэтому я решил взять, пожалуй, один из самых популярных — Smarty. Главными его особенностями являются: компиляция в один проход, возможность включения PHP-кода прямо в шаблон, встроенный механизм кэширования, возможность подключения плагинов, наличие отладочной консоли и ещё много разнообразных функций. Данный шаблонизатор обладает довольно мощными механизмами для расширения функционала(маштабируемость) и о его более продвинутом применении будет рассказано в следующих статьях.

Итак, давайте рассмотрим как же все это работает. По умолчанию Smarty заточена под схему разработки модель-представление-контроллер(Model-view-controller). Model (ядро) здесь — совокупность источника данных и функций, работающих с этими данными на базовом уровне (прочитать, записать, изменить). View — шаблон, отвечающий за внешний вид страницы.

Controller (контроллер) — совокупность прикладной логики веб-приложения, которая обеспечивает обработку данных, полученных от ядра или пользователя, выбор шаблона и вывод результата на экран. Если объяснить совсем по простому, то это выглядит примерно так: вы пишите код, который создает набор данных для шаблона, отдаете вместе с названием шаблона Smarty и тот все объединяет, выводя в браузер результат. Это и есть так называемая MVC.

PHP Шаблонизатор Smarty

Перед началом работы нужно создать директории, необходимые для работы Smarty, по умолчанию имеющие такие имена(мы создадим немного другие, см. пример):

  • templates — директория, где мы будем хранить созданные шаблоны;
  • templates_c — директория, где Smarty будет хранить скомпилированные шаблоны;
  • configs — директория для хранения конфигурационных файлов;
  • cache — директория для кэша.
Читайте также:
Программа кладр что это

Рассмотрим простейший пример использования шаблона. Для этого нам понадобятся два файла: файл шаблона — index.tpl и файл логики — index.php

Файл index.tpl — обычный html документ со специальными вставками

Файл index.php

require_once(‘Smarty.class.php’); //подключаем smarty $smarty = new Smarty(); //создаем новый экземпляр класса $smarty->template_dir = ‘./templates/’; //задаем адреса для рабочих папок $smarty->compile_dir = ‘./templates/compile/’; $smarty->cache_dir = ‘./templates/cache/’; $smarty->caching = false; //выключаем кэширование $smarty->debugging = true; //включаем режим отладки(отладочную консоль) $smarty->assign(‘title’, ‘Пример использования Smarty’); //назначаем переменные для шаблона $smarty->assign(‘body_text’, ‘Это текст, выведенный ф-цией assign()’); $smarty->display(‘index.tpl’); //публикуем шаблон

Переменные в шаблоне могут быть нескольких типов:

  • Переменные, значение которым присваивается в php-скрипте пользователя, должны иметь перед именем знак доллара. Например:
  • Элементы массива, значения которых были присвоены в php-скрипте пользователя, доступны в шаблоне с помощью синтаксиса . Например:
  • Элементы не ассоциативного массива доступны с помощью синтаксиса квадратных скобок: . Например:
  • Свойства объектов, заданные в php-скрипте, доступны в шаблоне с помощью такого синтаксиса: имя_свойства>. Например: email>
  • Переменные, загруженные из конфигурационных файлов , заключаются между символами #. Также они доступны как элементы ассоциативного массива $smarty.config. Например: или

В Smarty допускается использование модификаторов, чтобы их применить нужно указать его название после вертикальной черты, следующей за именем переменной, функции или строкой, к которой он применяется. Например, чтобы перевести значение переменной в верхний регистр, нужно применить к ней модификатор upper, т.е. написать следующее: <$title|upper>. Или как мы сделали в нашем примере, используя модификатор date_format для формирования текущей даты на основе переменной .

Для удобства пользования шаблоны можно разбивать на блоки, при вызове метода display(‘index.tpl’) главного шаблона, опубликуются все дочерние. Если имя одного из блоков задается только после обработки php скрипта, то имя блока можно передать внутри переменной. В таком случае имя подключаемого файла заключается не в одинарные кавычки, а в двойные.

Файл index.tpl

Главная страница

Очень полезной функцией является возможность использования оператора условия — :

5> Переменная, полученная шаблоном больше 5. Переменная, полученная шаблоном меньше или равна 5.

Для подключения JavaScript существует специальный блок — , который выключит обработку шаблона в данном месте. Необходимость его применения появится когда Вы захотите вставить в шаблон скрипт содержащий фигурные скобки — <> (например JQuery скрипт). Поскольку такие скобки используются самим Smarty для обозначения переменных, он резонно выдаст ошибку на инородную конструкцию.

function hello()

А теперь я приведу более сложный пример иллюстрирующий вывод массива данных.

Файл news.php

require_once(‘Smarty.class.php’); //подключаем smarty $smarty = new Smarty(); //создаем новый экземпляр класса $smarty->template_dir = ‘./templates/’; //задаем адреса для рабочих папок $smarty->compile_dir = ‘./templates/compile/’; //Получаем массив данных из таблицы MySQL $news = $DB->query(«SELECT id, title, description FROM news ORDER BY id»); $smarty->assign(‘news’, $news); // передаем массив в шаблонизатор $smarty->assign(‘title’, ‘Список новостей’); $smarty->display(‘news.tpl’); //публикуем шаблон

Файл news.tpl

Важно запомнить, что все отображаемые данные должны быть сформированы в скрипте до передачи в шаблонизатор! Работать с данными в самом шаблоне не нужно, он не для этого.

Читайте также:
Sonic make your life different что это за программа

Думаю для понимания смысла работы механизма шаблонов Smarty этого будет достаточно, теперь вы свободно сможете создавать простые шаблоны, а немного потренировавшись и более сложные.

Замечу, что представленный шаблонизатор довольно тяжелый и поэтому появилась его облегченная версия — TemplateLite. Вот результаты тестов с официального сайта выполненные на PHP 5.1.1.

Сравнение скорости работы Smarty и TemplateLite

На этом пожалуй все. Кто хочет более глубоко изучить возможности Smarty, может посмотреть список модификаторов или доступных функций описанных в документации с официального сайта (на русском).

Похожих постов нет.

Запись опубликована в рубрике HTML, PHP с метками MVC, Smarty, Template, TemplateLite, Шаблонизатор. Добавьте в закладки постоянную ссылку.

Источник: blog.kogtev.com

Шаблонизатор Smarty

Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.

Скачать библиотеку и посмотреть документацию можно на https://www.smarty.net/download

Содержание архива smarty-3.1.32.zip переносим в директорию /smarty/ в корень сайта, в index.php подключаем библиотеку и задаем переменные шаблона.

Далее нужно создать директорию /templates/ , а в ней файл шаблона index.tpl .
В шаблонах Smarty применяются следующие конструкции:

Источник: snipp.ru

Почему я отказался от использования Smarty

Когда я пришел на работу в одну американскую контору (удаленно конечно. и было это году так в 2000), то вынужден был использовать стандарты, принятые в этой организации. И одним из них было использование своего шаблонизатора, который выглядел как простой html файл, в котором могут присутствовать специальные последовательности символов (обычно начинающиеся и заканчивающиеся на «##»), которые перед выдачей в броузер будут заменены на тексты или результаты работы других шаблонов. Также там был свое API для работы с такими шаблонами. Очень простое API. А так как я был в то время очень молод, то я принял на вооружение эти стандарты и стал использовать их в своей работе.

Вот пример работы с таким шаблоном:

$template = new Template(); $template->Load(‘NameTemplate.html’); $template->Replace(‘##TITLE##’, ‘Hello world!’); $template->Out();

Знакомство

Шли годы. И при реализации очередного проекта возникло требование: «В качестве шаблонизатора обязательно использование Smarty». Партия сказала: «Надо». Комсомол ответил: «Есть!». Так я и познакомился со Smarty. Он мне очень понравился.

Я просто был вне себя от восторга. Любая задача которую мне надо было реализовать, могла быть реализована с его помощью. Иногда просто, иногда очень сложно, но можно. В общем, я стал использовать Smarty.

Прозрение

Прошло еще несколько лет. Не помню почему, но возникла задача найти простой для работы фреймворк на php. Я нашел их список и стал их тестировать для наших целей. Естественно одним из требований было: поддержка Smarty (и это было уже мое требование).

При чтении документации одного из фреймворков (то ли Kohana, то ли CodeIgniter) я встретил фразу примерно такую: «Вы можете использовать Smarty, вот тут инструкция как его подключить и как с ним работать в нашем фреймворке, но мы считаем что нативный php проще, понятнее и быстрее . ». И я задумался. Стал сравнивать реализации на нативном php и Smarty.

Читайте также:
Принтер onenote что это за программа и нужна ли она

Проще? Конечно, ведь php мы уже знаем.
Понятнее? Конечно, ведь php мы уже понимаем.
Быстрее? Конечно, ведь код на Smarty будет транслироваться в код на php (и как минимум быстрее он быть не может, а медленне запросто).
Безопаснее? Я думаю да. Хотя тут можно поспорить. Дырок можно наделать где угодно.

против
против
— реализация этого на php зависит от разных факторов от до более сложных вариантов (все зависит от фреймворка)
// помню, всегда искал это в документации.

Примеры условий и циклов приводить не буду — занимают много места и выглядят примерно одинаково.

Еще помню как на Smarty делал реализацию рекурсивного обхода дерева, один из вариантов это создание шаблона и вызов этого шаблона внутри себя. На php это выглядит так:

‘.$node[‘name’].»; draw_tree($node[‘childs’]); > > ?>

Я долго пытался себя убедить, что Smarty удобнее для дизайнеров. Но они на него так и не пришли (по разным причинам). И в итоге я, как программист, вынужден был писать скрипты для скриптового языка. В добавок некоторые версии Smarty оказались с уязвимостью и мне, то и дело, приходилось возвращаться к старым проектам, чтобы обновлять библиотеки и делать проверки на совместимость.

PS. Smarty не использую уже года 2-3, и потому текущее состояние дел мне оценить сложно, но думаю дела обстоят не лучше и не хуже чем было раньше.

Источник: habr.com

В чем прелесть шаблонизатора Smarty?

Основное предназначение Smarty — сделать работу веб-разработчика менее трудоемкой, а владельцу сайта уменьшить в разы расходы на обслуживание сайта. Вот голый PHP в шаблонах дизайна, с которым предлагают мучаться другие CMS: PHPКогда вы смотрите на это, то думаете «о боже, какой ужас» или «шта. «. А теперь, внимание, оцените как изящно и легкочитаемо выглядит код в Smarty на 5CMS: Smarty

Как мы видим здесь перебираются новинки товаров, если есть фото — выводятся с фото (причем мы их тут же еще и нарезаем под размер 100х100px из оригинальных изображений), нет фото — выводятся с заглушкой, а под фото ссылка на сам товар. Заметьте, насколько легко понять какие переменные мы используем и для чего (напр.: $product->name — это название товара). Все элементарно и прозрачно.

Итак, наличие шаблонизатора Smarty в CMS это:

  • Разработчикам: легкое и быстрое внесение изменений в дизайн даже без знания PHP
  • Заказчикам: экономия на верстальщиках и программистах, т.к. объем работ меньше, а значит обслуживание сайта выходит в разыдешевле

Больше информации по Smarty:

Модификаторы Smarty:

  • Модификаторы и полезности Smarty
  • Создание своих модификаторов Smarty

Плагины Smarty:

Документация Smarty:

  • Вся документация по Smarty

UPD: описание обновлено 20.02.2021

Рекомендуем прочитать

Сайт развернут, что дальше?

Итак, вы получили доступы к админке (панели управления) вашего интернет-магазина. Разберем какие будут ваши дальнейшие действия.

Получение API ключа для Яндекс.Карт

Пошаговая инструкция как получить API ключ для Яндекс.Карт, например, для виджета СДЭК

Увеличьте конверсию интернет-магазина с помощью email маркетинга

Система повышения конверсии с помощью email маркетинга = триггерных email-рассылок на основе big data, от разработчиков рекомендательных систем для ozon.ru и wikimart.ru

Источник: 5cms.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru