Xplisite Posted November 3, 2012 Share Posted November 3, 2012 Bonjour, j'aimerais connaître la manipulation afin de faire apparaître sur ma page d'accueil mon slider en pleine page c'est-à-dire que j'aimerais faire redescendre les colonnes de gauche et de droite afin que le slider puisse faire la taille de ma page . d'avance merci Link to comment Share on other sites More sharing options...
materiel de sablage Posted November 3, 2012 Share Posted November 3, 2012 Il faut greffer ton slider en position "top of pages" , le désactiver ailleurs. ça se fait dans le menu positions des modules. Il prendra alors toute la largeurs , à régler dans ses paramètres pour affiner , ou avec le css. Link to comment Share on other sites More sharing options...
Xplisite Posted November 5, 2012 Author Share Posted November 5, 2012 (edited) bonjour merci pour la reponse mais comment greffer ce module dans top of pages je vois bien le module dans le sous menu position des modules, il est greffé sur homepage content mais impossible de le deplacer vers top of pages.... merci Apres quelques petites recherches, g trouve qu'il fallait ajouter un morceau de code dans le fichier php du module , g deux fichiers, HomeSlide.php HomeSlideer.php j'ai rajouter ce morceau de code function hookLeftColumn($params) { return $this->hookHome($params); } function hookRightColumn($params) { return $this->hookHome($params); } function hookFooter($params) { return $this->hookHome($params); } function hookTop($params) { return $this->hookHome($params); } il m'est maintenant possible de greffer le module la ou je le veux mais la page index de mon site reste blanche une fois le module greffé. d'avance merci Edited November 5, 2012 by Xplisite (see edit history) Link to comment Share on other sites More sharing options...
materiel de sablage Posted November 6, 2012 Share Posted November 6, 2012 je comprends pas pourquoi tu as eu besoin d'éditer le code. Pour greffer un module ça se fait en back office dans l'onglet modules/position en haute de page on choisit le module et le hook où on veut le greffer (le top of pages) auparavant on le supprime du hook de homepage content pour qu'il n'y ait pas de conflit et c'est tout après on adapte les paramètres du slider à sa postion , taille , css etc... Link to comment Share on other sites More sharing options...
Xplisite Posted November 7, 2012 Author Share Posted November 7, 2012 Bonjour merci de l'attention que tu portes a mon probleme, en fait il ne veux pas me greffer le module il me dit que ce module ne peut etre greffer a cet endroit si je conserve le code d'origine... une fois le code changé avec le rajout des lignes ci dessus le module accepte de se greffer mais la page index est toute blanche. Je repasse donc avec le code d'origine est tout rentre a nouveau dans l'ordre. Link to comment Share on other sites More sharing options...
Xplisite Posted November 10, 2012 Author Share Posted November 10, 2012 Bonjour, je suis toujours avec mon probleme de slider, voici le message d'erreur que j'ai en piece jointe merci Link to comment Share on other sites More sharing options...
Xplisite Posted November 15, 2012 Author Share Posted November 15, 2012 personne pour me renseigner ??? Link to comment Share on other sites More sharing options...
JayLab Posted November 16, 2012 Share Posted November 16, 2012 Salut, J'en suis au même point que toi. Pas d'explication claire nulle part ou alors en renvoyant sur : return $this->hookLeftColumn($params); Et je ne comprends pas la logique d'appeller un hook leftColumn pour un hook qu'on veut créer... Voila où j'en suis : J'ai appellé mon hook "SlideShow" Donc dans homeslider.php function install : if (parent::install() OR !$this->registerHook('SlideShow') && $this->registerHook('displayHome') && $this->registerHook('actionShopDataDuplication')) { J'ai ensuite ajouté ma fonction de hook toujours dans le fichier homeslider.php public function hookSlideShow() { return $this->hookDisplayHome(); } Dans header.tpl aprés </head> <div>{hook h="SlideShow"}</div> A ce stade là j'ai les images qui s'affichent. Mais je n'ai pas les .js et les .css Dans la console de debuggage dans la partie assigned templates variables Mon hook n'apparait pas mais les images s'affichent. Si dans override > classes > controller > Front controller.php Je mets class FrontController extends FrontControllerCore { public function initContent() { $this->process(); if (!isset($this->context->cart)) $this->context->cart = new Cart(); if ($this->context->getMobileDevice() == false) { // These hooks aren't used for the mobile theme. // Needed hooks are called in the tpl files. if (!isset($this->context->cart)) $this->context->cart = new Cart(); $this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_SLIDESHOW' => Hook::exec('SlideShow'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), )); } else { $this->context->smarty->assign(array( 'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'), )); } } } ça marche ! Mon hook apparait dans la console de débuggage. Mis à part que je ne veux ce carrousel que sur la home page et pas sur toutes les pages. Mis à part que je ne suis pas sur que ce soit la bonne méthode. Je ne comprends pas qu'il n'y ait pas d'explications claires. Any help ? Link to comment Share on other sites More sharing options...
JayLab Posted November 16, 2012 Share Posted November 16, 2012 J'ai modifié <div>{hook h="SlideShow"}</div> par : {if $page_name == 'index'} <div>{hook h="SlideShow"}</div> {/if} Il n'apparait plus que sur la home. Par contre j'ai toujours les .js et la css sur les autres pages. Any help ? Link to comment Share on other sites More sharing options...
SoluNeXT Posted November 17, 2012 Share Posted November 17, 2012 (edited) Un peu de technique... return $this->QQChose(); que tu trouves dans tes hooks permet en fait de renvoyer le code HTML généré par la méthode QQChose()... les les noms des hooks correspondent aux emplacements autorisés. Donc, dans ton cas, tu as dans ton code de slider ça: function hookLeftColumn($params) { [...] } rajoute simplement ce nouveau hook: function hookHome($params) { return $this->hookLeftColumn($params); } Ce qui veux dire... Sur le Hook Home, renvoyer le même contenu que le Hook LeftColumn pour cet objet ($this) avec les mêmes paramètres ($param). Fais nous un retour! Edited November 17, 2012 by SoluNeXT (see edit history) Link to comment Share on other sites More sharing options...
JayLab Posted November 17, 2012 Share Posted November 17, 2012 Merci SoluNext, C'est justement ça que je ne trouve pas logique function hookHome($params)<br>{<br> return $this->hookLeftColumn($params);<br>} Pourquoi me greffer au HookLeft ? c'est un hook de hook ? Un raccourci ? J'ai actuellement trouvé la solution suivante : Mon hook est "SlideShow" Header.tpl {hook h="SlideShow"} FrontController.php public function initContent() { $this->process(); global $smarty; $page = $smarty->tpl_vars['page_name']->value; if (!isset($this->context->cart)) $this->context->cart = new Cart(); if ($this->context->getMobileDevice() == false) { // These hooks aren't used for the mobile theme. // Needed hooks are called in the tpl files. if (!isset($this->context->cart)) $this->context->cart = new Cart(); if ($page == 'index') { $this->context->smarty->assign(array( 'HOOK_SLIDESHOW' => Hook::exec('SlideShow') )); } $this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), )); } else { $this->context->smarty->assign(array( 'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'), )); } } homeslider.php public function hookSlideShow() { global $smarty; $page = $smarty->tpl_vars['page_name']->value; if (!$this->_prepareHook() && $page != "index") return; // Check if not a mobile theme if ($this->context->getMobileDevice() != false) return false; $this->context->controller->addJS($this->_path . 'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path . 'bx_styles.css'); $this->context->controller->addJS($this->_path . 'js/homeslider.js'); return $this->display(__FILE__, 'homeslider.tpl'); } J'arrive au résultat escompté. Cependant je trouve ça bien compliqué et je ne suis pas sur que ce soit la meilleure façon de faire. Le HookLeftLeftColumn me permet en fait de me passer de l'overrride mais je ne trouve pas ça logique. Question de point de vue ? Link to comment Share on other sites More sharing options...
SoluNeXT Posted November 17, 2012 Share Posted November 17, 2012 Il ne faut pas voir la programmation de PrestaShop comme les bons vieux codes linéaires, mais il faut penser Objet... En retournant dans le HookHome le même contenu que ce qui est retourné par le HookLeftColumn, tu évites de recopier dans HookHome tout ce qui se trouve dans la procédure HookLeftColumn. On appelle ça de l'héritage. Ca signifie que, si un jour il y a une mise à jour de code, tout ce qui sera modifié pour le HookLeftColumn sera automatiquement répercuté au HookHome car il l'utilise comme source de contenu! Link to comment Share on other sites More sharing options...
Xplisite Posted November 21, 2012 Author Share Posted November 21, 2012 bonjour je ne comprend rien a ce qu'il faut faire y aurait il une âme charitable pour mettre un peu de clarté dans cette manipulation ?? (une petite explication pas a pas pourrait etre d'une grande utilité) merci Link to comment Share on other sites More sharing options...
JayLab Posted November 21, 2012 Share Posted November 21, 2012 Lis bien nos deux derniers posts tu as le choix entre 2 solutions qui sont fonctionnelles l'une et l'autre. Pour ma part la mienne fonctionne snas me greffer au hook Home. Link to comment Share on other sites More sharing options...
Xplisite Posted November 24, 2012 Author Share Posted November 24, 2012 l'explication ne me parait pas beaucoup plus claire .... Link to comment Share on other sites More sharing options...
Xplisite Posted November 30, 2012 Author Share Posted November 30, 2012 un petit up .... Link to comment Share on other sites More sharing options...
Xplisite Posted December 3, 2012 Author Share Posted December 3, 2012 desolé d'insister mais ca m'interesse fortement d'avoir de l'aide la dessus... Link to comment Share on other sites More sharing options...
Ninja Of Web Posted December 4, 2012 Share Posted December 4, 2012 Demande a un développeur de t'aider sur ce problème. Link to comment Share on other sites More sharing options...
Xplisite Posted December 4, 2012 Author Share Posted December 4, 2012 ok 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