Pierre Webwalker Posted May 28, 2015 Share Posted May 28, 2015 Bonjour à tous, Le sujet à déjà été abordé et j'en ai lu plein sans parvenir à ce que je souhaite. Je précise que je n'ai pas de compétence en php Sur PS 1.6.0.14, je voudrais greffer le module "Produits mis en avant sur la page d'accueil" sur la colonne gauche. J'ai essayé de reproduire ce que j'ai lu comme ceci sur le fichier modules\homefeatured\homefeatured.php : Ajout de la ligne dans le if (!parent::install() || !$this->registerHook('displayLeftColumn') Puis ajout à la fin du fichier : function hookMyHook($params) { return $this->hookLeftColumn($params); } mais ça ne fonctionne pas, j'obtiens une page blanche sur le BO / Modules / Position Merci infiniment aux spécialistes du php de votre aide Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted May 28, 2015 Author Share Posted May 28, 2015 Bonjour 3pom, et merci J'ai placé votre code mais quand j'essaye de greffer le module, PS me répond toujours "Ce module ne peut être accroché à ce hook" J'ai supprimé le cache navigateur, Smarty en "forcer la compilation..." cache : Non Il y a-t-il quelque chose à faire en plus ? Merci encore Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted May 28, 2015 Author Share Posted May 28, 2015 (edited) Oui en effet ! Mais une fois corrigé, j'ai une page blanche sur le BO... EDIT : sur le FO aussi Edited May 28, 2015 by pierrewebmaster (see edit history) Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted May 28, 2015 Author Share Posted May 28, 2015 (edited) Bien sûr : <?php /* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) exit; class HomeFeatured extends Module { protected static $cache_products; public function __construct() { $this->name = 'homefeatured'; $this->tab = 'front_office_features'; $this->version = '1.6.3'; $this->author = 'PrestaShop'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Featured products on the homepage'); $this->description = $this->l('Displays featured products in the central column of your homepage.'); } public function install() { $this->_clearCache('*'); Configuration::updateValue('HOME_FEATURED_NBR', 8); Configuration::updateValue('HOME_FEATURED_CAT', (int)Context::getContext()->shop->getCategory()); Configuration::updateValue('HOME_FEATURED_RANDOMIZE', false); if (!parent::install() || !$this->registerHook('header') || !$this->registerHook('addproduct') || !$this->registerHook('updateproduct') || !$this->registerHook('deleteproduct') || !$this->registerHook('categoryUpdate') || !$this->registerHook('displayHomeTab') || !$this->registerHook('displayHomeTabContent') || !$this->registerHook('displayLeftColumn') ) return false; return true; } public function uninstall() { $this->_clearCache('*'); return parent::uninstall(); } public function getContent() { $output = ''; $errors = array(); if (Tools::isSubmit('submitHomeFeatured')) { $nbr = Tools::getValue('HOME_FEATURED_NBR'); if (!Validate::isInt($nbr) || $nbr <= 0) $errors[] = $this->l('The number of products is invalid. Please enter a positive number.'); $cat = Tools::getValue('HOME_FEATURED_CAT'); if (!Validate::isInt($cat) || $cat <= 0) $errors[] = $this->l('The category ID is invalid. Please choose an existing category ID.'); $rand = Tools::getValue('HOME_FEATURED_RANDOMIZE'); if (!Validate::isBool($rand)) $errors[] = $this->l('Invalid value for the "randomize" flag.'); if (isset($errors) && count($errors)) $output = $this->displayError(implode('<br />', $errors)); else { Configuration::updateValue('HOME_FEATURED_NBR', (int)$nbr); Configuration::updateValue('HOME_FEATURED_CAT', (int)$cat); Configuration::updateValue('HOME_FEATURED_RANDOMIZE', (bool)$rand); Tools::clearCache(Context::getContext()->smarty, $this->getTemplatePath('homefeatured.tpl')); $output = $this->displayConfirmation($this->l('Your settings have been updated.')); } } return $output.$this->renderForm(); } public function hookDisplayHeader($params) { $this->hookHeader($params); } public function hookHeader($params) { if (isset($this->context->controller->php_self) && $this->context->controller->php_self == 'index') $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css'); $this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all'); } public function _cacheProducts() { if (!isset(HomeFeatured::$cache_products)) { $category = new Category((int)Configuration::get('HOME_FEATURED_CAT'), (int)Context::getContext()->language->id); $nb = (int)Configuration::get('HOME_FEATURED_NBR'); if (Configuration::get('HOME_FEATURED_RANDOMIZE')) HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), null, null, false, true, true, ($nb ? $nb : 8)); else HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position'); } if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products)) return false; } public function hookDisplayHomeTab($params) { if (!$this->isCached('tab.tpl', $this->getCacheId('homefeatured-tab'))) $this->_cacheProducts(); return $this->display(__FILE__, 'tab.tpl', $this->getCacheId('homefeatured-tab')); } public function hookDisplayHome($params) { if (!$this->isCached('homefeatured.tpl', $this->getCacheId())) { $this->_cacheProducts(); $this->smarty->assign( array( 'products' => HomeFeatured::$cache_products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), ) ); } return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId()); } public function hookDisplayHomeTabContent($params) { return $this->hookDisplayHome($params); } public function hookAddProduct($params) { $this->_clearCache('*'); } public function hookUpdateProduct($params) { $this->_clearCache('*'); } public function hookDeleteProduct($params) { $this->_clearCache('*'); } public function hookCategoryUpdate($params) { $this->_clearCache('*'); } public function _clearCache($template, $cache_id = NULL, $compile_id = NULL) { parent::_clearCache('homefeatured.tpl'); parent::_clearCache('tab.tpl', $this->getCacheId('homefeatured-tab')); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs' ), 'description' => $this->l('To add products to your homepage, simply add them to the corresponding product category (default: "Home").'), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Number of products to be displayed'), 'name' => 'HOME_FEATURED_NBR', 'class' => 'fixed-width-xs', 'desc' => $this->l('Set the number of products that you would like to display on homepage (default: 8).'), ), array( 'type' => 'text', 'label' => $this->l('Category from which to pick products to be displayed'), 'name' => 'HOME_FEATURED_CAT', 'class' => 'fixed-width-xs', 'desc' => $this->l('Choose the category ID of the products that you would like to display on homepage (default: 2 for "Home").'), ), array( 'type' => 'switch', 'label' => $this->l('Randomly display featured products'), 'name' => 'HOME_FEATURED_RANDOMIZE', 'class' => 'fixed-width-xs', 'desc' => $this->l('Enable if you wish the products to be displayed randomly (default: no).'), 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('No') ) ), ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->id = (int)Tools::getValue('id_carrier'); $helper->identifier = $this->identifier; $helper->submit_action = 'submitHomeFeatured'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'HOME_FEATURED_NBR' => Tools::getValue('HOME_FEATURED_NBR', (int)Configuration::get('HOME_FEATURED_NBR')), 'HOME_FEATURED_CAT' => Tools::getValue('HOME_FEATURED_CAT', (int)Configuration::get('HOME_FEATURED_CAT')), 'HOME_FEATURED_RANDOMIZE' => Tools::getValue('HOME_FEATURED_RANDOMIZE', (bool)Configuration::get('HOME_FEATURED_RANDOMIZE')), ); } } public function hookDisplayLeftColumn($params) { return $this->hookDisplayHome($params); } Edited May 28, 2015 by pierrewebmaster (see edit history) Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted May 28, 2015 Author Share Posted May 28, 2015 (edited) "Module greffé sur le point d'accroche avec succès." YES ! Merci merci merci 3pom !!! Bon, mon module n'apparait pas encore sur le front, je dois encore oublier de quelque chose... Je cherche... Edited May 28, 2015 by pierrewebmaster (see edit history) Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted May 28, 2015 Author Share Posted May 28, 2015 Voila mon module est à gauche ! Merci encore 3pom 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