Jump to content

surcharge des tpl, de quelle manière


Recommended Posts

Bonjour,

 

J'éprouve de sacrées difficultés avec le système de surcharge des différents éléments php,tpl, css etc...J'ai besoin que quelqu'un m'éclaire si possible.

 

Je veux surcharger le fichier "authentication.tpl" qui se trouve en racine de mon thème.

J'ai en effet un module qui va non seulement utiliser 2 hooks propres à la fonctionnalité authentication mais aussi modifier le formulaire de création de compte. Ainsi, je ne souhaite pas modifier le TPL de mon thème mais un TPL propre au module, c'est ce dernier qui doit prendre le dessus.

 

Dois-je surcharger le controller PHP approprié afin de pointer vers le TPL "authentication.tpl" de mon module ou bien est-ce-qu'en positionnant ce TPL au bon endroit (mais où??), celui-ci peut être automatiquement pris en compte à la place du authentication.tpl de mon thème.

 

Voici les chemins testés pour mon tpl, sans succès :

modules/mon_module/override/templates/views/front/authentication.tpl

modules/mon_module/templates/views/front/authentication.tpl

modules/mon_module/authentication.tpl

 

Je ne pige vraiment pas comment je dois m'y prendre pour surcharger ce tpl...

 

La seule solution que j'ai trouvée et qui fonctionne est la suivante :

Je surcharge le controller AuthController en modifiant la fonction initContent() de telle sorte que les display smarty pointer vers le TPL du module :

$this->setTemplate(_PS_MODULE_DIR_.'/mymodule/views/templates/front/authentication.tpl');

Mais j'ai cru lire qu'on pouvait automatiquement surcharger les tpl sans avoir à toucher les controllers

 

Merci énormément du coup de main sur ce point.

Edited by zeojex (see edit history)
Link to comment
Share on other sites

Bonjour Julien,

Je suis sur la version SVN, la version la plus récente de la 1.5 donc.

J'ai en effet essayé ce que vous m'indiquez mais sans succès.

A mon avis je passe à côté de quelque chose car je ne retrouve vraiment pas les comportements logiques...

De la même façon que je trouve un peu étonnant de devoir réinitialiser un module (via le backoffice) à chaque modification de sa classe principale, j'ai l'impression de ne pas m'y prendre correctement ou de ne pas comprendre le mécanisme des modules.

J'explique mon problème dans mon post, il vous parait anormal, normal... ?

Link to comment
Share on other sites

"Dev on Web" c'est l'inverse que je veux faire !

Surcharger mon thème par des modules. J'ai besoin que mon module soit "prioritaire" sur le natif ou même sur le thème de l'utilisateur. Concrètement je veux retravailler le process d'authentification / inscription, ajouter des champs de saisie au formulaire d'inscription et même au formulaire d'auth. Mon module compilant toutes ces fonctionnalités (controllers, tpl, css...hooks...), je veux qu'à son installation il surcharge l'existant.

 

C'est là que je coince...car a priori ce n'est pas possible, tout le monde semble dire qu'il faut faire cela dans un thème.

 

Il y aurait une limite au développement de modules ?

Edited by PSBeginner (see edit history)
Link to comment
Share on other sites

Je vous remet en vrac ma réponse sur un autre sujet similaire :

Le cas du blacktopmenu est à part car :

Dans son arborescence native le fichier css (superfish-modified.css) est dans un dossier css contrairement à la plus part des autres modules ou le css est à la racine du dossier natif c'est pourquoi la plus part des régles de base que l'on trouve ne fonctionne pas pour lui ^^

Puis il faut considérer séparément les fichiers tpl et les assets (img, css, js...)

 

On obtient au final :

Pour les fichiers css d'un module

mon-theme/css/modules/nom-du-module/fichiers css (dans pour blacktop il faut ajouter un dossier css en plus)

 

Pour les tpl :

mon-theme/modules/nom-du-module/fichiers tpl

 

C'est carrément contraignant de travailler ces fichiers de manière séparés mais la logique est celle là donc bon override !

Link to comment
Share on other sites

"Dev on Web" c'est l'inverse que je veux faire !

Surcharger mon thème par des modules. J'ai besoin que mon module soit "prioritaire" sur le natif ou même sur le thème de l'utilisateur. Concrètement je veux retravailler le process d'authentification / inscription, ajouter des champs de saisie au formulaire d'inscription et même au formulaire d'auth. Mon module compilant toutes ces fonctionnalités (controllers, tpl, css...hooks...), je veux qu'à son installation il surcharge l'existant.

 

C'est là que je coince...car a priori ce n'est pas possible, tout le monde semble dire qu'il faut faire cela dans un thème.

 

Il y aurait une limite au développement de modules ?

 

En fait, non. A savoir qu'un des modules que je crée instaure quelques éléments dont des AdminController qui se base sur des controllers existant (j'étends juste le controller et je modifier ce dont j'ai besoin).

 

Rien ne vous empêche de créer un controller étendu et, dans le fichier principal du module, de faire l'inclusion du modèle nouvellement crée.

 

Autant dire que c'est possible mais pas forcément conseiller, non plus. Si tout les modules font de même, on risque un gros soucis. Mais possible, ça l'est.

Link to comment
Share on other sites

merci pour vos réponses.

j'y trouve pas vraiment mon compte, ma question doit être mal posée, donc voilà 2 questions plus concrètes :

1) si je veux réécrire le process d'authentification et d'inscription (controllers, tpl, css...) de prestashop, à quel niveau (thème ou module) prestashop recommande-t-il de faire ce développement ? Et pourquoi ?

2) Préférant grouper ce développement dans un module de telle sorte qu'il soit réutilisable sur d'autre projets et parcequ'il regroupe des évolutions trop majeures selon moi pour être dans un thème, est-il possible d'avoir l'intégralité des fichiers propres à ce développement DANS le module, càd, sans avoir du métier ou de l'ihm positionnés dans le thème ? Je veux une parfaite indépendance de ce lot fonctionnel. Le thème ne doit pouvoir apporter qu'un style visuel, le module restant prioritaire sur le thème.

Edited by PSBeginner (see edit history)
Link to comment
Share on other sites

Rien ne vous empêche de créer un controller étendu et, dans le fichier principal du module, de faire l'inclusion du modèle nouvellement crée.

Je pense que c'est cela que je recherche mais je pensais pouvoir écraser l'authentification et l'inscription (je parle des tpl) simplement en positionnant les nouveaux TPL dans mon module (en conservant l'arbo native)

Edited by PSBeginner (see edit history)
Link to comment
Share on other sites

Je vous ai tous relu.

Attention, je ne parle absolument pas de thème dans ce post mais de module et de surcharge dans le module.

J'ai le fichier authentification.tpl dans mon thème personnalisé et je veux que mon module écrase ce tpl en utilisant ses propres tpl.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...