hicode Posted November 30, 2020 Share Posted November 30, 2020 Hello, i have started following the guide about module creation https://devdocs.prestashop.com/1.7/modules/creation/displaying-content-in-front-office/ but i'm stuck... I have added the registerhook function in the code, but when i go on my back end -> add module on hook, i cant find mymodule on the list . I dont know what is the problem However in the guide the hook name is leftColumn but the correct hook name seems to be displayLeftColumn . ( i have tried both but doesn't work) thanks for helping me Link to comment Share on other sites More sharing options...
elburgl69 Posted December 1, 2020 Share Posted December 1, 2020 Modules attach to hooks during the installation process. Once installed, they don't automatically attach to hooks you implement in the code. Have you tried an uninstall - install or the reset option on the module? Rg, Leo Link to comment Share on other sites More sharing options...
hicode Posted December 1, 2020 Author Share Posted December 1, 2020 Hi, thanks but already tried with no results.. Here is my code if you want to check : <?php if (!defined('_PS_VERSION_')) { exit; } class MyModule extends Module { public function __construct() { $this->name = "mymodule"; $this->tab = "front_office_features"; $this->version = "1.0.0"; $this->author = 'me AGAINME'; $this->need_instance = 0; $this->ps_versions_compliancy = [ 'mix' => '1.6', 'max' => _PS_VERSION_ ]; $this->bootstrap = true; parent::__construct(); $this->dispayName = $this->l('My module'); $this->description = $this->l('Description of my module HEHE'); $this->confirmUninstall = $this->l(' Sure? ...'); if (!Configuration::get('MYMODULE_NAME')) { $this->warning = $this->l('NO NAME provided'); } } public function install() { if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } return parent::install() && $this->registerHook('leftColumn') && //$this->registerHook('actionFrontControllerSetMedia') && Configuration::updateValue('MYMODULE_NAME', 'my friend'); } public function getContent() { $output = null; if (Tools::isSubmit('submit' . $this->name)) { $myModuleName = strval(Tools::getValue('MYMODULE_NAME')); if ( !$myModuleName || empty($myModuleName) || !Validate::isGenericName($myModuleName) ) { $output .= $this->displayError($this->l('Invalid Configuration value')); } else { Configuration::updateValue('MYMODULE_NAME', $myModuleName); $output .= $this->displayConfirmation($this->l('Settings updated')); } } return $output . $this->displayForm(); } public function displayForm() { // Get default language $defaultLang = (int)Configuration::get('PS_LANG_DEFAULT'); // Init Fields form array $fieldsForm[0]['form'] = [ 'legend' => [ 'title' => $this->l('Settings'), ], 'input' => [ [ 'type' => 'text', 'label' => $this->l('Abracadabra'), 'name' => 'MYMODULE_NAME', 'size' => 20, 'required' => true ] ], 'submit' => [ 'title' => $this->l('Save'), 'class' => 'btn btn-default pull-right' ] ]; $helper = new HelperForm(); // Module, token and currentIndex $helper->module = $this; $helper->name_controller = $this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name; // Language $helper->default_form_language = $defaultLang; $helper->allow_employee_form_lang = $defaultLang; // Title and toolbar $helper->title = $this->displayName; $helper->show_toolbar = true; // false -> remove toolbar $helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen. $helper->submit_action = 'submit' . $this->name; $helper->toolbar_btn = [ 'save' => [ 'desc' => $this->l('Save'), 'href' => AdminController::$currentIndex . '&configure=' . $this->name . '&save' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules'), ], 'back' => [ 'href' => AdminController::$currentIndex . '&token=' . Tools::getAdminTokenLite('AdminModules'), 'desc' => $this->l('Back to list') ] ]; // Load current value $helper->fields_value['MYMODULE_NAME'] = Tools::getValue('MYMODULE_NAME', Configuration::get('MYMODULE_NAME')); return $helper->generateForm($fieldsForm); } public function hookDisplayLeftColumn($params) { $this->context->smarty->assign([ 'my_module_name' => Configuration::get('MYMODULE_NAME'), 'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display') ]); return $this->display(__FILE__, 'mymodule.tpl'); } public function hookDisplayRightColumn($params) { return $this->hookDisplayLeftColumn($params); } public function hookActionFrontControllerSetMedia() { $this->context->controller->registerStylesheet( 'mymodule-style', $this->_path . 'views/css/mymodule.css', [ 'media' => 'all', 'priority' => 1000, ] ); $this->context->controller->registerJavascript( 'mymodule-javascript', $this->_path . 'views/js/mymodule.js', [ 'position' => 'bottom', 'priority' => 1000, ] ); } } Link to comment Share on other sites More sharing options...
elburgl69 Posted December 1, 2020 Share Posted December 1, 2020 Change: public function hookDisplayLeftColumn($params) { $this->context->smarty->assign([ 'my_module_name' => Configuration::get('MYMODULE_NAME'), 'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display') ]); return $this->display(__FILE__, 'mymodule.tpl'); } to public function hookDisplayLeftColumn($params) { $this->context->smarty->assign([ 'my_module_name' => Configuration::get('MYMODULE_NAME'), 'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display') ]); return $this->display(dirname(__FILE__), 'mymodule.tpl'); } Or more clean use fetch like: public function hookDisplayLeftColumn($params) { $this->context->smarty->assign([ 'my_module_name' => Configuration::get('MYMODULE_NAME'), 'my_module_link' => $this->context->link->getModuleLink('mymodule', 'display') ]); return $this->fetch('module:MyModule/mymodule.tpl'); } Link to comment Share on other sites More sharing options...
hicode Posted December 1, 2020 Author Share Posted December 1, 2020 Thanks for your help @elburgl69 I finally find the error, it's a stupid error but it is ... i forgot a l in "$this->displayName" Sorry 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