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 :: Поиск по содержимому страниц


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

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

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

16.08.2005 :: Создание шаблонов внутри сайта

Начиная с версии DSite 2.57 появилась возможность создавать динамические страницы таким образом, чтобы оформление их все-таки было доступно простому пользователю. Далее описывается как это можно сделать, но изначально вы должны иметь представление о классе templater и его возможностях.

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

Представим себе такую ситуацию. Нужно вывести прайс лист из БД сайта. Запросы к базе лучше всего выполнять через класс tree или pages, которые будут описаны в следующих статьях. Используем pages. Путь раздел каталога специфицирован параметром динамической страницы cat_div. Пишем SQL запрос:

<?
include "inc/phpaux.inc"; // обязательно, для использования templater, pages итп. классов
$formatpageid = 12; // страница с шаблоном
$cat_div = $_GET['cat_div']; // используем модный, относительно новый подход к передаваемым параметрам
$sql = "SELECT name, descr, price FROM catalog WHERE cat_div = $cat_div";
$p = new pages(1,10,10); // создаем новый pages
// определяем функцию, которая получает элемент таблицы
function getelementcat($row)
{
//добавляем ряд
$GLOBALS['NAME'][]=$row['name'];
$GLOBALS['DESCR'][]=$row['descr'];
$GLOBALS['PRICE'][]=$row['price'];
}
$p->DoSqlQueryPages($sql, 'getelementcat');
$t = new templater(false, $formatpageid);
echo $t->translate();
$p->printbar(); // печатаем странички
?>

Примерно так будет выглядеть скрипт, печатающий прайс лист. Как будет выглядеть страница, которая отображает прайс лист, является при этом статической и может быть отредактирована пользователем.

<P>Прайс лист&nbsp;раздела <STRONG>{DIV}</STRONG>:</P>
<P>
<TABLE cellSpacing=1 cellPadding=1 width="80%" border=1>
<TBODY>
<TR>
<TD width="20%" bgColor=#cccccc>
<P align=center>&nbsp;Наименование продукции</P></TD>
<TD width="20%" bgColor=#cccccc>
<P align=center>&nbsp;Описание</P></TD>
<TD width="20%" bgColor=#cccccc>
<P align=center>&nbsp;Цена</P></TD></TR>
<TR><TD><P align=center>&nbsp;{NAME}</P></TD><TD>&nbsp;{DESCR}</TD><TD><P align=right>&nbsp;<STRONG>{PRICE}</STRONG></P></TD></TR>
</TBODY></TABLE></P>

А отображение этой страницы показано на рисунке ниже.

Казалось бы все просто, но если вы внимательно читали статью про клас templater, вы обнаружите одну проблему, о которой здесь стоит задуматься, а именно, когда у нас переменная типа массив, класс сам пытается догадаться какой кусок шаблона нужно размножить, а это непросто, поэтому поумолчанию он берет строку, на которой находит первую переменную типа массив. В приведенном выше шаблоне так и есть, весь ряд мы намеренно вытянули в одну строку, однако если пользователь начнет редактировать такую страницу визуальным редактором, нет никакой гарантии, что ряд останется таким же однострочным.

Здесь в игру и вступает новая возможность класса templater - использование свойства rowtag. Установите rowtag в 'TR' перед вызовом метода translate и система сама найдет начало и конец рядов и вытянет их в одну строку, отбросив лишнюю информацию:

$t = new templater(false, $formatpageid);
$t->rowtag='TR';
echo $t->translate();

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

Внешний вид страницы отображения в визуальном редакторе
внешний вид страницы отображения в визуальном редакторе



Статьи:

« 1  2  


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