как правельно сделать возможность менять шаблон в smarty

DenVeroid

Новичок
как правельно сделать возможность менять шаблон в smarty

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

Никто лучайно не сталкивался с эим вопросом?
 

DenVeroid

Новичок
извеняюсь что описал проблему непонятно, я думаю при просмотре на странице
http://www.shop-script.com/sspremium/index.html
будет понятнее

там на сайте в самом вверху видно выбор шаблонов, скрипт использует в качестве шаблона смарти

вот мне и хотелось узнать как правельнее написать
 

Demiurg

Guest
И в чем проблема ? разложи шаблоны по дирикториям и все.
 

Мутник

Новичок
а ты не думаешь, что смарти компилирует каждый шаблон по отдельности и хранит их по отдельности???? а не результат в сумме?
 

DenVeroid

Новичок
окей, сейчас у меня один шаблон(находиться он в директории templates/new) и выглядит так


PHP:
        $templates_name           =      'new';
        $path_templates           =      $url_site.'templates/'.$templates_name.'/';


        require 'smarty/Smarty.class.php';
        $smarty = new Smarty;
        $tpl = array();
        $smarty->assign('path_templates', $path_templates);
        $smarty->template_dir = $tpl[0]->template_path;
        $smarty->display('index.tpl');

тоесть если делать несколько шаблонов, то в таком случаи нужно подставлять в переменную $templates_name названия директории, из куков, я так понимаю название директории в полне нормально хранить в куках, или можно както иначе?
 

DenVeroid

Новичок
опа, вот как и думал так и получилось, присваиваю переменной $templates_name
имя новой директории с новым шаблоном, а смарти как выводил прошлый шаблон
так и выводит до сих пор, что интересно когда просто переименовываю новую директорию
смарти вообще выводит пустую страницу, так как в куках нет такой директории
Вообщем я незнаю что делать дальше, я даже проверил конкретно проверил что получает
$smarty->template_dir = $tpl[0]->template_path;

всё верно как и должно, но выводит с другого шаблона

если зайти в директорию, куда компелируется, и удалить всё и потом обновить страницу,
то тогда уже смарти выводит новый шаблон
 

Spirit

Guest

maxtor

Guest
Таже проблема была. Ничего лучшего как убрать компиляцию не придумал.
PHP:
$smarty = new Smarty();
$smarty->force_compile   = true;

$smarty->template_dir = 'templates/site/'.$theme_name.'/';
$smarty->display('index.tpl');
 

Demiurg

Guest
не надо менять template_dir либо на крайний случай менять еще и compile_dir.

все делается гораздо проще
$smarty->display($theme_name.'/new/index.tpl');
 

DenVeroid

Новичок
Demiurg, переменная $theme_name что должна содержать? я так понимаю она должна содержать примерно такой путь
c:/server/www/script/templates/new/

да кстати, может ты опечатолся, если я неошибаюсь должно быть наверное так

$smarty->display($theme_name.'/index.tpl');
а не так
$smarty->display($theme_name.'/new/index.tpl');

т.к папка new должна быть в переменной $theme_name


а в шаблонах как тогда подключать файлы, также
{include file="header.tpl"}

или
{include file="$theme_name/header.tpl"}
 

DenVeroid

Новичок
Demiurg, нет, я незнаю, просто я спрашиваю, пока ещё сам не делал, вот и спрашиваю, а то начну делать да не так
 

Demiurg

Guest
ты когда сутра просыпаешь как решаешь проблему, с какой ноги встать ? бабушке звонишь ?
 

DenVeroid

Новичок
не, бабушка постоянно висит в онлайне, так что недозвонишся, а вот дедуше можно


ладно, я ведь спрашивал как правельно сделать
 
Сверху