Просмотр полной версии : Как сделать систему шаблонов?
Fantom3D
03.01.2010, 16:58
Я создаю свой сайт. И мне нужно создать систему шаблонов. Чтобы вместо images, index.php в корне это было в /styles/Название шаблона/тут и чтобы шаблоны можна было быстро менять через админку. Я что-то не понимаю, как такое реализовать, подскажите плиз =)
Deathdreams
03.01.2010, 17:14
Smarty в помощь
wildshaman
03.01.2010, 17:16
Юзай шаблонизаторы, smarty, к примеру.
Лично я выдирал класс из DLУ и юзал.
У меня даже в книге какой-то по пыху есть глава, посвященная созданию собственного простого шаблонизатора
Вариантов много по сути,самый просто,это просто чтение шаблонов.
То есть,ты выбираешь шаблон, далее он открываеться,например file_get_contsnts(), в нем уже есть предустановленные переменные,например в таком виде(мне удобнее так,чтобы если на не задействована,то и на экране не отображалась), <!--{TITLE}-->,<!--{HEADER}-->, ну и тд.Заменяеш переменные,и выводиш на экран,просто обзавстись парочкой функция нужных и все.
Fantom3D
03.01.2010, 17:36
smarty я не особо понял, да и мне интерестно самому все сделать...
m0Hze
А можно, пожалуйста, поподробнее. Я вроде как еще новичек. =)
Я бы делал так например.
Создал основной файл, где идет замена строк на вывод из БД...
Например:
content.php
<?php
$style = "black_cat";
$title = "Заголовок страницы";
$header = "Крутая страница";
$text = "Тут короче всякий текст";
$content = file_get_contents($style."/page.html");
$content = preg_replace("#__TITLE__#",$title,$content);
$content = preg_replace("#__HEADER__#",$header,$content);
$content = preg_replace("#__TEXT__#",$text,$content);
echo $content;
?>
Там же папка black_cat, где лежит файл page.html:
<html>
<head>
<title>__TITLE__</title>
</head>
<body>
<h1>__HEADER__</h1><br />
<i>__TEXT__</i>
</body>
</html>
Короче файл будет content.php будет заменять строчки __УКАЗАТЕЛЬ__ на вывод соотв. данных. Тоесть при создании шаблона конструируешь его код и в нужных местах ставшь указатели на вывод какнкретных данных. Конечно я привел бональный вариант...
В результате будет:
http://i055.radikal.ru/1001/cf/d2591021b799.gif
Я бы делал так например.
Создал основной файл, где идет замена строк на вывод из БД...
Например:
content.php
<?php
$style = "black_cat";
$title = "Заголовок страницы";
$header = "Крутая страница";
$text = "Тут короче всякий текст";
$content = file_get_contents($style."/page.html");
$content = preg_replace("#__TITLE__#",$title,$content);
$content = preg_replace("#__HEADER__#",$header,$content);
$content = preg_replace("#__TEXT__#",$text,$content);
echo $content;
?>
Там же папка black_cat, где лежит файл page.html:
<html>
<head>
<title>__TITLE__</title>
</head>
<body>
<h1>__HEADER__</h1><br />
<i>__TEXT__</i>
</body>
</html>
Короче файл будет content.php будет заменять строчки __УКАЗАТЕЛЬ__ на вывод соотв. данных. Тоесть при создании шаблона конструируешь его код и в нужных местах ставшь указатели на вывод какнкретных данных. Конечно я привел бональный вариант...
В результате будет:
http://i055.radikal.ru/1001/cf/d2591021b799.gif
Юзать для таких целей регулярки - зло.Намного кощернее будет юзать strtr,str_replace.Кстати, mTemplater, выдерни от туда функцию для обработки шаблона и все.
_http://m0hze.ru/files/mtemplater.class.php
include('mtemplater.class.php');
$tpl = new mTempalter('tpl', 'tpl_c', array('right' => '}-->','left' => '<!--{'),$_SERVER['REMOTE_ADDR']);
$tpl->create_tpl('index',array('LILO' => 'HEllo, admin!'));
$tpl->display();
//$tpl->clear_dir_if_ip();
Аля заменитель строк в виде класса,удобно указывать разделители.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot