[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: думаю данный вопрос поможет всем
xotabb
подскажите пожалуйста как написать шаблонизатор.
1:допустим в .txt файле будет находится стандартный HTML код, и нужно сделать чтобы данный код вставлялся в каждый PHP документ.
2:типо так...
<?php
dant.=$text,$form;
?>

а в html документе было
<html><head><title>test</title></head>
<body>

%dant%
</body>
</html>

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



Спустя 7 минут, 29 секунд (28.04.2010 - 15:18) xotabb написал(а):
очень надеюсь на вашу помощь...
P.S.зарание спасибо

Спустя 9 минут, 52 секунды (28.04.2010 - 15:28) mihai написал(а):
да поддерживаю автора хотелось бы разобраться с созданием шаблонов
а то уж очень всё сложно написано, фунции , классы, хотелось бы с начала попроще

Спустя 1 минута, 46 секунд (28.04.2010 - 15:30) waldicom написал(а):
Совет атору топика: в подписи шрифт должен быть еще жирнее и еще больше и цвет поядовитее. Да и картинки побольше ставьте.
И почему на аватарчке тема сисег не раскрыта?

Спустя 2 минуты, 48 секунд (28.04.2010 - 15:33) xotabb написал(а):
думаю так тебе больше понравится!

Спустя 40 секунд (28.04.2010 - 15:34) waldicom написал(а):
Цитата (xotabb @ 28.04.2010 - 14:33)
думаю так тебе больше понравится!

Супер! А аватарчик? smile.gif

Спустя 1 минута, 9 секунд (28.04.2010 - 15:35) xotabb написал(а):
а что с ним не так?

Спустя 7 минут, 37 секунд (28.04.2010 - 15:42) Семён написал(а):
Зачем пингвина насиловать, он гораздо добрее и лучше!!!
По теме: воспользуйся готовым и наверно лучшим решением - Smarty

Спустя 3 минуты, 28 секунд (28.04.2010 - 15:46) xotabb написал(а):
зачем использовать чьёто, когда лучше сделать самому!
вот набросок есть
//шаблон
global $template;
//==================================================//
/*
Инициализация шаблонов
*/

function InitDesign($name,$wapver,$fatal=true){
global $path_template,$nrowpage;
$content=@file($path_template."/".$name.$wapver.".txt");
if(empty($content))
if($fatal)NotFound("Not design ".$name.$wapver); else return array();
$elem=explode("|",$content[0]);
if(!empty($elem[1]))$nrowpage=(int)$elem[1];
$ncontent=count($content);
for($j=1;$j<$ncontent;$j++){
$line=trim($content[$j]);
if(empty($line))continue;
$pos=strpos($line,":==");
if($pos===false){
$template[$name].=$line;
continue;
};
$name=substr($line,0,$pos);
$value=substr($line,$pos+3);
$template[$name]=$value;
};//for
return $template;
};

Спустя 6 минут, 14 секунд (28.04.2010 - 15:52) waldicom написал(а):
Цитата (xotabb @ 28.04.2010 - 14:46)
зачем использовать чьёто, когда лучше сделать самому!

Оффтопчик
Что у Вас за браузер сейчас и какая ось стоит? А проц какой? Шо, купленный? blink.gif


о, еще один обиженный и обделенный поставил минус в карму... давай ишо!

Спустя 3 минуты, 14 секунд (28.04.2010 - 15:55) xotabb написал(а):
waldicom не обижайся. просто слишком много притеньзий. мне написали нормально в личку и я сменил. а форум **** зачем?

Спустя 41 секунда (28.04.2010 - 15:56) xotabb написал(а):
а теперь пишим по теме

Спустя 1 минута, 41 секунда (28.04.2010 - 15:58) Семён написал(а):
Пример

Есть у нас скриптовой файл test.php: который зависит от некого класса $core, в которой мы будем добавлять значения массива.

<?php
$myvar = 'itworks';
$core->add('#myvar#',$myvar);
$core->add('#another#','123');
$core->display('1.txt');

/*
В классе core ты должен произвести подсчёт элементов массива.
Затем в нём же открываешь свой 1.txt (для этого display) и проходишь циклом заменяя элементами твоего массива.
Поищу дома старые наработки шаблонизатора, правда у меня так и не получилось нормально сделать перебор цикла на шаблоне
*/


?>

Спустя 6 минут, 45 секунд (28.04.2010 - 16:04) xotabb написал(а):
поищи, у меня есть 1 от хорошего программиста, но сам в нём так и не разобрался

Спустя 14 минут, 33 секунды (28.04.2010 - 16:19) xotabb написал(а):
жду новых предложений,
либо готового кода с коментариями...
похоже я слегка грубо выразился

Спустя 16 минут, 27 секунд (28.04.2010 - 16:35) twin написал(а):
Цитата
жду новых предложений,

Выкинуть и забыть как страшный сон саму идею шаблонизации.
Для чего этот лишний головняк?

Спустя 1 минута, 33 секунды (28.04.2010 - 16:37) waldicom написал(а):
Цитата (twin @ 28.04.2010 - 15:35)

Выкинуть и забыть как страшный сон саму идею шаблонизации.
Для чего этот лишний головняк?

Твин, поработай надо большими проектами, где программер - это программер, дизайнер - это дизайнер, а верстальщик - это верстальщик

Спустя 2 минуты, 15 секунд (28.04.2010 - 16:39) twin написал(а):
Да работаю я... А СМАРТИ не шибко то дело поправляет. Там та же логика, только хуже гораздо.
Я давным давно схему предложил из натива и деления шаблонов. Ни логики там, ни суррогатов. Все предельно прозрачно.

Спустя 2 часа, 29 минут, 34 секунды (28.04.2010 - 19:09) xotabb написал(а):
это нужно мне для того чтобы облегчить свой труд, и не писать 200раз 1код в каждой странице.
а чужой код я принципиально не смогу использовать, тк. я такой человек(использую только свой код) такой я человек...

Спустя 38 секунд (28.04.2010 - 19:09) xotabb написал(а):
и ещё вопрос, что тут за группы? каков вообще их смысл?

Спустя 57 минут, 23 секунды (28.04.2010 - 20:07) buschrutt написал(а):
для начала давайте определимся что есть шабонизатор... я так понимаю нужно вставлять не в одну а в каждую страницу свой шаблон (может их несколько на сайт).. а в шаблоны подставлять динамический контент... на какую глубину копаем??

если это то что ты спрашиваешь то могу тут свой показать с разъяснениями ... естественно до комерческого тут как до китая... но все работает вроде

Спустя 40 минут, 58 секунд (28.04.2010 - 20:48) xotabb написал(а):
покажи,если не сложно

Спустя 35 минут, 25 секунд (28.04.2010 - 21:23) buschrutt написал(а):
Я сделал так:
При создании страницы сайта из админки делается следующее:
1. В БД заносится информация о соответствии ID страницы к шаблону, соответствии ID страницы номерам встраиваимых в шаблон модулей, пути к странице внутри каталога www.
2. Создается каталог с названием страницы (оно соответствует номеру ID.
3. Создается внутри каталога страница index.php со следующим кодом.

<?$pageID=1; //переменная с ID страницы
$outPath='../'; // путь к корню
include('../includes/mysql/config.php'); // включение файла с подключением к БД
include('../includes/site/start.php');?> // включение файла с подставлением шаблона и контента в шаблон


С config.php думаю все понятно.

Вот start.php:


<?
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db ("db_pages",$dbcnx); // соединение с базой

$sql='SELECT * FROM pages_inf WHERE `id` = "'.$pageID.'"';// запрос строки страницы по ID страницы
$res = mysql_query($sql,$dbcnx);
while ($row=mysql_fetch_assoc($res)){
$pageName=$row[name];// запись в переменную имени страницы
}

$sql='SELECT * FROM pages_temps WHERE `page_ID` = "'.$pageID.'"';// выборка строки шаблона по ID страницы
$res = mysql_query($sql,$dbcnx);
while ($row=mysql_fetch_assoc($res)){
$tempID=$row[temp_ID];// запись в переменную ID шаблона для этой страницы
}

$sql='SELECT * FROM templates_inf WHERE `id` = "'.$tempID.'"';// выборка строки шаблона по ID шаблона
$res = mysql_query($sql,$dbcnx);
while ($row=mysql_fetch_assoc($res)){
$tempPath=$row[temp_path];// запись в переменную пути к шаблону страницы
}

//получение путей к контенту страницы
$j=0; //сброс счетчика
$sql='SELECT * FROM `'.$pageName.'`';// выборка строк всех включений в страницу $pageName
$res = mysql_query($sql,$dbcnx);
while ($row=mysql_fetch_assoc($res)){
$j=$j+1; // считаем количество включений
$incID[$j]=$row[includ_ID];// запись в элемент j массива ID включения
}

//получение пути к номерам включения
$j=0; //сброс счетчика
$sql='SELECT * FROM includ_inf';// запрос строк всех путей включений в главную страницу
$res = mysql_query($sql,$dbcnx);
while ($row=mysql_fetch_assoc($res)){
$j=$j+1;
$incPathT[$j]=$outPath.$row[path];// запись в элемент массива с индексом позиции пути со строки включения (они потом будут
//вставляться в шаблон)

}
$i=0; // в цикле присваиваем пути шаблонов в соответсвии с ID по порядку как они будут в шаблоне
while($i<$j){
$i=$i+1;
$pos=$incID[$i];
$incPath[$i]=$incPathT[$pos];
}


$uppTemp=$outPath.$tempPath;// получение пути к шаблону с учетом пути от корня
include("$uppTemp");// включение шаблона в страницу



PS: я сам только учусь и данный код вполне возможно не совершенен
буду признателен за замечания

Спустя 4 минуты, 29 секунд (28.04.2010 - 21:28) buschrutt написал(а):
вот собственно пример шаблона:


<?
if (!$incPath[1]){$incPath[1]=$outPath.'nullf.php';}; // проверяем если файла с включением нет то меняем на нулевой чтоб не было ошибки
if (!$incPath[2]){$incPath[2]=$outPath.'nullf.php';};
if (!$incPath[3]){$incPath[3]=$outPath.'nullf.php';};
if (!$incPath[4]){$incPath[4]=$outPath.'nullf.php';};
?>
<html>
<head>
<title>
webinset</title>
<link
href="<?echo $outPath;?>css/general.css" rel="stylesheet" type="text/css" charset="UTF-8">
</head>
<body>
<table
class="main">
<tr>
<td
colspan="3" class="tapef">
<?
include("$incPath[1]");?> // первое включение (собственно контент)
</td>
</tr>
<tr>
<td
class="mleft">
<?
include("$incPath[2]");?> // второе включение
</td>
<td
class="mcenter">
<?
include("$incPath[3]");?> // третье включение
</td>
<td
class="mright">
<?
include("$incPath[4]");?> // четвертое включение
</td>
</tr>
</table>


</body>
</html>


Спустя 1 час, 51 минута, 11 секунд (28.04.2010 - 23:19) xotabb написал(а):
можно подумать


_____________
if (isset($beer)) drink($beer) ;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.