Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-10-2008 09:46:52

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[Résolu]"Templatisation" avec possiblité personnalisation script

Salut,

J'ai commencé à bosser sur Zend il y a peu temps, et j'ai très vite pris goût smile

Après avoir lancé quelques appli "simples", sites de sociétés + back office, je me sens prêt à repenser l'ensemble de l'existant dans la société dans laquelle je me trouve (depuis 2 mois :p).

Cette société possède un petit paquet de clients à qui ils fournissent des sites internet parmi un choix de templates. Actuellement c'est géré plus ou moins à l'arrache....

Comme on me charge de reprendre le flambeau je vais évidemment tout refondre proprement.

Voilà la problématique :
Comme avec tous les produits "templatisés", il y a les clients qui sont satisfaits du template tel qu'il est, et ceux qui veulent toujours le petit truc en particulier dans telle ou telle page.

"A l'ancienne", j'aurais fait ça avec des dossiers "template1", "template2" etc., un dossier par client, vers lequel pointe le domaine, qui contient les ressources (images, css) du site, avec dans les pages des beaux includes des scripts du template choisi.

Ex: index.php

Code:

// Avec un test sur le domaine pour récupérer en BDD le template du client
....
$client_template = 'template1';

require_once('../_templates/' . $client_template);

Très grossièrement hein smile

Et si le client souhaitait une page plus personnalisée, j'aurais dupliqué le fichier "index.php" du template pour le foutre en dur dans le dossier du client.

Mais smile, je souhaite utiliser les MVC et Zend_Layout.

Je pense donc faire un module par Template (parce que chaque template proposera quand même des choix de techno différents, ce n'est pas que le graph qui change).

En fonction du client toujours, je charges les bonnes données et je renvoie vers les vues.

Sauf que, je me demande qu'elle est la meilleure méthode dans le cas où le client souhaite la petite modif qui fait que je ne peux pas utiliser les scripts par défaut de l'application.

D'après vous, où placer les scripts (vues) particuliers du client et comment les associer dans le controller en question ?


Merci,

A+ benjamin.

Dernière modification par Delprog (21-10-2008 19:53:39)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#2 21-10-2008 10:36:07

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: [Résolu]"Templatisation" avec possiblité personnalisation script

Bonjour,

je dis peut-etre une bétise mais si tu fais 1 module par template tu va te retrouver avec :


/modules
-----/template1
----------/controleur
----------/views
------------/scripts
------------ ici tes vues du template1

-----/template2
----------/controleur
----------/views
------------/scripts
------------ ici tes vues du template2
etc ....

apres si tu veux utiliser les même vues, tu peux créer ton propre super contrôleur qui initialise la vue et lui change son répertoire  avec un truc du genre :

Code:

function init(){
        parent::init();
        $this->_helper->viewRenderer->setViewScriptPathSpec('/index/:action.phtml');
}

J'espere répondre à ta question.

Hors ligne

 

#3 21-10-2008 11:01:55

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]"Templatisation" avec possiblité personnalisation script

Salut ichevc02,

Merci pour l'info, mais tu as mal saisi la question smile

Ca ne me gène pas d'avoir des vues différentes pas modèle, au contraire, elles seront différentes.

Le problème est que, si un client souhaite un template1 (donc module 'template1') par ex., et qu'il souhaite une vue un peu plus personnalisée pour l'index, je ne peux pas utiliser la vue par défaut du module, je dois dupliquer la vue 'index.phtml' spécifiquement pour ce client et lui associer (au client).

Sauf que je ne sais pas où placer la vue en question et comment l'associer au client.

Alors j'ai une idée mais je sais pas (mais en fait je crois que je sais) si c'est bien propre.
Par un moyen que je n'ai pas encore décidé, admettons qu'à l'arrivée dans l'action je sache déjà si le client possède une vue personnalisée ou non.

Si j'ai une arbo du genre :

Code:

application/
    template1/
        controllers/
        models/
        views/
            scripts/
                default/
                    index/
                        index.phtml
                truc_qui_identifie_client/
                    index/
                        index.phtml
    template2/
        controllers/
        models/
        views/
            scripts/
                default/
                    index/
                        index.phtml
                truc_qui_identifie_client/
                    index/
                        index.phtml

Encore faut-il que je puisse changer le dossier des vues pour paramétrer le dossier "default" au frontcontroller.

Après pour redéfinir la vue à utiliser à la volée, je peux effectivement utiliser le code que tu m'as donné.

Et malgré tout ça, je me demande si c'est vraiment la bonne solution. Par qu'avoir une notion de client dans l'arbo de l'appli, ça ne m'enchante vraiment pas...


Merci,


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#4 21-10-2008 15:17:47

zudre
Membre
Date d'inscription: 10-05-2007
Messages: 21

Re: [Résolu]"Templatisation" avec possiblité personnalisation script

Personnellement, je mettrais en place un système (lié à une table ou non) qui indique si le client a un set de templates différents des autres.  La table contiendrait également le chemin où trouver ces templates.

Donc, si un client a une (ou des entrées) dans la tables, tu pourrais simplement ajouter les path à ton objet view avec :

Code:

$view->addScriptPath('/path/to/app/views');

Tu peux voir la doc ici http://framework.zend.com/manual/en/zen … ript-paths

Hors ligne

 

#5 21-10-2008 19:52:58

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]"Templatisation" avec possiblité personnalisation script

Bonsoir Zudre,

Je comptais effectivement gérer les clients en BDD, et stocker également leurs paramètres particuliers, comme les custom views. Donc grâce à mes objets clients je pourrai facilement connaitre les vues qui lui sont particulières et bien automatiser tout ça.

Le bout de code que tu m'as donné était celui qui me manquait, je n'avais pas lu cette partie là de la doc. smile

Au final je pense que pour ceux qui souhaitent des vues particulières, elles seront simplement stockées dans leur dossier présent dans la partie 'public', avec les ressources (images, css).


Merci pour le tuyau, c'était tout bête.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages