ritepac Posted November 13, 2012 Share Posted November 13, 2012 (edited) Bonjour, Je débute sur prestashop. J'ai grosso-merdo compris le fonctionnement. Donc pour aller plus loin, je souhaite créer une nouveau HOOK (position) et un nouveau module que je grefferais dessus. J'ai réussi à tout faire : • insertion HOOK en base (absoluteFooter) • création du module (blockretourtop) • admin, je peux installer / désinstaller / greffer le module etc. Pour le dire autrement, ça fonctionne nikel si je le fais sans SURCHARGE OVERIDE. Souhaitant faire les choses le plus proprement possible, je souhaite donc faire la même chose mais en utilisant la SURCHARGE sur une classe. Donc les deux fichiers qui posent soucis sont le fichier de base frontController.php et le fichier /override/classes/frontController.php. Tout d'abord, sur les fofos, beaucoup disent que le fichier /override/classes/frontController.php n'existe pas alors que pour moi, j'ai un fichier rempli à rabord sans y avoir touché. Ensuite, j'ai suivi les tutos et j'ai fais la chose suivante : • mon fichier fontController.php ne change pas. • dans mon fichier /override/classes/frontController.php, je mets cela : if (!self::$initialized) parent::init(); self::$smarty->assign(array( 'HOOK_ABSOLUTE_FOOTER' => Module::hookExec('absoluteFooter') )); return parent::displayFooter(); Sachant que mon fichier /override/classes/frontController.php contenait déjà : public function displayFooter() { // J'AI RAJOUTE LE CODE ICI global $start_time; if (self::$_footer) parent::displayFooter(); if (!$this->ini_get_display_errors()) return; $this->_memory[6] = memory_get_usage(); $this->_time[6] = microtime(true); ... } En espérant avoir été assez clair. J'attends un retour s'il vous plait. Bien à vous. Patrice Edited November 15, 2012 by ritepac (see edit history) Link to comment Share on other sites More sharing options...
ritepac Posted November 13, 2012 Author Share Posted November 13, 2012 Pour compléter mes dires. La solution qui fonctionne sans surcharge dan sle fichier frontController.php est la suivante : public function displayFooter() { if (!self::$initialized) $this->init(); self::$smarty->assign(array( 'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn', array('cart' => self::$cart)), 'HOOK_FOOTER' => Module::hookExec('footer'), 'HOOK_ABSOLUTE_FOOTER' => Module::hookExec('absoluteFooter'), 'content_only' => (int)(Tools::getValue('content_only')))); self::$smarty->display(_PS_THEME_DIR_.'footer.tpl'); //live edit if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) { self::$smarty->assign(array('ad' => $ad, 'live_edit' => true)); self::$smarty->display(_PS_ALL_THEMES_DIR_.'live_edit.tpl'); } else Tools::displayError(); } Link to comment Share on other sites More sharing options...
Hedrad Posted November 13, 2012 Share Posted November 13, 2012 Bonjour, essayez ainsi : <?php class FrontController extendsFrontControllerCore { public function displayFooter() { ........} } Et attention de ne pas confondre, dans le dossier override/classes : _FrontController.php et FrontController.php Link to comment Share on other sites More sharing options...
ritepac Posted November 13, 2012 Author Share Posted November 13, 2012 Bonjour, Hedrad Alors autant pour moi, ma première grosse erreur a été de confondre _FrontController.php et FrontController.php. J'ai fais la modificiation : • j'ai créé fichier FrontController.php qui se présente ainsi : <?php class FrontController extends FrontControllerCore { public function displayFooter() { if (!self::$initialized) $this->init(); self::$smarty->assign(array( 'HOOK_ABSOLUTE_FOOTER' => Module::hookExec('absoluteFooter') )); return parent::displayFooter(); } } et du coup dans mon fichier de base FrontController.php (avant surcharge), j'ai : public function displayFooter() { if (!self::$initialized) $this->init(); self::$smarty->assign(array( 'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn', array('cart' => self::$cart)), 'HOOK_FOOTER' => Module::hookExec('footer'), 'content_only' => (int)(Tools::getValue('content_only')))); self::$smarty->display(_PS_THEME_DIR_.'footer.tpl'); //live edit if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) { self::$smarty->assign(array('ad' => $ad, 'live_edit' => true)); self::$smarty->display(_PS_ALL_THEMES_DIR_.'live_edit.tpl'); } else Tools::displayError(); } J'ai juste ajouter la ligne ABSOLUTE FOOTER qui m'intéresse. Il me mets en bas de la page une erreur. J'attends que la page soit de nouveau accessible pour te fournir l'erreur. Link to comment Share on other sites More sharing options...
ritepac Posted November 13, 2012 Author Share Posted November 13, 2012 Bon la page ne veut plus s'afficher... Link to comment Share on other sites More sharing options...
Hedrad Posted November 13, 2012 Share Posted November 13, 2012 La fonction dans l'override annule l'originale... Du coup, hook_footer, hook_right_column et content_only ne s'affiche plus => d'où la page blanche... Il faut recopier la fonction originale et y intégrer les modifs. Link to comment Share on other sites More sharing options...
ritepac Posted November 13, 2012 Author Share Posted November 13, 2012 Merci de ton attention Hedrad. Bon là c'est la panade car le site ne s'affiche plus du tout. Il me met : Erreur 101 (net::ERR_CONNECTION_RESET) : La connexion a été réinitialisée Alors que j'ai annuler les modifs sur le fichier _FrontController.php (au tout début quand je m'étais trompé de fichier) et aussi la surcharge... :/ Je ne sais pas comment récupérer mon site Oo. Une idée ? Link to comment Share on other sites More sharing options...
ritepac Posted November 13, 2012 Author Share Posted November 13, 2012 Merci Hendrad pour ta réponse. Je testerai une fois que j'aurai résolu le soucis d'erreur 101... ce qui n'est pas gagné. Patrice 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