скрипт новости на smarty php

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

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

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

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

Вывод переменных

В PHP эта запись аналогична:

Также можно вывести значение массива по ключу.

В PHP это выглядело бы так:

Задание значений переменных

Катенация переменной с текстом:

Значение по умолчанию

Если переменная не существует или пуста, можно задать текст который будет выводится вместо нее.

Применение строковых функций

Переменные можно модифицировать встроенными функции, например, перевести символы в верхний регистр.

Допустимо комбинировать сразу несколько функций:

lowerПереводит строку в нижний регистр
upperПереводит строку в верхний регистр
capitalizeПреобразовывает первые буквы каждого слова в заглавные
stripЗаменяет все повторяющиеся пробелы
nl2brЗаменяет перевод строки в тэг
strip_tagsУдаляет html тэги
escapeИспользуется для кодирования спецсимволов

Глобальные переменные PHP

$_GET
$_POST
$_SESSION
$_COOCIES
$_REQUEST

Управляющие конструкции

Как и в PHP, в Smarty доступны управляющие конструкции, операторы и необходимые функции.

If, else

Switch Case

Циклы

Foreach

Встроенные функции Smarty

Include

literal

Вставки JS и CSS нужно обворачивать тегами т.к. фигурные скобки конфликтуют со Smarty и

Источник

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

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

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

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

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

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

скрипт новости на smarty php. Смотреть фото скрипт новости на smarty php. Смотреть картинку скрипт новости на smarty php. Картинка про скрипт новости на smarty php. Фото скрипт новости на smarty php

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

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

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

Файл index.php

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

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

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

Файл index.tpl

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

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

Файл news.php

Файл news.tpl

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

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

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

скрипт новости на smarty php. Смотреть фото скрипт новости на smarty php. Смотреть картинку скрипт новости на smarty php. Картинка про скрипт новости на smarty php. Фото скрипт новости на smarty php

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

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

Источник

Скрипт новости на smarty php

Тест-платформой сделаем бесплатно скачанный шаблон с уже готовыми рисунками и библиотекой css. Сайт, который мы собираемся скрипт новости на smarty php. Смотреть фото скрипт новости на smarty php. Смотреть картинку скрипт новости на smarty php. Картинка про скрипт новости на smarty php. Фото скрипт новости на smarty phpсделать будет выглядеть примерно как на рисунке слева. Как Вы видите на рисунке, сайт будет состоять из навигационного меню (слева, вверху), новостного блока (слева, внизу) и контентной (текстовой) части (справа, ниже). Таким образом, наш шаблон будет состоять из всех элементов, кроме вот этих блоков. На каждой страничке сайта будет свой уникальный контент. А что касается новостей и навигационного меню, то хотя они и будут повторятся, однако они могут динамически изменятся, например, добавятся свежие новости, или появится новое подменю.

Для того, чтобы Вы не тратили свое время на перекопированние кода, который наведен ниже, можете скачать уже готовый пример (в готовом примере работает три первые ссылки в главном меню и генерируется блок новостей) и изучить его так сказать изнутри. Проект требует установленного web-сервера и php. Создайте какую-то тестовую папку на Web-сервере и настройте виртуальный хост. Проект будет состоять из набора следующих папок и файлов:

Ну что ж, давайте сделаем первый шаг навстречу сайту и установим библиотеку smarty.

define (‘ SMARTY_DIR ‘,’ smarty_library/ ‘);
require(SMARTY_DIR.’ Smarty.class.php ‘);

$smarty = new Smarty ();//объект smarty

$arr_meta_tags[‘ title ‘] = » Мой личный хостинговый сайт «;
$arr_meta_tags[‘ keywords ‘] = » хостинг, площадка, хостинг-услуги «;
$arr_meta_tags[‘ description ‘] = » Лучший хостинговый сайт предоставит хостинг-услуги по оптимальным ценам «;
$arr_meta_tags[‘ content ‘] = » Хостинг – это услуга, по размещению вашего сайта на сервере, за которым следят квалифицированные специалисты, поддерживающие его работоспособность 24 часа в сутки и 7 дней в неделю. Не многие хостинг-компании способны предоставить хорошие условия, и только единицы могут дать приемлемое для вас соотношение цены и качества. Таковой компанией является Hostland. «;

$arr_meta_tags[‘ news ‘] = array (‘ 1 ‘ => array (‘ date ‘ => ‘ 09/12/2008 ‘, ‘ title ‘ => ‘ Смена банковских реквизитов ‘, ‘ text ‘ => ‘ Уважаемые клиенты, обращаем Ваше внимание на то, что с 29 октября 2008 года у нас сменились реквизиты. ‘), ‘ 2 ‘ => array (‘ date ‘ => ‘ 11/12/2008 ‘, ‘ title ‘ => ‘ Обновление линейки тарифных планов ‘, ‘ text ‘ => ‘ Теперь на всех наших тарифах еще больше места, еще больше доменов. ‘));

/************* передаем значение переменных php в переменные smarty *************/

Если Вы еще не поняли, как обрабатывать дополнительные шаблоны, оставьте это на потом, в первое время можно обойтись и без этого.

Источник

Скрипт новости на smarty php

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

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

Таким образом и работает шаблонная технология smarty. У Вас есть шаблон страницы, красиво оформленной html странички, но без текстового наполнения. Текст Вы можете, например, получать из базы данных, заносить его в переменную, потом переменную вставлять в оформленную html страничку и выдавать ее пользователю. Что же тут особенного, а то, что для создания красивого сайта, Вам понадобится лишь одна или несколько универсальных страничек, красиво оформленных, а создавать на основе ее Вы можете 1000-чи уникальных информационных страниц сайта.

Давайте, рассмотрим небольшой пример созданного сайта на основе шаблонной технологии Smarty и Вам все станет понятно. Тест-платформой сделаем бесплатно скачанный шаблон с уже готовыми рисунками и библиотекой css. Сайт, который мы собираемся сделать будет выглядеть примерно как на рисунке. Как Вы видите на рисунке, сайт будет состоять из навигационного меню (слева, вверху), новостного блока (слева, внизу) и контентной (текстовой) части (справа, ниже). Таким образом, наш шаблон будет состоять из всех элементов, кроме вот этих блоков. На каждой страничке сайта будет свой уникальный контент. А что касается новостей и навигационного меню, то хотя они и будут повторятся, однако они могут динамически изменятся, например, добавятся свежие новости, или появится новое подменю.

Ну что ж, давайте сделаем первый шаг навстречу сайту и установим библиотеку smarty.

Для начала работы со smarty, скачайте его последнюю версию на официальном сайте http://www.smarty.net/download.php. Пакет smarty абсолютно бесплатный, так что кряк искать не придется 🙂 Если вы скачали и распаковали пакет, там будет всякого добра полно, но Вам непосредственно нужны все файлы и папки в папочке libs (это и есть библиотека smarty, все остальное на не нужно).

Ее содержание будет выглядеть вот так:

Перекопируйте все это, со всем содержимым внутри, в папку нашего проекта [smarty_library]. Далее создайте папку [tpl], а в ней подкаталоги

Источник

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

Краткиий экскурс в историю

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

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

Знакомство

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

Прозрение

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

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *