Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как сделать систему шаблонов? (https://forum.antichat.xyz/showthread.php?t=167936)

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 код:

<?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:
PHP код:

<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

Цитата:

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

<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
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(); 

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


Время: 00:59