Помогите разобраться с шаблоном

Статус
Закрыто для дальнейших ответов.

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Здравсвуйте, это index.php

<?php
include ("header.php"); //Подключаем верх страницы
....
$catalog = "includs/";
$_GET['act'] = (isset($_GET['act'])) ? $_GET['act'] : ""; //Если $_GET['act'] не существует, то $_GET['act'] = ""

/*Подключаем динамическую(изменяемую) часть*/
switch($_GET['act']) //Селективный выбор(одно из значений $_GET['act'])
{

case "photo":
$page = "photo";
break;

case "music":
$page = "music";
break;

default:
$page = "main";
break;

}

include $catalog.$page.".php"; //Подключаем нужный файл из папки includs
....
include ("footer.php"); //Подключаем низ страницы
?>

Например я создал 3 файла в папке templates, это мой индекс будет. что мне нужно вписывать в основной шаблон в ту ячейку, где будет динамическое содержимое , какую переменную или функцию, чтоб пхп "поняло" где именно моё динамическое содержимое будет находится? И где должен находится основной файл шаблона? Прямо тут, в индексе, или там где указано default?
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Почитайте и попробуйте переменные: $_SERVER['DOCUMENT_ROOT']- корень сайта dirname(__FILE__) - где лежит ТЕКУЩИЙ файл(не обязательно вызывающий) они сильно упростят вам жизнь, по умолчанию инклудятся файлы из каталога в котором вызывается скрипт(дальше достраивается путь), кстати, я уже писал более короткий и удобный пример данного скрипта:
Код:
<?php
define('DRN', $_SERVER['DOCUMENT_ROOT']."/includes");//определяем абсолютный путь где лежат файлы здесь корень сайта/includes
$arrayLink = array("photo"=>"photo","music"=>"music1");//массив соответствий ключей(GET-запросов) и файлов
if(isset($_GET['act']) && array_key_exists($_GET['act'],$arrayLink))
{
include(DRN."/{$arrayLink[$_GET['act']]}.php");//если данная страница существует то производится инклуд по пути т.е. при music подставится корень/includes/music1.php
}
else
{
//если страницы нет
}
 

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Спасибо, а где посоветуете про это почитать? Может есть документация по составлению шаблона?
Как Вы относитесь к Smarty? Стоит этим заниматься? Иль эт бред полный?
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
php.net По смарти есть документация, по DOMXML есть документация, заниматься стоит, т.к. этим повышаете свой уровень. По шаблонам определенной литературы нет, все зависит от задач для которых используете. Мне например ближе XML->XSLT, но с вашим уровнем кодинга, не обижайтесь, до DOMа в пыхе еще учиться и учиться.
Смарти и попытки самописных шаблонов, вот ваш выбор :)
 

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Спасибо) , я уж не програмист к сож, а больше дизайнер наверное, хотя всё хочется знать понемногу, о, ещё у меня такое строение есть,
хотел спросить.
Вот мне один человек показал такой способ шаблонизации простой, но тут есть , как я считаю один большой недостаток, это то, что в этих
шаблонных файлах , которые я подключаю к индексу не хочет исполняться в упор пхп код. Почему? И как бы вы это исправили? Спасибо


<?php
Error_Reporting(E_ALL & ~E_NOTICE);

if($action==""){$action="main";}
$main="<a href=?action=main>Главная</a>";

$stavr="<a href=?action=stavr>Ставр</a>";

$teh="<a href=?action=teh>Тех характеристики</a>";

$karta="<a href=?action=karta>Наше расположение</a>";

$contacts="<a href=?action=contacts>Наши реквизиты</a>";

$gb="<a href=?action=gb>Гостевая книга</a>";

$partners="<a href=?action=partners>Наши партнеры</a>";

$copyright="<a href=?action=copyright>&copy;DVitaly 2007</a>";

$action.=".tpl";
$content=implode("",file($action));

$page=implode("",file('template.tpl'));
$page=str_replace("%MAIN%",$main,$page);
$page=str_replace("%STAVR%",$stavr,$page);
$page=str_replace("%TEH%",$teh,$page);
$page=str_replace("%KARTA%",$karta,$page);
$page=str_replace("%CONTACTS%",$contacts,$page);
$page=str_replace("%GB%",$gb,$page);
$page=str_replace("%PARTNERS%",$partners,$page);
$page=str_replace("%CONTENT%",$content,$page);
$page=str_replace("%COPYRIGHT%",$copyright,$page);

echo $page;
?>
 

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Собственно только из за этого решил искать более универсальный путь реализации шаблонов ( Да и зачем впрочем реально пхп заниматься, если есть цмски, которые таким как я помогут в этом). А я просто хочу маленькую, но грамотную навигацию по страничкам)
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
для начала, опять же к сокращению кода: str_replace поддерживает массивы :) $content=implode("",file($action)); вот это криво есть file_get_content($action)
$page= array("%test%"=>"то на что меняем"); str_replace(array_keys($array),array_values($array),$shablon);
в самом шаблоне не должно быть уже php кода по концепции. с таким шаблонизатором никак нельзя выполнить внутренний код.
 

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Сорри, но с трудом понял, можете привести пример из моего кода нормальный
?
Или Ваш пример использования с маленьким шаблоном, чтоб я понял что к чему. Ну ёмоё ,
я ж не у кого кусок хлеба не забираю, а прошу только сказать как нормально шаблон сделать, и к тому же про это нигде не написано, а надежда только на Вас и этот форум
 

dvitaly

Well-Known Member
Регистрация
22.05.2008
Сообщения
71
Да, не спорю, пхп не знаю а хочу что то делать, ну так думаю мне ж не обязательно весь учебник читать,
чтоб простой шаблон сделать. А почитал бы с удовольствием, к тому же, как только обстоятельства позволят,
спасибо.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ