DSite CMS
DSite CMS
создано Media Programming Group
Последняя статья: Как добавить заголовок новости в Title

Поиск: 
Главная            Статьи            Форум            Новости            Описание
Обучающие ролики
Примеры сайтов на CMS DSite
Цены
Вебстудиям
Заявка на DSite
FAQ
Ссылки
Контакты
Скачать

Новости:
05.05.11 :: Обновление 4.91 (релиз)

21.04.11 :: Обновление 4.87

07.04.11 :: Обновление 4.83

04.02.11 :: Обновление от 01.02

25.06.10 :: Поиск по содержимому страниц


Логин:
Пароль:

Забыли пароль? Восстановить

Также Вы можете пройти регистрацию

29.12.2005 :: dsTpsql - Расширение для класса Templater

dsTpsql - Расширение для класса Templater

Наверно Вы уже читали нашу статью об использовании класса templater для динамических страниц. Небольшая выдержка из неё: «Так как система шаблонов, реализуемая классом templater не накладывает ограничений на HTML, легко можно вводить различные макрокоманды, выделенные, например, жирным шрифтом {MYMACRO}. Они будут прекрасно редактироваться визуальным редактором, и для templater-а остануться по-прежнему значимыми (если, конечно пользователь не вобьет какие-нибудь символы внутрь фигурных скобок).»

Классы dsTpsql и dsTpSqlPages призваны упростить использование шаблонов при выводе информации из баз данных. Эти классы фактически идентичны, с тем лишь отличием, что dsTpSqlPages разбивает результат запроса на страницы. Поскольку эта возможность реализована на базе другого стандартного класса DSite pages, то мы рассмотрим пример с dsTpSql.

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

  1. Сделать запрос в БД
  2. Сформировать ряд массивов на основе данных из БД
  3. Подключить Templater и передать ему шаблон для парсинга

Класс dsTpsql призван избавить программиста от рутинной работы пункта №2.

Приведём небольшой пример:

<?php
$template_page_num = 10; // задаём номер страницы в системе DSite
$tp->dsTpsql("select c_id, c_title from categories");
$tp->add('total_categories', $tp->num_rows());
$tp->draw($template_page_num);
?>

Пример файла с шаблоном, в данном случае он хранится в странице №10 системы DSite

<p>Категорий: {total_categories}</p>
<table border=1>
<tr><th>Номер категории</th><th>Название</th></tr>
<tr><td>{c_id}</td><td>{c_title}</td></tr>
</table>


$tp->dsTpsql("select c_id, c_title from categories");
Инстанцируем объект класса dsTpsql. Здесь в качестве первого обязательного аргумента выступает строка sql-запроса. В качестве второго необязательного аргумента выступает строка имени функции-обработчика, к её использованию вернёмся позднее.

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

Для добавления в шаблон других данных (не из sql-запроса) используется метод add: $tp->add('total_categories', $tp->num_rows());

Здесь элементу "total_categories" массива данных присваивается кол-во категорий. Метод num_rows() служит для получения числа строк sql-результата.

$tp->parse($template_page_num);
Метод parse() возвращает заполненый данными шаблон. Здесь аргумент задаёт какой шаблон использовать. Если аргумент целочисленный то шаблон берётся из страницы DSite с номером из аргумента. Если аргумент строковый то шаблон читается из файла находящегося в директории шаблонов.

$tp->draw($template_page_num);
Метод draw() практически аналогичен методу parse(). Единственное отличие в том что заполненый шаблон не возвращается, а сразу выводится в браузер конструкцией echo.

Вторым возможным аргументом конструктора класа является имя функции обработки ряда sql-результата. Рассмотрим практический пример её использования:

function handler($a_row) {
$a_row["c_title"] = htmlspecialchars($a_row["c_title"]);
return $a_row;
}

Именно возвращаемое значение функции handler посылается на вход обработчику шаблонов, поэтому функция обязательно должна возвращать правильное значение.

После обработки массива sql-строки шаблон будет заполняться уже модифицированными данными.



Статьи:

1  2  » 


FAQ  Поиск на форуме
Новое сообщение
Copyright © 2017 Webmedia.ru - создание сайтов & Media Programming Group