2013-07-18 10 views
1

J'essaie (sans succès) d'ajouter deux répertoires parallèles en tant que modèle pour smarty (3).Smarty avec plusieurs modèles parallèles

En bref, je voudrais créer un modèle de base et une autre coutume. Si un fichier personnalisé n'est pas présent, smarty doit utiliser le modèle de base qui est définitivement présent.

Il y a déjà quelque chose qui va faire ça?

Bien sûr, cela fonctionnera même avec l'importation.

Répondre

3

Oui, vous pouvez spécifier plusieurs répertoires de modèles en utilisant setTemplateDir.

Exemple

<?php 

// setup template directories 
$smarty->setTemplateDir(array(
    './templates',   // element: 0, index: 0 
    './templates_2',   // element: 1, index: 1 
    '10' => 'templates_10', // element: 2, index: '10' 
    'foo' => 'templates_foo', // element: 3, index: 'foo' 
)); 

/* 
    assume the template structure 
    ./templates/foo.tpl 
    ./templates_2/foo.tpl 
    ./templates_2/bar.tpl 
    ./templates_10/foo.tpl 
    ./templates_10/bar.tpl 
    ./templates_foo/foo.tpl 
*/ 

// regular access 
$smarty->display('file:foo.tpl'); 
// will load ./templates/foo.tpl 

// using numeric index 
$smarty->display('file:[1]foo.tpl'); 
// will load ./templates_2/foo.tpl 

// using numeric string index 
$smarty->display('file:[10]foo.tpl'); 
// will load ./templates_10/foo.tpl 

// using string index 
$smarty->display('file:[foo]foo.tpl'); 
// will load ./templates_foo/foo.tpl 

// using "unknown" numeric index (using element number) 
$smarty->display('file:[2]foo.tpl'); 
// will load ./templates_10/foo.tpl 

?> 

Vous pouvez obtenir plus d'informations sur ce billet depuis Smarty.

http://www.smarty.net/docs/en/api.set.template.dir.tpl

et ici

http://www.smarty.net/docs/en/resources.tpl#templates.from.specified.template.dir

+0

Je l'ai testé un peu plus loin, sans trop de succès, dans l'espoir d'un simple hireachy de peaux pourraient être archivées. En théorie, l'activation de la variable (include_path) http://www.smarty.net/docs/en/variable.use.include.path.tpl (désactivée à partir de la 3.1) devrait hériter de l'un à l'autre si un fichier échoue. Cela n'a pas fonctionné pour nous. Il y a aussi une fonction que smarty appelle pour chaque modèle qui a échoué et qui pourrait valoir la peine d'être considéré pour un correctif afin de changer la priorité ou l'index du tableau dir du template. – luison

Questions connexes