Samos Posted November 30, 2018 Share Posted November 30, 2018 Bonjour a tous, Je viens vous écrire aujourd'hui pour vous faire part d'un problème que je rencontre lié au controllers de mon module. Le css ainsi que la balise img de mon tpl ne fonctionne pas je ne comprend pas vraiment pourquoi... <?php class sa_modtaskModuleFrontController extends ModuleFrontController { public function __construct() { parent::__construct(); } public function setMedia() { parent::setMedia(); $this->path = __PS_BASE_URI__.'modules/sa_mod/'; $this->context->controller->addCSS($this->path.'views/css/style.css', 'all'); } public function init() { parent::init(); } public function initContent() { parent::initContent(); $this->setTemplate('module:sa_mod/views/templates/front/task.tpl'); } } Voila comment j'essaye d’intégrer mon css dans mon controller. (bien évidemment j'ai mon fichier style.css au bon endroit) Pour mon .tpl je fais une simple balise <img> avec le bon chemin, cependant il ne trouve pas l'image et n'affiche que le alt. Merci. Link to comment Share on other sites More sharing options...
Samos Posted December 4, 2018 Author Share Posted December 4, 2018 Une idée ? Link to comment Share on other sites More sharing options...
YopixelAE Posted December 4, 2018 Share Posted December 4, 2018 Bonjour, Pour le CSS, dans votre public function setMedia : Essayez : $this->context->controller->addCSS($this->_path.'views/css/style.css', 'all'); Ou bien : $this->path_myroot = _PS_BASE_URL_SSL_.__PS_BASE_URI__.'modules/sa_modtask/'; // Ou "sa_mod" suivant nom du dossier. $this->context->controller->addCSS($this->path_myroot.'views/css/style.css'); Pour l'image, vérifiez sur la page l'affichage de l'attribut src de la balise image. Le chemin n'est probablement pas correct. Link to comment Share on other sites More sharing options...
Samos Posted December 4, 2018 Author Share Posted December 4, 2018 (edited) Merci énormément pour votre réponse, cependant ça ne fonctionne pas. Je vous met l'arborescence de mon module et la balise src de mon tpl. C'est normalement le bon chemin. task.tpl : <img src="../../img/entete.png" alt="logo"> Voici pourtant ce qui est affiché. Encore merci pour votre aide ! Edited December 4, 2018 by Samos (see edit history) Link to comment Share on other sites More sharing options...
YopixelAE Posted December 4, 2018 Share Posted December 4, 2018 Le chemin relatif de votre image affiche quoi ? src="../../img/entete.png" Regardez le code source pour le savoir. Vous pouvez également utiliser un chemin absolu exemple : src="{$my_img|escape:'htmlall':'UTF-8'}" en ayant assigné la variable $my_img à Smarty ou encore src="{$base_dir}/suite du chemin" Link to comment Share on other sites More sharing options...
Samos Posted December 4, 2018 Author Share Posted December 4, 2018 8 minutes ago, YopixelAE said: Le chemin relatif de votre image affiche quoi ? modules/samod/views/img/entete.png 11 minutes ago, YopixelAE said: Vous pouvez également utiliser un chemin absolu exemple : src="{$my_img|escape:'htmlall':'UTF-8'}" en ayant assigné la variable $my_img à Smarty Dans mon controller dans initContent() : $this->context->smarty->assign('my_img', ($this->module->path).'/views/img/entete.png') peut être que je m'y prend mal car ca ne marche pas? 16 minutes ago, YopixelAE said: src="{$base_dir}/suite du chemin" Non 😢 Merci de votre aide Link to comment Share on other sites More sharing options...
YopixelAE Posted December 4, 2018 Share Posted December 4, 2018 Essayez : $this->context->smarty->assign( array( 'my_img' => $this->_path.'img/entete.png', 'my_img_folder' => $this->_path.'img/' ) ); $this->templateFile = 'module:sa_mod/views/templates/front/task.tpl'; return $this->display($this->templateFile); Link to comment Share on other sites More sharing options...
Samos Posted December 4, 2018 Author Share Posted December 4, 2018 Toujours rien... 1 hour ago, YopixelAE said: return $this->display($this->templateFile); La page ne se charge pas avec display, en le changeant par setTemplate elle se charge mais toujours pas d'image ni de css. Link to comment Share on other sites More sharing options...
YopixelAE Posted December 4, 2018 Share Posted December 4, 2018 Mettez-en ligne à télécharger votre module au format .zip Ce sera plus clair. Sur PrestaShop 1.7 vous pouvez aussi insérer votre CSS de cette façon : $this->context->controller->registerStylesheet('modules-sa', 'modules/' . $this->name . '/views/css/style.css', ['position' => 'bottom', 'priority' => 150]); Pour l'image, je pense que le chemin affiché en front-office n'est pas complet. Link to comment Share on other sites More sharing options...
Samos Posted December 4, 2018 Author Share Posted December 4, 2018 (edited) samos.zip Voila encore merci pour votre aide ! 🙏 Edited December 5, 2018 by Samos (see edit history) Link to comment Share on other sites More sharing options...
YopixelAE Posted December 5, 2018 Share Posted December 5, 2018 Ci-dessous un fichier controllers>front>task.php fonctionnel Image et CSS chargés (sans utiliser le setMedia) Ajoutez dans votre task.tpl : <img src="{$_IMGfolder}entete.png" alt="logo"></img> Et en fin de fichier task.tpl : <link rel="stylesheet" href="{$_CSSpath}/style.css" type="text/css"> Fichier task.php : <?php class SamodTaskModuleFrontController extends ModuleFrontController { public function __construct() { parent::__construct(); } public function init() { parent::init(); } public function initContent() { parent::initContent(); $this->path_myroot = _PS_BASE_URL_SSL_.__PS_BASE_URI__; $this->context->smarty->assign(array( '_IMGfolder' => $this->path_myroot.'modules/samod/views/img/', '_CSSpath' => $this->path_myroot.'modules/samod/views/css/' ) ); $this->templateFile = 'module:samod/views/templates/front/task.tpl'; $this->setTemplate($this->templateFile); } } Résultat : 1 Link to comment Share on other sites More sharing options...
Samos Posted December 5, 2018 Author Share Posted December 5, 2018 2 hours ago, YopixelAE said: Ci-dessous un fichier controllers>front>task.php fonctionnel Image et CSS chargés (sans utiliser le setMedia) Ajoutez dans votre task.tpl : <img src="{$_IMGfolder}entete.png" alt="logo"></img> Et en fin de fichier task.tpl : <link rel="stylesheet" href="{$_CSSpath}/style.css" type="text/css"> Merci infiniment, je pensais que c'était peine perdue. Je vais de suite essayer ! Mille merci ! 😁😮 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