|
|
|
| Чегото невыходит у меня в моей конструкции :(
При обработке файла с дизайном работает правильно если переменные это статичный 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 или оставьте ответ на этом форуме. | |
|
|
|
|
|
|
|
для: Sywooch
(24.03.2006 в 03:15)
| | Присылайте. e-mail в анкете | |
|
|
|
|
|
|
|
для: ck
(24.03.2006 в 03:27)
| | Да понял.
Ответов масса :(
Ну помогите хоть кто нибудь, ПОЖАЛУЙСТА. | |
|
|
|
|
|
|
|
для: Sywooch
(24.03.2006 в 03:15)
| | Всё правильно, для того чтобы PHP-работал при подстановке str_replace() его нужно отдельно пропускать через фунцию eval(). Вообще лучше не использовать PHP-код в шаблонах - сильно запутыват код - можно долго ошибу искать, если вообще такие шаблоны удасться корректно запустить. | |
|
|
|
|
|
|
|
для: 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 ?> | |
|
|
|
|
|
|
|
для: Paxa
(24.03.2006 в 14:50)
| | Чтот непонял нифига. :(
Дя и меня интерисовал мой вариант шаблонов! | |
|
|
|
|
|
|
|
для: Sywooch
(25.03.2006 в 10:38)
| | Неужто нет среди прочитавших того кто может помочь?
Мне нужно решение именно с этим кодов. | |
|
|
|
|