Hello
Deux petites questions sur les templates extensions:
- J'ai vu que les templates extensions étaient obligatoirement placés dans le dossier "template-extensions". Ne pourrait-on pas envisager la possibiliter qu'un plugin puisse définir son propre template extension (dans un cas particulier par exemple)? Et par cconséquent, que le fameux template soit situé dans un dossier du plugin...
- Serait-il aussi envisageable de pouvoir définir un template extension pour la partie admin? (vincent, j'ai vu que tu as déjà évoqué dans la partie anglaise du forum)
Ca pourrait etre assez utile qu'un plugin puisse définir un template extension en partie admin.
Hors ligne
Je n'ai plus en mémoire le principe mais il me semble que si tu veux tu peux assigner n'importe quel fichier en tant que .tpl et dans n'importe quel emplacement.
Donc un plugin devrait pouvoir assigner un template ailleurs que dans template-extension mais je t'avoue que je suis dans les css et que je n'ai pas pris le temps de réfléchir au problème.
La partie Admin: je ne souhaite pas voir de template-extension mais ma réponse précédente devrait t'indiquer la piste à suivre qui devrait être également valable.
8-)
Hors ligne
Justement, j'ai regardé ce que tu avais codé, et le dossier "template-extensions" est codé en "dur" dans la class template.
D'ou ma question ;-)
Il serait préférable de ne pas avoir ce dossier directement dans la classe, non? Je vais essayer de regarder ca de plus pres.
Hors ligne
Dans ton plugin ton handle peut prendre une valeur totalement "originale", par exemple disons 'twist'...
Du coup, le template-extension ne pourra jamais en faire l'échange.
Donc, tu fais bien ce que tu veux, non?
Je ne suis pas clair? Relis attentivement la fonction set_filenames de template.class.php.
8-)
Hors ligne
Je vais regarder ca et faire quelques tests ;-)
Au fait, ca ne pose pas de problème si je déplace la fonction "get_extents" (actuellement dans le fichier extend_for_template.php) dans le fichier admin/include/function.php?
Comme ca, LocalFiles Editor pourra s'en servir, et éventuellement d'autres plugins...
Hors ligne
Déplace, je ne sais pas si c'est le meilleur endroit mais...
Je n'avais pas imaginé qu'elle pourrait être utile ailleurs.
8-)
Hors ligne
Une petite question...
Je suis en train de finaliser LocalFiles Editor.
Il permettra d'édditer un template-extension, mais également d'en créer.
Pour l'instant, le formulaire permettant de créer un nouveau fichier comporte 2 champs:
- Nom du fichier
- Modèle (qui liste les templates-extensions existants, ainsi que les templates "éligibles" dans les répertoires templates existants)
Est-ce que je dois rajouter la possibilité de créer des dossier dans le repertoire "template-extension"?
Une solution serait de pouvoir mettre dans le nom de fichier par exemple:
yoga/local/mon-template.tpl
Il n'y a plus qu'à créer les dossiers yoga et local s'ils n'existent pas.
Je peux aussi faire une liste déroulante des repertoires existants dans template-extension.
Mais il faudra aussi prévoir la possibilité de créer un nouveau ddossier... et le newbie risque d'etre un peu paumé...
Bref, vincent, qu'en penses-tu?
Hors ligne
yoga/local/mon-template.tpl
crée donc le répertoire s'il n'existe pas.
A mon avis, il ne faut pas pour autant l'indiquer comme étant une facilité.
En réalité, je n'ai fait ça que pour permettre à chacun de les organiser à sa guise.
En vrac ou non, cela ne changera rien.
J'espère que tout un chacun comprendra que la partie "distributed" sera enrichie de nouveaux templates (miniatures en vrac, écran de recherche réduit, etc.).
Et donc qu'il ne faudra pas modifier ceux-ci... mais en faire des copies si besoin.
8-)
Hors ligne
VDigital a écrit:
En réalité, je n'ai fait ça que pour permettre à chacun de les organiser à sa guise.
En vrac ou non, cela ne changera rien.
Hum... je me tate...
Tu as raison, et du coup, je serais plus d'avis de faire une liste déroulante "Dossier parent".
Si je veux un dossier perso, je prend mon client ftp, et je vais le créer...
Bref... je vais voir ca ;-)
Et pourquoi pas une dialog box jQuery pour créer un dossier? ;-))
Hors ligne
+1
Hors ligne
Bon... je viens de m'arracher les cheveux avec les templates-extension.
Voila mon problème: dans extended description, je voudrais utiliser 2 templates-extensions (pour remplacer le input du nom de catégorie par un textarea, et pour rajouter quelques infobulles).
Donc (après quelques essais infructueux avec jQuery pour faire ca à la volée -> problème avec les sauts de lignes), je me suis tourné vers les template-extensions.
Problème: dans la fonction set_filenames, on a ca:
foreach ($tpl_extension as $file => $conditions)
{
$localtpl = './template-extension/' . $file;
if ($handle == $conditions[0] and
(stripos(implode('/',array_flip($_GET)),$conditions[1])>0
or $conditions[1] == 'N/A')
and file_exists($localtpl))
{ /* examples: Are best_rated, created-monthly-calendar, list, ... set? */
$this->files[$handle] = '../.' . $localtpl;
/* assign their tpl-extension */
}
C'est ce que je signalais plus haut... tant pis, je vais tricher...
J'assigne donc mon template-extension ainsi dans mon plugin:
$array = unserialize($conf['extents_for_templates']);
$array['../plugins/ExtendedDescription/template/cat_modify.tpl'] = array('categories', 'N/A');
$conf['extents_for_templates'] = serialize($array);
Avec le ../, je remonte donc d'un répertoire, et mon chemin relatif est correct.
MMais le chemin absolu pour smmarty ne le sera plus!
Il faudra donc dans la fonction set_filenames mettre un chemin absolu ainsi:
foreach ($tpl_extension as $file => $conditions)
{
$localtpl = './template-extension/' . $file;
if ($handle == $conditions[0] and
(stripos(implode('/',array_flip($_GET)),$conditions[1])>0
or $conditions[1] == 'N/A')
and file_exists($localtpl))
{ /* examples: Are best_rated, created-monthly-calendar, list, ... set? */
$this->files[$handle] = realpath($localtpl);
/* assign their tpl-extension */
}
Donc ma question, en plus du chemin relatif qui me parait indispensable (smarty a du mal avec les chemins relatifs!) , ne serait-il pas bon de virer le './template-common' de la fonction?
Dernière modification par P@t (2008-10-01 17:35:53)
Hors ligne
Je regarde comment faire ce soir...
8-)
Hors ligne
Je n'ai toujours pas compris le besoin.
Je sais substituer l'appel d'un set_filenames par un
template->files[$handle] = dirname(__FILE__) . '/xxxxxx.tpl';
J'ai l'impression que tu cherches à installer la permutation de templates afin que le plugin puisse être désactivé sans conséquence.
1 - Je préfère que le plugin fasse le set_filenames.
2 - Peut-être que tu as plus besoin d'un event render que tu n'as pas.
Dans tous les cas, vas-y si tu crois que ta solution est là.
Mais attention, il te manque peut être un trigger à mettre dans extend_for_templates.php afin de maintenir tes substitutions en place même en cas de....
8-)
Hors ligne
VDigital a écrit:
Je n'ai toujours pas compris le besoin.
Je sais substituer l'appel d'un set_filenames par un
template->files[$handle] = dirname(__FILE__) . '/xxxxxx.tpl';
Oui, cela revient à faire un set_filenames ;-)
Le problème, c'est que je veux changer un fichier template sur une page d'admin qui n'a pas de triggers!
Je reprend mon exemple, je veux substituer le fichier cat_modify.tpl
VDigital a écrit:
J'ai l'impression que tu cherches à installer la permutation de templates afin que le plugin puisse être désactivé sans conséquence.
1 - Je préfère que le plugin fasse le set_filenames.
2 - Peut-être que tu as plus besoin d'un event render que tu n'as pas.
J'aimerai bien que le plugin fasse tout simplement un set_filenames pour substituer un template.
Faut-il encore un trigger entre le set_filename original et le assign_var_from_handle.
Mais je n'ai pas envie de rajouter des triggers à tout va... et le render trigger n'est pas adapté à ce que je veux faire.
C'est pour ca que la solution du template_extent est vraiment idéal
VDigital a écrit:
Mais attention, il te manque peut être un trigger à mettre dans extend_for_templates.php afin de maintenir tes substitutions en place même en cas de....
Je ne veux pas que extend_for_templates.php s'occupe des templates extensions rajoutés par plugins.
Le plugin rajoute ses propres template-extensions directement dans le main.inc.php, directement en modifiant le $conf['extents_for_templates']
Ce n'est pas un soucis...
Dernière modification par P@t (2008-10-02 00:16:37)
Hors ligne
Je vais peut-etre faire une fonction template genre:
$template->set_template_extent($array)
Elle permettrait aux plugins de rajouter des templates extensions au coup par coup, qui ne sont pas sauvegardés en bdd.
Par contre, je suis toujours d'avis de mettre le './template-common' en base de donnée, et non pas dans la fonction set_filenames.
Hors ligne