Курилка.co.ua
Orphus RSS kurilka.co.ua

Category

Archives

Работа с шаблонами средствами PHPLib Template

Author wmas wmas | Category Category PHP

Здравствуйте уважаемые посетители моего блога Курилка.co.ua. Не являясь исключением, в своих попытках разобраться с PHP я тоже, как и многие другие, столкнулся с простым вопросом: «как сделать php-скрипты независимыми от дизайна?» Да, PHP называют «скриптовым языком, встраиваемым в HTML», но после написания ряда проектов, стало понятно, что отделение формы от содержания – это Хорошая Идея!

Первым шагом к поиску обработчика шаблонов, как не странно, стали попытки разобраться с движком форума phpBB. Меня покорила простота и удобство используемой в нём класса PHPLib Template от Кристиана Коентоппа (Kristian Koehntopp). Соглашусь, что сейчас существует множество гораздо более продвинутых решений, но как для начала – весьма, весьма. Если убрать все лишние комментарии, пустые строки и т.п. файл будет весить около 5Кб. В общем, смотрите сами. Я же предлагаю разобраться с основами, не вдаваясь в подробности.

Установка и подключение PHP Lib Template

  • Как вы уже вероятно догадались, сам класс Template входит в состав библиотеки PHPLib. Найти и скачать последнюю версию можно на официальном сайте.
  • В предложенном архиве нас интересует файл template.inc находящийся в директории: phplib-x.x\php\.
  • Создадим шаблон: index.tpl — со следующим содержанием:

    Hi, {USER_NAME}!

  • Создадим скрипт: index.php — со следующим содержанием:

    <?php
    include 'template.inc';
    $tpl = new Template();
    $tpl->set_file('index','index.tpl');
    $tpl->set_var('USER_NAME','Tester');
    $tpl->parse('output','index');
    $tpl->p('output');
    ?>

  • В нашей папке три файла: template.inc, index.tpl и index.php. Результатом работы скрипта должна стать строка следующего содержания: «Hi, Tester

Разбор примера с использованием PHPLib Template

Как и говорилось ранее, я не стану вдаваться в подробности и остановилюсь лишь на основных функциях PHPLib Template. Однако, давайте разберёмся, что да как.

  • include 'template.inc';
    Подключаем внешний файл класса в наш скрипт.
  • $tpl = new Template();
    Создаем экземпляр ($tpl) объекта Template. Уточню, в Template() можно использовать дополнительные параметры:
    • $root – путь к папке с шаблонами (по умолчанию: «.»)
    • $unknows – вариант обработки неопределенных переменных (по умолчанию: «remove» — удалить, другие: «keep» — оставить как есть и «comment» — закомментировать)

    Как это может выглядеть:

    $tpl = new Template('tpl/','comment');

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

  • $tpl->set_file('index','index.tpl');
    Определяем имя файла шаблона (index.tpl) как значение файловой переменной (index). Уточню, что при определении нескольких шаблонов можно использовать массив. К примеру:

    $tpl->set_file(array(
      'filename1' => 'filename1.tpl',
      'filename2' => 'filename2.tpl'
    ));

    Небольшой совет: используйте для имен файловых переменных нижний регистр.

  • $tpl->set_var('USER_NAME','Tester');
    Определяем значение (Tester) переменной шаблона (USER_NAME). Уточню, что здесь, как в случае с set_file(), при определении нескольких переменных шаблона можно использовать массив.

    Небольшой совет: используйте для имен переменных шаблона верхний регистр.
    Обратите внимание: в шаблоне переменная прописана в фигурных скобках: {USER_NAME}

  • $tpl->parse('output','index');
    Подставляем значения определенных переменных в содержимое шаблона (index => index.tpl) и присваиваем полученное значение указанной переменной (output). Уточню, что здесь можно было бы использовать ещё один параметр:
    • $append – если значение равно true добавляет результат «парсинга» шаблона (index) к имеющемуся значению указанной переменной (output). К примеру, использование:

      $tpl->parse('output','index',true);
      $tpl->parse('output','index',true);

      приведет к тому, что мы получим строку: «Hi, Tester!Hi, Tester

  • $tpl->p('output');
    Выводит «финальное» значение переменной шаблона (output).

    Уточнение: под «финальным» подразумевается обработка неопределенных переменных.

В чем отличие файловых переменных от переменных шаблона?

Я специально выделил этот вопрос. Самому пришлось помучиться, чтобы разобраться и понять в чем «фишка». Как таковой файловая переменная хранит имя файла шаблона, тот самый: «index.tpl». В дальнейшем считывается содержание файла, парсится, а результат помещается в обычную переменную шаблона, тот же output. Как я понимаю, это позволяет не забивать память лишними данными, что согласитесь правильно.

Напоследок

Подводя итоги можно сказать, что я затронул далеко не все возможности PHPLib Template. Но и их вполне достаточно, чтобы напрячь мозги, и слепить нечто полезное. Надеюсь, мне удалось помочь вам сделать первый шаг и разобраться в поставленном вопросе. Впрочем, если что-то и не ясно – пишите, будем разбираться вместе. Спасибо за внимание.

Publish: Вторник Окт 27, 2009

2 Responses for "Работа с шаблонами средствами PHPLib Template"

feed for comments on this post

  • Комментарий #2464 author: binar Reply
    publish: Вторник Ноя 3, 2009 at 8:50 пп

    У меня не работает :cry:

  • Комментарий #2466 author: wmas Reply
    publish: Среда Ноя 4, 2009 at 11:31 пп

    2binar: hi! что именно не работает?


Popular links

Copyright © since 2006 Курилка.co.ua,
powered by WordPress