Опубликован: 01.03.2005 | Доступ: свободный | Студентов: 33894 / 4520 | Оценка: 4.31 / 4.06 | Длительность: 16:41:00
ISBN: 978-5-9556-0026-0
Лекция 15:

Использование шаблонов в PHP

< Лекция 14 || Лекция 15: 12345678

Решение задачи с помощью шаблонов Smarty

Теперь, после знакомства с основными конструкциями Smarty, мы можем попытаться решить задачу отображения списка документов. Шаблон списка будет выглядеть следующим образом:

{* Smarty template index.tpl *}
{config_load file="task.conf" }
<html>
<head><title>{#pageTitle#}</title>
</head>
<body>
<ol>
{section name=art loop=$title}
   <li><a href="{$fulltext[art]}">
      {$title[art]}</a>
      ({$author[art]})
   <br> <p> {$abstract[art]}
{/section}
</ol>
</body>
</html>

В файле конфигурации task.conf будем хранить название страницы и параметры для доступа к базе данных:

# глобальные переменные
pageTitle = "List of documents"
[Customer]
pageTitle = "Список статей"
[Database]
host=localhost
db=book
user=nina
pass=123

Скрипт ( index.php ), обрабатывающий написанный нами шаблон, может выглядеть таким образом:

<?
define("SMARTY_DIR","c:/users/nina/Smarty/libs/");
require(SMARTY_DIR."Smarty.class.php");
$smarty = new Smarty;
$smarty->template_dir = "c:/smarty_dirs/book/templates/";
$smarty->compile_dir = "c:/smarty_dirs/book/templates_c/";
$smarty->config_dir = "c:/smarty_dirs/book/configs/";
$smarty->cache_dir = "c:/smarty_dirs/book/cache/";
// вышеприведенный блок лучше вынести в отдельный файл
$smarty->config_load("task.conf","Database");
$host = $smarty->get_config_vars("host");
$user = $smarty->get_config_vars("user");
$pass = $smarty->get_config_vars("pass");
$db = $smarty->get_config_vars("db");
$conn = mysql_connect($host, $user, $pass) or die("Can't connect");
mysql_select_db($db);
$sql = "SELECT * FROM Articles";
$q = mysql_query($sql,$conn);
$num = mysql_num_rows($q);
   for($i=0; $i<$num; $i++){
      $title = mysql_result($q,$i,"title");
      $author = mysql_result($q,$i,"author");
      $abs = mysql_result($q,$i,"abstract");
      $full = mysql_result($q,$i,"fulltext");
      $smarty->append(array(
         title => $title,
         author => $author,
         abstract => $abs,
         fulltext => $full ));
}
$smarty->display("index.tpl");
?>
Листинг 15.12. index.php

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

Заключение

Итак, в этой лекции было рассказано о том, что такое шаблоны и как их можно использовать при программировании web-приложений на языке PHP. Мы рассмотрели три способа решения задачи отображения сложного списка документов: с помощью функции регулярной замены, с помощью класса шаблонов FastTemplate и с помощью языка шаблонов Smarty. При этом мы познакомились с основными свойствами, методами и функциями классов FastTemplate и Smarty.

< Лекция 14 || Лекция 15: 12345678
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?

Семен Дядькин
Семен Дядькин
Беларусь, Минск, БГУ, 2003
Алексей Иевенко
Алексей Иевенко
Украина, Великая Михайловка