Как можно отключить Compiler в Smarty

DenVeroid

Новичок
Как можно отключить Compiler в Smarty

вопрос, можноли отключить в смарти компиляцию, ну то, что в директории "/templates_c" записываются файлы такого рода %%-13^%%-135052920^header.tpl.php

и если можно то в каком месте отключается
да кстати, отключение не повлияеет на скорости или производительности, или что там ещё?
 

lucas

Guest
Очень жаль, что месье не удосужился разобраться в том, каким образом работает Smarty, хотя бы прочитав введение к документации, ибо сделав это, он попросту не смог бы вынести из себя такие вопросы.

Однако, еще не все потеряно -- http://smarty.php.net/manual/ru/what.is.smarty.php.

Теперь, когда понятно, что отключить компилирование нельзя, ибо это равносильно отключению самого Смарти, стоит задаться таким вопросом -- зачем это могло понадобиться?

P. S.: Конечно, можно задействовать force_compile и самописный костыль для очистки compile_dir, но никто не сможет объяснить мне пользу, привносимую этим извращением.
 

DenVeroid

Новичок
ааа... во-то оно как, правдо уже сделал по другому

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

ну ладно щас в одном шаблоне делаю названия файлов разными
default1/categories.tpl для первого шаблона
default2/ncategories.tpl для второго шаблона
 

lucas

Guest
1. Мну иногда поражается, что может изобрести воспаленный человеческий мозг для решения своей "проблемы"...

2. А как насчет сохранения (по-прежнему) одного шаблона, но передачи внутрь его параметра n и последующего условного ветвления?
 

DenVeroid

Новичок
извени я несовсем понял что ты имееш веду

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

где потом подставляется в

PHP:
      if($_COOKIE['styles'] == ''){
               $styles_dir = $default_styles_dir;
        }else{
                $styles_dir = $_COOKIE['styles'];
                   }

$styles_root   =   "styles/$styles_dir";
$system->display("$styles_root/index.tpl");
ну суть думаю понятна, а проблема заключалась в том что при выборе другого шадлона картинки оставались от старого
 

Demiurg

Guest
смарти никак не влияет на картинки. Все, что от него зависит - это получившийся html. Так что давай говорить о "картинках" на уровне тегов.
 

DenVeroid

Новичок
Demiurg, всё верно, просто тут из-за компилятора проблемка небольшая, так как я уже сказал имеется несколько шаблонов то есть директорий в которых лежат *.tpl файлы шаблона, и вкаждой директории они все одинаковые (имена файлов) но смарти компелирует как за один, поэтому и пришлось в каждой директории называть по разному файлы в одной "categories.tpl" в другой так "ncategories.tpl" чтобы небыло совпадений

мда, както запутанно обьяснил по ходу
 

FreeSpace

Чукча-читатель
Взято из сорцов смарти:
Код:
    /**
     * Set this if you want different sets of compiled files for the same
     * templates. This is useful for things like different languages.
     * Instead of creating separate sets of templates per language, you
     * set different compile_ids like 'en' and 'de'.
     *
     * @var string
     */
    var $compile_id            = null;
Это случайно не то, что тебе нужно?
 

DenVeroid

Новичок
в отьезде был, поэтому так долго неотвечал

FreeSpace я чёт немогу разобраться как использовать, я заменил

$compile_id = null;

на

$compile_id = en;

но изменений никакого, или мож ещё гдето надо прописать?
 

lucas

Guest
DenVeroid

Мысль была такая: для разных "директорий в которых лежат *.tpl файлы шаблона" ставить разные compile_id'ы, дабы не было ситуации, что "смарти компелирует [их] как за один".
 

DenVeroid

Новичок
понятно, я тут немного поразмышлял, и пришол к такому выводу

$styles_path = $site_path.'styles/'.$styles_dir; путь к шаблонам
$system->assign("styles_path",$styles_path);

и потом в шаблонах использовать подключение таким образом
{include file="$styles_path/header.tpl"}

а не так как было раньше

{include file="header.tpl"}


вся проблема заключалась только при подключающих файлов через include, теперь точно указывается путь
 

lucas

Guest
Видится мне, решение FreeSpace'а было более элегантным...
Но на нет и суда нет... :)
 

advocat

developer
я только не понимаю, что мешало сделать например:

$smarty->display($style_path.'base.tpl', $styles_id);

?
 
Сверху