Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Основи використання шаблонізатора Smarty

Наша взаимовыгодная связь https://banwar.org/

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

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

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

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

Отже, давайте розглянемо як же все це працює. За замовчуванням Smarty заточена під схему розробки модель-уявлення-контролер (Model-view-controller). Model (ядро) тут - сукупність джерела даних і функцій, які працюють з цими даними на базовому рівні (прочитати, записати, змінити). View - шаблон, який відповідає за зовнішній вигляд сторінки. Controller (контролер) - сукупність прикладної логіки веб-додатки, яка забезпечує обробку даних, отриманих від ядра або користувача, вибір шаблону і висновок результату на екран. Якщо пояснити зовсім по простому, то це виглядає приблизно так: ви пишете код, який створює набір даних для шаблону, віддаєте разом з назвою шаблону Smarty і той все об'єднує, виводячи в браузер результат. Це і є так звана MVC.

Це і є так звана MVC

Model-view-controller

Перед початком роботи потрібно створити директорії, необхідні для роботи Smarty, за замовчуванням мають такі імена (ми створимо трохи інші, див. Приклад):

  • templates - директорія, де ми будемо зберігати створені шаблони;
  • templates_c - директорія, де Smarty буде зберігати скомпільовані шаблони;
  • configs - директорія для зберігання конфігураційних файлів;
  • cache - директорія для кеша.

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

Файл index.tpl - звичайний html документ зі спеціальними вставками

<Html> <head> <title> {$ title} </ title> </ head> <body> {* Коментар, якого не буде в HTML коді *} <p> {$ body_text} </ p> <small> {$ smarty.now | date_format: "% d-% m-% Y% H:% M:% S"} </ small> </ body> <! - Коментар, який буде в HTML коді -> < / 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-скрипті користувача, повинні мати перед ім'ям знак долара. Наприклад: {$ first_name}
  • Елементи масиву, значення яких були присвоєні в php-скрипті користувача, доступні в шаблоні за допомогою синтаксису {$ імя_массіва.ассоціатівний_ключ}. Наприклад: {$ person.last_name}
  • Елементи не асоціативного масиву доступні за допомогою синтаксису квадратних дужок: {імя_массіва [чісловой_індекс]}. Наприклад: {$ person [2]}
  • Властивості об'єктів, задані в php-скрипті, доступні в шаблоні за допомогою такого синтаксису: {імя_об'екта-> імя_свойства}. Наприклад: {$ person-> email}
  • Змінні, завантажені з конфігураційних файлів, укладаються між символами #. Також вони доступні як елементи асоціативного масиву $ smarty.config. Наприклад: {# bodyBgColor #} або {$ smarty.config.bodyBgColor}

У Smarty допускається використання модифікаторів, щоб їх застосувати потрібно вказати його назву після вертикальної риски, наступного за ім'ям змінної, функції або рядком, до якої він застосовується. Наприклад, щоб перевести значення змінної {$ title} в верхній регістр, потрібно застосувати до неї модифікатор upper, тобто написати наступне: {$ title | upper}. Або як ми зробили в нашому прикладі, використовуючи модифікатор date_format для формування поточної дати на основі змінної {$ smarty.now}.

Для зручності користування шаблони можна розбивати на блоки, при виклику методу display ( 'index.tpl') головного шаблону, опубліковуватимуться все дочірні. Якщо ім'я одного з блоків задається тільки після обробки php скрипта, то ім'я блоку можна передати всередині змінної. У такому випадку ім'я підключається файлу полягає не в одинарні лапки, а в подвійні.

файл index.tpl

{Include file = 'templates / header.tpl'} Головна сторінка {include file = "$ tpl_name.tpl"} {* Підключаємо блок з заздалегідь не відомим ім'ям *} {include file = 'templates / footer.tpl'}

Дуже корисною функцією є можливість використання оператора умови - {if}:

{If $ var> 5} Змінна, отримана шаблоном більше 5. {else} Змінна, отримана шаблоном менше або дорівнює 5. {/ if}

Для підключення JavaScript існує спеціальний блок - {literal} {/ literal}, який вимкне обробку шаблона в даному місці. Необхідність його застосування з'явиться коли Ви захочете вставити в шаблон скрипт містить фігурні дужки - {} (наприклад JQuery скрипт). Оскільки такі дужки використовуються самим Smarty для позначення змінних, він резонно видасть помилку на чужорідну конструкцію.

{Literal} <script type = "text / javascript"> function hello () {alert ( "Hello world!"); } </ Script> {/ literal}

А тепер я наведу більш складний приклад ілюструє висновок масиву даних.

файл 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

<Html> <head> <title> {$ title} </ title> </ head> <body> {* підключаємо шапку шаблону *} {include file = 'header.tpl'} {foreach from = $ news item = item } Тема новини: {$ item.title} Текст новини: {item.description} <a href="index.php?page=news&id={$item.id}"> Детальніше ... </a> {/ foreach } {* підключаємо footer шаблону *} {include file = 'footer.tpl'} </ body> </ html>

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

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

Зауважу, що представлений шаблонизатор досить важкий і тому з'явилася його полегшена версія - TemplateLite . Ось результати тестів з офіційного сайту виконані на PHP 5.1.1.

Порівняння швидкості роботи Smarty і TemplateLite

На цьому мабуть все. Хто хоче більш глибоко вивчити можливості Smarty, може подивитися список модифікаторів або доступних функцій описаних в документації з офіційного сайту (російською).

{Literal}

Php?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: