mica94 Posted November 16, 2011 Share Posted November 16, 2011 Bonjour, j'ai créé un petit module tout simple qui permet d'ajouter des blocs dans la home Ce module s'appelle elementsblocshome Ce module se trouve dans themes/MonTheme/modules Je veux maintenant lui assigner un CSS spécifique à mon theme. J'ai donc ce code dans mon fichier elementsblocshome.php public function hookHome($params) { global $smarty; $smarty->assign(array()); Tools::addCSS(($this->_path).'elementsblocshome.css', 'all'); return $this->display(__FILE__, 'elementsblocshome.tpl'); } Et j'ai ainsi créé le fichier elementsblocshome.css dans themes/MonTheme/modules/elementsblocshome Malheureusement aucun appel a ce fichier css n'est fait, tandis que les modifs que j'apporte à elementsblocshome.tpl sont bien prises en compte. Qu'ai-je manqué ? Merci Link to comment Share on other sites More sharing options...
Jacques Biais Posted November 16, 2011 Share Posted November 16, 2011 Bonjour, Le css des modules se place dans: themes/Montheme/css/modules/elementsblocshome/elementsblocshome.css Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 Merci pour ta reponse. J'ai remarqué 2 choses: 1- j'ai fait une erreur dans mon premier post, mon css se trouve bien dans themes/Montheme/css/modules/elementsblocshome/elementsblocshome.css 2- Apparemment je fais fausse route depuis le debut, mon module elementsblocshome n'est pas appelé depuis themes/MonTheme/modules/elementsblocshome mais depuis modules/elementsblocshome Il me manque apparemment l'information permettant de definir que mon module doit etre appelé depuis themes/MonTheme/modules/elementsblocshome Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 Personne n'a une idée de ce qui me manque ? Link to comment Share on other sites More sharing options...
Jacques Biais Posted November 16, 2011 Share Posted November 16, 2011 Un module doit être dans le répertoire modules du site, le répertoire modules du thème ne sert qu'à mettre le tpl (par exemple un module d'origine que l'on modifie et afin de préserver les futures mises à jour, on créait un dossier du même nom que le module et que l'on place dans le répertoire module du thème (ce dossier ne contient que le tpl modifié). Prestashop regarde en priorité dans ce répertoire et tient compte des tpl s'y trouvant. Pour que le css soit pris en compte il faut déclarer le module ou alors placer le css dans le dossier du module avec appel depuis le TPL (inconvénient: une erreur w3c) ou alors mettre le css directement dans le global.css. Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2011 Share Posted November 16, 2011 essaye avec : public function hookTop($params) { global $smarty, $css_files; $smarty->assign(array()); $css_files[($this->_path).'elementsblocshome.css'] = 'all'; Tools::addCSS(($this->_path).'elementsblocshome.css', 'all'); return $this->display(__FILE__, 'elementsblocshome.tpl'); } Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 Un module doit être dans le répertoire modules du site, le répertoire modules du thème ne sert qu'à mettre le tpl Ok merci je ne savais pas Pour que le css soit pris en compte il faut déclarer le module Peux-tu m'expliquer comment faire stp ? ou alors placer le css dans le dossier du module avec appel depuis le TPL (inconvénient: une erreur w3c) C'est ce que j'essaie de faire en prenant pour exemple un autre module avec son css declaré dans le dossier du module(comme blocksearch par exemple)... mais sans succes ou alors mettre le css directement dans le global.css. Oui ça fonctionne impecc mais justement je ne veux pas trop surcharger le global.css essaye avec : public function hookTop($params) { global $smarty, $css_files; $smarty->assign(array()); $css_files[($this->_path).'elementsblocshome.css'] = 'all'; Tools::addCSS(($this->_path).'elementsblocshome.css', 'all'); return $this->display(__FILE__, 'elementsblocshome.tpl'); } J'ai essayé ceci sans succes... en ce qui me concerne c'est hookHome a la place de hookTop mais ça ne change rien... Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2011 Share Posted November 16, 2011 c'est hookTop et non pas hookHome qu'il faut utiliser. si ça fonctionne pas essaye de remplacer ($this->_path).'elementsblocshome.css' par : _MODULE_DIR_.'/elementsblocshome/elementsblocshome.css' (je suppose que le nom du module est elementsblocshome) Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 c'est hookTop et non pas hookHome qu'il faut utiliser. si ça fonctionne pas essaye de remplacer ($this->_path).'elementsblocshome.css' par : _MODULE_DIR_.'/elementsblocshome/elementsblocshome.css' (je suppose que le nom du module est elementsblocshome) Je suis un peu perdu la... Mon module fonctionne bien avec hookHome... C'est un module qui ne concerne que la home, je n'en ai pas l'utilité dans les autres pages Il est greffé sur homepage content J'ai tout de meme testé en mettant donc hookHome, mais la plus rien ne s'est affiché. J'ai ensuite un peu bidouillé en faisant ceci public function hookTop($params) { global $smarty, $css_files; $smarty->assign(array()); $css_files[_MODULE_DIR_.'/elementsblocshome/elementsblocshome.css'] = 'all'; Tools::addCSS(_MODULE_DIR_.'/elementsblocshome/elementsblocshome.css', 'all'); return $this->display(__FILE__, 'elementsblocshome.tpl'); } public function hookHome($params) { $this->hookTop($params); return $this->display(__FILE__, 'elementsblocshome.tpl'); } La mon module s'affiche bien, mais le css utilisé est toujours "global.css", je n'ai toujours aucun appel a "elementsblocshome.css" Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2011 Share Posted November 16, 2011 tu l'as désinstallé entre temps pour valider le nouveau hook ? Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 Oui Avec ta methode(donc sans mettre de hookHome), lorsque je souhaite greffer mon module sur Homepage Content, j'ai le message "impossibled egreffer le module sur ce hook", et en ajoutant les lignes citées plus haut(hookHome), ça ne change rien à mon souci de css... Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2011 Share Posted November 16, 2011 tu devrais peut être relire le manuel d'utilisation, en particulier le passage de greffe de modules Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 C'est ce que j'ai fait, et je peux lire ceci Pour personnaliser la greffe d'un module sur un point d'accroche, vous devez lui déterminez sa fonction PHP pour le point d'accroche. Donc ça veut dire que si je veux accrocher un module à Homepage Content, je dois donc utiliser hookHome... Je n'ai toujours pas compris pourquoi tu veux utiliser hootTop ? Tous ces soucis sont "embetants" d'un point de vue intellectuel car je comprends pas et ça m'enerve, mais je peux facilement contourner le probleme en utilisant global.css... Mais la j'ai un nouveau souci: les traductions ! dans mon fichier elementsblocshome.tpl j'ai ceci {l s="My Text In English" mod="elementsblocshome"} Et lorsque je veux le traduire... et ben je ne trouve pas la section "elementsblocshome" dans "traduction des modules"... Et ça c'est deja plus embetant... Je pense que c'est lié, que mon module n'est pas reconnu comme il le faut par prestashop. Une idée ? Link to comment Share on other sites More sharing options...
coeos.pro Posted November 16, 2011 Share Posted November 16, 2011 Donc ça veut dire que si je veux accrocher un module à Homepage Content, je dois donc utiliser hookHome... OUI pourquoi tu veux utiliser hootTop ? c'est pas moi qui veux, c'est prestashop, sinon ça marche pas euh... tu es sûre que tu as bien lu et relu la doc ? A ta place je commencerais par faire le module "mymodule" : http://forge.prestashop.com:8081/pages/viewpage.action?pageId=3801216 Link to comment Share on other sites More sharing options...
mica94 Posted November 16, 2011 Author Share Posted November 16, 2011 J'ai finalement reussi aussi bien pour mon css que pour mes traductions. Effectivement le hookTop a bien été requis mais ce n'est pas dans la page que tu m'as donnée que c'etait indiqué En fait mon module "elementsblocshome" est le "mymodule" du tuto que j'ai modifié, donc j'avais deja bien tout lu. Mais en fait apres plusieurs tests j'ai compris qu'il fallait declarer le css dans le hookTop et le reste dans le hookHome Mon code final donne ça, je l'ai renommé en "blocshome"et nettoyé pour que ce soit pus propre class BlocsHome extends Module { public function __construct() { $this->name = 'blocshome'; $this->version = '1.0'; $this->tab = 'front_office_features'; $this->author = 'MoiMeme'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Différents blocs pour la home'); $this->description = $this->l('Permet de créer différents blocs dans la home'); } public function install() { if (parent::install() == false OR $this->registerHook('home') == false) return false; return true; } public function hookTop($params) { global $smarty; $smarty->assign(array()); Tools::addCSS(($this->_path).'blocshome.css', 'all'); } public function hookHome($params) { global $smarty; $smarty->assign(array()); return $this->display(__FILE__, 'blocshome.tpl'); } } Merci pour votre aide a tous Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now