PDA

Просмотр полной версии : Как сделать систему шаблонов?


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У и юзал.
У меня даже в книге какой-то по пыху есть глава, посвященная созданию собственного простого шаблонизатора

m0Hze
03.01.2010, 17:16
Вариантов много по сути,самый просто,это просто чтение шаблонов.
То есть,ты выбираешь шаблон, далее он открываеться,например file_get_contsnts(), в нем уже есть предустановленные переменные,например в таком виде(мне удобнее так,чтобы если на не задействована,то и на экране не отображалась), <!--{TITLE}-->,<!--{HEADER}-->, ну и тд.Заменяеш переменные,и выводиш на экран,просто обзавстись парочкой функция нужных и все.

Fantom3D
03.01.2010, 17:36
smarty я не особо понял, да и мне интерестно самому все сделать...

m0Hze
А можно, пожалуйста, поподробнее. Я вроде как еще новичек. =)

LStr1ke
03.01.2010, 17:58
Я бы делал так например.
Создал основной файл, где идет замена строк на вывод из БД...
Например:
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

Airborn
03.01.2010, 18:19
Я бы делал так например.
Создал основной файл, где идет замена строк на вывод из БД...
Например:
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();


Аля заменитель строк в виде класса,удобно указывать разделители.