Сталкивались ли вы с созданием веб-сайта, который создается одновременно программистом (вероятно, вами) и дизайнером? Разве ты не знаешь, как облегчить работу вам обоим? Позвольте мне дать вам ответ: используйте FastTemplate, чтобы упростить настройку вашего сайта!
Хорошо, вам может быть интересно, почему вам следует использовать FastTemplates.
· Можно изменить внешний вид всего вашего сайта за считанные секунды · Абстрактное программирование, никакого ненужного HTML-кода · Дизайнерам не нужно заботиться обо всем «непонятном» коде · Удивительно быстро · Легче повторно использовать старые шаблоны (по сравнению с обычной формой)
FastTemplate является производным от одноименного пакета Perl (который можно найти на CPAN). Вы можете загрузить версию PHP с его домашней страницы (адрес загрузки этого сайта: http://www.phpe.net/downloads/1.shtml). Вам понадобится только один из файлов классов (class.FastTemplate.php).
Позвольте мне сначала объяснить разницу между использованием шаблона для создания страницы и простым ее отображением или распечаткой.
Простое использование метода echo/print отлично подходит для написания коротких сценариев, но не поможет вам улучшить организацию и настройку. С другой стороны, шаблоны дают вам возможность создавать многоязычные сайты, просто изменив параметр. Они могут подтолкнуть вас больше заботиться о том, что вам нужно делать.
Не бойтесь подумать, прежде чем начать программировать. Это может занять некоторое время, но затраты окупятся по мере роста проекта.
Итак, как применить FastTemplate? Сначала вам нужно сделать простой вызов:
<?php $tpl=new FastTemplate("path");
?>
Передайте ему путь к каталогу, в котором хранятся все файлы шаблонов. Он возвращает объект, который вы можете использовать для назначения параметров, генерации страниц и т. д.
FastTemplate основан на предположении, что большая страница состоит из множества мелких частей. Каждая часть имеет уникальное имя. Самая маленькая часть — это присвоение его обычной текстовой строке с уникальным именем. Это можно сделать через <?php
$tpl->assign(NAME, "текст");
?>
завершить. Теперь, если один из ваших шаблонов содержит {NAME}, FastTemplate узнает о ваших намерениях.
Кроме того, FastTemplate должен знать, как вы хотите называть свой шаблон. Вам необходимо передать ассоциативный массив (ассоциативный
массив) в <?php $tpl->define() ?>;
Давай, подскажи.
<?php
$tpl->define(array(foo => "foo.tpl",
bar => "bar.tpl");
?>
Эти назначения дадут foo и bar соответственно разные файлы (с именами foo.tpl и bar.tpl).
Теперь вы хотите, чтобы FastTemplate заменил все {MACROS} в шаблоне foo соответствующими значениями. Выполнив команду
<?php
$tpl->parse(PAGECONTENT, "foo");
?>
достичь. Эта команда присвоит содержимое шаблона «foo» PAGECONTENT. Конечно, мы еще не закончили, поскольку панель шаблонов — это определение главной страницы, и FastTemplate необходимо ее заменить.
Макрос {PAGECONTENT}. Нам также необходимо присвоить значение PAGETITLE следующим образом: <?php
$tpl->assign(PAGETITLE, "Тест FooBar");
$tpl->parse(MAIN, "бар");
?>
Легко, не так ли? Нам просто нужно вывести его сейчас: <?php
$tpl->FastPrint(MAIN);
?>
Следующие три файла содержат более подробные описания реальных упражнений. Я не знаю, как жить без этой технологии в реальной жизни...
Ваши дизайнеры будут счастливы, а ваш начальник улыбнется, потому что вы можете сделать больше за меньшее время.
bar.tpl <!-- bar.tpl -->
<HTML>
<HEAD><TITLE>Мир функций – {PAGETITLE}</TITLE></HEAD>
<BODY BGCOLOR=ЧЕРНЫЙ ТЕКСТ=БЕЛЫЙ>
<H1>{PAGETITLE</H1>
{PAGECONTENT}
</ТЕЛО>
</HTML>
foo.tpl <!-- foo.tpl -->
Ясно, что ничего не было сделано. Пожалуйста, посмотрите {ИМЯ}.
demo.php3 <?php
включить "class.FastTemplate.php3"
$tpl = новый FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));
$tpl->assign(NAME, "me");
$tpl->assign(PAGETITLE, "Добро пожаловать!");
$tpl->parse(PAGECONTENT, "foo");
$tpl->parse(MAIN, "бар");
$tpl->FastPrint(MAIN);
?>
Создание целой таблицы Я также написал небольшой пример, демонстрирующий, как создать целую таблицу на основе однострочного шаблона. Это эффективно, поскольку вам по-прежнему не нужно напрямую изменять HTML-документ.
Мы создаем таблицу HTML, добавляя содержимое шаблона к уже определенному уникальному имени. Это можно сделать, позвонив
Для этого при использовании $tpl->parse() добавьте «.» перед именем шаблона. <?php
//Назначаем содержимое шаблона foo TPL1
$tpl->parse(TPL1, "foo");
// Прикрепляем содержимое панели шаблона после TPL1
$tpl->parse(TPL1, ".bar");
?>
page.tpl
<HTML>
<HEAD><TITLE>Мир функций – {PAGE_TITLE}</TITLE></HEAD>
<BODY BGCOLOR=ЧЕРНЫЙ ТЕКСТ=БЕЛЫЙ>
<H1>{PAGE_TITLE</H1>
{PAGE_CONTENT}
</ТЕЛО>
</HTML>
table.tpl
<ТАБЛИЦА>
<TR> <TH>имя</TH> <TH>размер</TH> </TR>
{TABLE_ROWS}
</TABLE>
table_row.tpl
<TR>
<TD>{FILENAME}</TD>
<TD>{FILESIZE</TD>
</TR>
yad.php3
<?php
включить "class.FastTemplate.php3"
функцию InitializeTemplates() {;
глобальный $tpl;
$tpl = новый FastTemplate(".");
$tpl->define( array(page => "page.tpl",
таблица => "таблица.tpl",
table_row => "table_row.tpl" ) );
}
функция ReadCurrentDirectory() {
глобальный $tpl
$handle = opendir(".");
while($filename = readdir($handle)) {
$tpl->assign(ИМЯ ФАЙЛА, $имя файла);
$tpl->assign(FILESIZE, размер файла($имя_файла));
$tpl->parse(TABLE_ROWS, ".table_row");
}
закрытыйдир($дескриптор);
$tpl->parse(PAGE_CONTENT, «таблица»);
}
функция PrintPage($title) {
глобальный $
tpl->назначить(PAGE_TITLE, $title);
$tpl->parse(FINAL, «страница»);
$tpl->FastPrint(ОКОНЧАТЕЛЬНЫЙ);
}
InitializeTemplates();
ЧитатьТекущийКаталог();
Printpage("Еще одна демонстрация");
?>
Обсуждение скорости
«Хорошо», вы можете сказать: «Все это здорово. Но не повлияет ли это на скорость моего сайта?
Нет, ваш сайт, вероятно, станет быстрее?» Одна простая причина: поскольку вы, как программист, заботитесь о разработке своего приложения и написании кода, ваш код будет более эффективным, и вы сможете решать одни и те же задачи проще и быстрее. Итак, вы можете добавить еще одну причину к списку причин, перечисленных выше, почему вам следует рассмотреть возможность использования FastTemplate в своем проекте.
Если вы просто хотите преобразовать существующий веб-сайт, повышение производительности может быть не замечено. Я рекомендую использовать буферизацию регулярных выражений в PHP, это поможет в этой ситуации. Поскольку FastTemplate использует регулярные выражения для каждого макроса, каждое регулярное выражение будет скомпилировано только один раз, и влияние на скорость будет незначительным.