Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с шаблонизатором.
 
 автор: Sywooch   (24.03.2006 в 03:15)   письмо автору
 
 

Чегото невыходит у меня в моей конструкции :(

При обработке файла с дизайном работает правильно если переменные это статичный HTML
или текст. Но если это РНР скрипт то выводит его исходник.

Пример переменных в файле с дизайном. Вместо них должен подставляться результат работы соответсвующих скриптов! (например меню и всё такое) именно в том месте где указана переменная.

 
<B>@name_site@</B>

@menu@

@content@

<B>@copy@</B>


Пример файла функций что это все обрабатывают

 

$Designs=array();
$DesignOut=''; 
function LoadDesign ($CurDesign='index.htm'){ 
    global $DesignOut, $template, $templates;

    $FN= $templates.'/'.$template.'/'.$CurDesign;
    if (!file_exists($FN)) return false;
    $DesignOut=join('',File($FN));
    return true;
}


 function menu_print($source='menu')
{
    $result = '';
    $meny = file($source);
    foreach ($meny as $row)
    {
        $p_row = explode("::",$row);
        $name = stripcslashes($p_row[0]);
        $url = stripcslashes($p_row[1]);
        //Начинаем собирать кнопку меню
        $result .= "<tr><A HREF=\"{$url}\"><TD width=\"10%\" CLASS=\"1\"
ONMOUSEOVER=\"this.className='2';return true\"
ONMOUSEOUT=\"this.className='1'\">
<center>{$name}</center></TD></A></tr>";
        //Закончили
    }
    return $result;
}
/* ---------------------------------------------------------
-----------------блок вывода инфы короче--------------------
-----------------------И не только--------------------------
--------------------------------------------------------- */
function content()
{
global $include;
DEFINE("MAINE", "start");
DEFINE("LINK1", "humor");
DEFINE("LINK2", "2"); 
DEFINE("LINK3", "3");
DEFINE("LINK4", "4");
$link=empty($_GET['link'])?null:$_GET['link']; 
  switch ($link) {
    case MAINE:
      $page = "./$include/start.php";
    break;
    case LINK1:
      $page = "./$include/1.php";
    break;
    case LINK2:
      $page = "./$include/2.php";
    break;
    case LINK3:
      $page = "./$include/3.php";
    break;
    case LINK4:
      $page = "./$include/4.php";
    break;
    default:
      $page = "./$include/start.php";
    break;
  }
return join('',file($page));
}
/*----------------------------------------------------------
--------------------Закончился блок вывода------------------ 
----------------------------------------------------------*/
/*--Парсер---*/
function Parse (){ 
    global $Designs, $DesignOut, $name_site, $template, $copy;
$mine_menu = menu_print('menu');
$content = content();
        foreach($Designs as $k){
$DesignOut=str_replace("@menu@","$mine_menu",$DesignOut);
$DesignOut=str_replace("@content@","$content",$DesignOut);
$DesignOut=str_replace("@copy@","$copy",$DesignOut);
$DesignOut=str_replace("@name_site@","$name_site",$DesignOut);
$DesignOut=str_replace("@template@","$template",$DesignOut);
}}
function Clr ($des){ 
    global $Designs;
    $Designs[$des]='';
}

    


Помогите пожалуйста.
И не сильно матюгайте если вопрос тупой.

PS/ Если кто непонимает на этих огрызках кода я прикрепил архив с полным исходником.
Если получиться помочь то или пришлите на sywooch @ mail . ru или оставьте ответ на этом форуме.

   
 
 автор: ck   (24.03.2006 в 03:27)   письмо автору
 
   для: Sywooch   (24.03.2006 в 03:15)
 

Присылайте. e-mail в анкете

   
 
 автор: Sywooch   (24.03.2006 в 11:18)   письмо автору
 
   для: ck   (24.03.2006 в 03:27)
 

Да понял.
Ответов масса :(
Ну помогите хоть кто нибудь, ПОЖАЛУЙСТА.

   
 
 автор: cheops   (24.03.2006 в 14:39)   письмо автору
 
   для: Sywooch   (24.03.2006 в 03:15)
 

Всё правильно, для того чтобы PHP-работал при подстановке str_replace() его нужно отдельно пропускать через фунцию eval(). Вообще лучше не использовать PHP-код в шаблонах - сильно запутыват код - можно долго ошибу искать, если вообще такие шаблоны удасться корректно запустить.

   
 
 автор: Paxa   (24.03.2006 в 14:50)   письмо автору
 
   для: Sywooch   (24.03.2006 в 03:15)
 

влом разбираться в твоём тексте но обычно делают так
include("some_file");
эта функция выводит содержимое
если это просто текст то она его выведет как он есть
а если там есть <? .... ?> такие вставки или это кусок кода то обрабатывает как код
в файлах с кодом пропиши в начале <? и ?> в конце а в html и текстовых оставь как есть
тока в файлах которые ты подключаеш через функцию не работает это
у меня все вставки выглядят так
если это подключаемы код то просто
include("./config.php");
если шаблон то
include(choose_file("bottom.htm"));
где choose_file( ) моя функция которая выгледит так

<?
function choose_file($file_name){
$user_id=$GLOBALS["user_id"];
$db=$GLOBALS["db"];
$def_skin=$GLOBALS["def_skin"];
if(
$user_id==0){
$put="./templates/".$def_skin."/html/".$file_name;
if(
is_file($put)){
return 
$put;
}else{
$put="./templates/default/html/".$file_name;
return 
$put;
}
}else{
$res=mysql_query("SELECT * FROM 'users' where (id='$user_id')",$db);
$user=mysql_fetch_array($res);
$put="./templates/".$user[7]."/html/".$file_name;
if(
is_file($put)){
return 
$put;
}else{
$put="./templates/default/html/".$file_name;
return 
$put;
}
}
}
?>

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

html код и вствки типа <?=$var?>

<?=$var?> = <? echo $var ?>

   
 
 автор: Sywooch   (25.03.2006 в 10:38)   письмо автору
 
   для: Paxa   (24.03.2006 в 14:50)
 

Чтот непонял нифига. :(
Дя и меня интерисовал мой вариант шаблонов!

   
 
 автор: Sywooch   (25.03.2006 в 21:11)   письмо автору
 
   для: Sywooch   (25.03.2006 в 10:38)
 

Неужто нет среди прочитавших того кто может помочь?
Мне нужно решение именно с этим кодов.

   
 
 автор: cheops   (25.03.2006 в 22:26)   письмо автору
 
   для: Sywooch   (24.03.2006 в 03:15)
 

Продолжение темы в http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15059.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования