Autor Zpráva
H13
Profil
Ahoj potřeboval bych poradit se smarty.

Když mám v kořenu např. index.php a v něm odkaz na šablonu $smarty->display('index.tpl');, která je v adresáři templates, vše funguje ok

Když však mám index.php v nějakém adresáři, např. administrator/index.php a v něm $smarty->display('index.administrator.tpl');, pak smarty nedokáže najít šablonu v adresáři templates

Je možný to nějak vyřešit?
luka
Profil *
Smarty to je jedno kde to mas. Nieje jedno ako pristupujes k smarty, tym myslim k triede smarty
H13
Profil
Ke tride smarty mam pristup v pohode, hazi to tuto chybu:

Warning: Smarty error: unable to read resource: "index.administrator.tpl"
in ...smartySmarty.class.php on line 1095

Samozřejmě bych mohl hodit tu třídu do adresáře admin, ale mít pro každý adresář vlastní třídu smarty ?
luka
Profil *
<?php
include_once(../smarty/Smarty.class.php");


$smarty = new smarty;
$smarty->smarty_dir();
$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->display('index.tpl');
?>

toto ti musi fungovat. Jasne ak mas triedu smarty v takomto subore a adresari a sablona sa vola index.tpl
H13
Profil
No to mi samozřejmě funguje, pokud je index.php (soubor, ve kterém je tento kód) v kořenu:

configs
smarty
templates
templates_c
index.php

nefunguje mi to v případě, pokud je index.php v nějakém adresáři:

configs
smarty
templates
templates_c
admin/index.php
zero0x
Profil
to musi fungovat,

uisti sa ze mas dobre nastavene premenne prostredia, ze je subor vytvoreny



- k templates si si nastavil relativnu, alebo absolutnu cestu?? ak sa da, tak nastav absolutnu

potom pristupujes display('adresar/subor.tpl')
H13
Profil
- soubor.tpl - je vytvořený
- přístup k smarty - je v pořádku, normálně funguje když se k němu přistupuje z kořene
- když zadám do souboru index.php, který není přímo v kořenu, ale v jiném adresáři (admin) absolutní cestu k šabloně, pak dostanu tuto chybu:

Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, or is not a directory

to znamená, že jede vše ok, když mám soubor v kořenu, jakmile ho dám do nějakého adresáře, pak nemůže najít adresář se šablonami, protože je vnořen do adresáře .... ???

když změním ve třídě smarty základní nastavení, např. templates na ../templates, templates na ../templates, pak to funguje... jenže to zase nefunguje v souboru, který je v kořenu, protože ten potřebuje buď templates nebo ./templates ...

takže, když vše nechám nepozměněno, pak soubor v kořenu - index.php funguje
a když vložím do souboru index.php v adresáři admin:

$smarty->template_dir = '../templates';
$smarty->compile_dir = '../templates_c';
$smarty->config_dir = '../configs';

tedy změním proměnné v třídě smarty, pak to vše funguje...
luka
Profil *
chlape ak mas sablonu v templates a nazvyva sa moja_sablona.tpl tak k nej pristupis asi takto
<?php
include_once(../smarty/Smarty.class.php");


$smarty = new smarty;
$smarty->smarty_dir();
$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->display('moja_sablona.tpl');
?>

ale ak tu sablonu das do nejakeho foldru s nazvom moj_folder a je v foldri templates tak k nej pristupis takto

<?php
include_once(../smarty/Smarty.class.php");


$smarty = new smarty;
$smarty->smarty_dir();
$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->display('moj_folder/moja_sablona.tpl');
?>

ale da sa aj tak ak nechces aby sa defaultne nazyval folder templates templates ale trebars moje_templates tak pred tym musis urobit asi toto

moje_nastavenie_templates.php
<?php
include_once(../smarty/Smarty.class.php");

class moje_nastavenie_templates extends Smarty{

function smarty_dir(){

$this->template_dir = "moje_templates/";
$this->compile_dir = "/moje_templates_c/";
}
}

?>

a potom v index.php odkial volas smarty nepouzijes klasicky napr. toto


<?php
include_once(../smarty/Smarty.class.php");


$smarty = new smarty;
$smarty->smarty_dir();
$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->display('moj_folder/moja_sablona.tpl');
?>

ale musis volat tvoju novu triedu ktora zdedila triedu smarty. Takze asi takto


<?php
include_once(../smarty/Smarty.class.php");


$smarty = new moje_nastavenie_templates;
$smarty->smarty_dir();
$smarty->compile_check = true;
//$smarty->debugging = true;

$smarty->display('moj_folder/moja_sablona.tpl');
?>

Tak asi tak, dufa ze som na nic nezabudol
Toto téma je uzamčeno. Odpověď nelze zaslat.