Pixtor Posted December 22, 2015 Share Posted December 22, 2015 (edited) Bonjour à tous, Comme précisé dans le titre, je cherche tout simplement à disposer d'un H1 personnalisé sur mes pages catégories pour optimiser mon référencement naturel. Dans l'admin de presta, il est possible de rentrer le champs "nom" qui sera par défaut le H1 de la page catégorie mais aussi le nom apparent dans mon menu. Cependant, je ne souhaite pas que le nom dans le menu soit mon titre optimisé SEO. Par exemple : Dans l'admin de presta et le nom du lien dans le menu je souhaiterai : canapé Sur la page catégorie associée : canapé décoration d’intérieur Est-ce qu'une âme charitable aurait une idée ? Bonne journée Edited December 24, 2015 by Pixtor (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 23, 2015 Share Posted December 23, 2015 (edited) Salut Pixtor, 1- Dans phpmyadmin dans la table ps_category_lang ajoute un champ de type texte que tu intitules h1_cat 2- Crée un override dans override/classes/category.php <?php class Category extends CategoryCore { public $h1_cat; public static $definition = array( 'table' => 'category', 'primary' => 'id_category', 'multilang' => true, 'multilang_shop' => true, 'fields' => array( 'nleft' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'nright' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'level_depth' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'id_parent' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'id_shop_default' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'is_root_category' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'position' => array('type' => self::TYPE_INT), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), /* Lang fields */ 'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128), 'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128), 'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'), 'h1_cat' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'), 'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128), 'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255), 'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255), ), ); } 3- crée un ovverride dans override/controllers/admin/AdminCategoriesController.php <?php class AdminCategoriesController extends AdminCategoriesControllerCore { public function __construct() { $this->bootstrap = true; $this->table = 'category'; $this->className = 'Category'; $this->lang = true; $this->deleted = false; $this->explicitSelect = true; $this->_defaultOrderBy = 'name'; $this->allow_export = true; $this->context = Context::getContext(); $this->fieldImageSettings = array( 'name' => 'image', 'dir' => 'c' ); $this->fields_list = array( 'id_category' => array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs' ), 'name' => array( 'title' => $this->l('Name') ), 'position' => array( 'title' => $this->l('Position'), 'filter_key' => 'sa!position', 'position' => 'position', 'align' => 'center' ), 'active' => array( 'title' => $this->l('Displayed'), 'active' => 'status', 'type' => 'bool', 'class' => 'fixed-width-xs', 'align' => 'center', 'ajax' => true, 'orderby' => false ) ); $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); $this->specificConfirmDelete = false; AdminController::__construct(); } public static function getDescription2Clean($description) { } public function renderForm() { $this->initToolbar(); /** @var Category $obj */ $obj = $this->loadObject(true); $context = Context::getContext(); $id_shop = $context->shop->id; $selected_categories = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id)); $unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP')); $guest = new Group(Configuration::get('PS_GUEST_GROUP')); $default = new Group(Configuration::get('PS_CUSTOMER_GROUP')); $unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), '<b>'.$unidentified->name[$this->context->language->id].'</b>'); $guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), '<b>'.$guest->name[$this->context->language->id].'</b>'); $default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), '<b>'.$default->name[$this->context->language->id].'</b>'); if (!($obj = $this->loadObject(true))) return; $image = _PS_CAT_IMG_DIR_.$obj->id.'.jpg'; $image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_size = file_exists($image) ? filesize($image) / 1000 : false; $this->fields_form = array( 'tinymce' => true, 'legend' => array( 'title' => $this->l('Category'), 'icon' => 'icon-tags' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Name'), 'name' => 'name', 'lang' => true, 'required' => true, 'class' => 'copy2friendlyUrl', 'hint' => $this->l('Invalid characters:').' <>;=#{}', ), array( 'type' => 'textarea', 'label' => $this->l('H1 Category'), 'name' => 'h1_cat', 'autoload_rte' => false, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'switch', 'label' => $this->l('Displayed'), 'name' => 'active', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ) ), array( 'type' => 'categories', 'label' => $this->l('Parent category'), 'name' => 'id_parent', 'tree' => array( 'id' => 'categories-tree', 'selected_categories' => $selected_categories, 'disabled_categories' => (!Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('submitAdd'.$this->table)) ? array($this->_category->id) : null, 'root_category' => $context->shop->getCategory() ) ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'file', 'label' => $this->l('Image'), 'name' => 'image', 'display_image' => true, 'image' => $image_url ? $image_url : false, 'size' => $image_size, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1', 'hint' => $this->l('Upload a category logo from your computer.'), ), array( 'type' => 'textarea', 'label' => $this->l('Meta title'), 'name' => 'meta_title', 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Meta description'), 'name' => 'meta_description', 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'tags', 'label' => $this->l('Meta keywords'), 'name' => 'meta_keywords', 'lang' => true, 'hint' => $this->l('To add "tags," click in the field, write something, and then press "Enter."').' '.$this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'text', 'label' => $this->l('Friendly URL'), 'name' => 'link_rewrite', 'lang' => true, 'required' => true, 'hint' => $this->l('Only letters, numbers, underscore (_) and the minus (-) character are allowed.') ), array( 'type' => 'group', 'label' => $this->l('Group access'), 'name' => 'groupBox', 'values' => Group::getGroups(Context::getContext()->language->id), 'info_introduction' => $this->l('You now have three default customer groups.'), 'unidentified' => $unidentified_group_information, 'guest' => $guest_group_information, 'customer' => $default_group_information, 'hint' => $this->l('Mark all of the customer groups which you would like to have access to this category.') ) ), 'submit' => array( 'title' => $this->l('Save'), 'name' => 'submitAdd'.$this->table.($this->_category->is_root_category && !Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('add'.$this->table.'root') ? '': 'AndBackToParent') ) ); $this->tpl_form_vars['shared_category'] = Validate::isLoadedObject($obj) && $obj->hasMultishopEntries(); $this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'); $this->tpl_form_vars['displayBackOfficeCategory'] = Hook::exec('displayBackOfficeCategory'); // Display this field only if multistore option is enabled if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && Tools::isSubmit('add'.$this->table.'root')) { $this->fields_form['input'][] = array( 'type' => 'switch', 'label' => $this->l('Root Category'), 'name' => 'is_root_category', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'is_root_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'is_root_off', 'value' => 0, 'label' => $this->l('No') ) ) ); unset($this->fields_form['input'][2],$this->fields_form['input'][3]); } // Display this field only if multistore option is enabled AND there are several stores configured if (Shop::isFeatureActive()) $this->fields_form['input'][] = array( 'type' => 'shop', 'label' => $this->l('Shop association'), 'name' => 'checkBoxShopAsso', ); // remove category tree and radio button "is_root_category" if this category has the root category as parent category to avoid any conflict if ($this->_category->id_parent == (int)Configuration::get('PS_ROOT_CATEGORY') && Tools::isSubmit('updatecategory')) foreach ($this->fields_form['input'] as $k => $input) if (in_array($input['name'], array('id_parent', 'is_root_category'))) unset($this->fields_form['input'][$k]); if (!($obj = $this->loadObject(true))) return; $image = ImageManager::thumbnail(_PS_CAT_IMG_DIR_.'/'.$obj->id.'.jpg', $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true); $this->fields_value = array( 'image' => $image ? $image : false, 'size' => $image ? filesize(_PS_CAT_IMG_DIR_.'/'.$obj->id.'.jpg') / 1000 : false ); // Added values of object Group $category_groups_ids = $obj->getGroups(); $groups = Group::getGroups($this->context->language->id); // if empty $carrier_groups_ids : object creation : we set the default groups if (empty($category_groups_ids)) { $preselected = array(Configuration::get('PS_UNIDENTIFIED_GROUP'), Configuration::get('PS_GUEST_GROUP'), Configuration::get('PS_CUSTOMER_GROUP')); $category_groups_ids = array_merge($category_groups_ids, $preselected); } foreach ($groups as $group) $this->fields_value['groupBox_'.$group['id_group']] = Tools::getValue('groupBox_'.$group['id_group'], (in_array($group['id_group'], $category_groups_ids))); $this->fields_value['is_root_category'] = (bool)Tools::isSubmit('add'.$this->table.'root'); return AdminController::renderForm(); } } 4- Dans ton category.tpl de ton theme tu appelles ton nouveau titre entre la balise H1: <h1>{if $category->h1_cat}{$category->h1_cat}{else}{$category->name}{/if}</h1> CDT Edited December 23, 2015 by Alexandre-KM (see edit history) 1 Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 23, 2015 Share Posted December 23, 2015 si tu veux importer les h1_cat via CSV tu crée un override override/controllers/admin/AdminImportController.php <?php class AdminImportController extends AdminImportControllerCore { public function __construct() { parent::__construct(); $this->available_fields += array( 'h1_cat' => array('label' => $this->l('H1 Cat')) ); } } ?> Link to comment Share on other sites More sharing options...
Pixtor Posted December 24, 2015 Author Share Posted December 24, 2015 Hello Alexandre, Déjà merci pour ta réponse ! L'override n'est malheureusement pas encore fonctionnel. J'ai bien : - Crée ma ligne de texte dans la table ps_category_lang (voir fichier joint) - Crée les deux fichiers php dans les bons dossiers correspondant. En faisant attention a bien supprimer les parties du code concernant le multistore. - Fait l'appel de mon category.tpl qui lui fonctionne (il prend le nom actuel des cat) Malheureusement, dans le BO le champ h1_cat n'est pas apparu Quand je rentre à la main un h1 via mysql, il n'apparait pas sur mon site. Donc, ça serait un problème de champ mysql? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 24, 2015 Share Posted December 24, 2015 J'ai oublié de te dire pour activer les overrides , il faut supprimer le fichier class_index dans le repertoire /cache Link to comment Share on other sites More sharing options...
Pixtor Posted December 24, 2015 Author Share Posted December 24, 2015 Ça fonctionne niquel !!! Merci ÉNORMÉMENT Alexandre ! Super propre comme solution et très claires tes explications ! J'espère que cette page servira à d'autres ! Bonne fêtes à toi. 1 Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 24, 2015 Share Posted December 24, 2015 joyeux noël ! Link to comment Share on other sites More sharing options...
bartom34 Posted July 6, 2017 Share Posted July 6, 2017 Hi Guys, It is working almost perfectly. I am getting a notice error though when I am going to access to the category edit page. Notice à la ligne 2302 du fichier /home/folder/presta/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code [8] Undefined index: format Any idea how to clear this message? Link to comment Share on other sites More sharing options...
bartom34 Posted July 6, 2017 Share Posted July 6, 2017 (edited) Je ne sais pas pourquoi j'ai écris en anglais . Solution trouvée !Petit problème dans l'overide de AdminCategoriesController.php. Il faut mettre return parent::renderForm(); au lieu de AdminController::renderForm(). Solution ici : https://stackoverflow.com/questions/30472428/prestashop-1-6-display-custom-field-in-feature-add-edit-form Edit : Je me suis précipité car si le message d'erreur a disparu c'est tout bonnement parce que le champ n'est plus appelé ! Edited July 6, 2017 by bartom34 (see edit history) Link to comment Share on other sites More sharing options...
bartom34 Posted July 6, 2017 Share Posted July 6, 2017 C'était probablement un problème de version de Prestashop. Je me suis basé sur mon fichier controller que j'ai adapté avec l'ajout du formulaire h1_cat et ça marche ! Pour ceux qui sont sur PHP 1.6.1.9. <?php class AdminCategoriesController extends AdminCategoriesControllerCore { public function __construct() { $this->bootstrap = true; $this->table = 'category'; $this->className = 'Category'; $this->lang = true; $this->deleted = false; $this->explicitSelect = true; $this->_defaultOrderBy = 'position'; $this->allow_export = true; $this->context = Context::getContext(); $this->fieldImageSettings = array( 'name' => 'image', 'dir' => 'c' ); $this->fields_list = array( 'id_category' => array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs' ), 'name' => array( 'title' => $this->l('Name') ), 'description' => array( 'title' => $this->l('Description'), 'callback' => 'getDescriptionClean', 'orderby' => false ), 'position' => array( 'title' => $this->l('Position'), 'filter_key' => 'sa!position', 'position' => 'position', 'align' => 'center' ), 'active' => array( 'title' => $this->l('Displayed'), 'active' => 'status', 'type' => 'bool', 'class' => 'fixed-width-xs', 'align' => 'center', 'ajax' => true, 'orderby' => false ) ); $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); $this->specificConfirmDelete = false; parent::__construct(); } public function renderForm() { $this->initToolbar(); /** @var Category $obj */ $obj = $this->loadObject(true); $context = Context::getContext(); $id_shop = $context->shop->id; $selected_categories = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id)); $unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP')); $guest = new Group(Configuration::get('PS_GUEST_GROUP')); $default = new Group(Configuration::get('PS_CUSTOMER_GROUP')); $unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), '<b>'.$unidentified->name[$this->context->language->id].'</b>'); $guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), '<b>'.$guest->name[$this->context->language->id].'</b>'); $default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), '<b>'.$default->name[$this->context->language->id].'</b>'); if (!($obj = $this->loadObject(true))) { return; } $image = _PS_CAT_IMG_DIR_.$obj->id.'.'.$this->imageType; $image_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true); $image_size = file_exists($image) ? filesize($image) / 1000 : false; $images_types = ImageType::getImagesTypes('categories'); $format = array(); $thumb = $thumb_url = ''; $formated_category= ImageType::getFormatedName('category'); $formated_medium = ImageType::getFormatedName('medium'); foreach ($images_types as $k => $image_type) { if ($formated_category == $image_type['name']) { $format['category'] = $image_type; } elseif ($formated_medium == $image_type['name']) { $format['medium'] = $image_type; $thumb = _PS_CAT_IMG_DIR_.$obj->id.'-'.$image_type['name'].'.'.$this->imageType; if (is_file($thumb)) { $thumb_url = ImageManager::thumbnail($thumb, $this->table.'_'.(int)$obj->id.'-thumb.'.$this->imageType, (int)$image_type['width'], $this->imageType, true, true); } } } if (!is_file($thumb)) { $thumb = $image; $thumb_url = ImageManager::thumbnail($image, $this->table.'_'.(int)$obj->id.'-thumb.'.$this->imageType, 125, $this->imageType, true, true); ImageManager::resize(_PS_TMP_IMG_DIR_.$this->table.'_'.(int)$obj->id.'-thumb.'.$this->imageType, _PS_TMP_IMG_DIR_.$this->table.'_'.(int)$obj->id.'-thumb.'.$this->imageType, (int)$image_type['width'], (int)$image_type['height']); } $thumb_size = file_exists($thumb) ? filesize($thumb) / 1000 : false; $this->fields_form = array( 'tinymce' => true, 'legend' => array( 'title' => $this->l('Category'), 'icon' => 'icon-tags' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Name'), 'name' => 'name', 'lang' => true, 'required' => true, 'class' => 'copy2friendlyUrl', 'hint' => $this->l('Invalid characters:').' <>;=#{}', ), array( 'type' => 'switch', 'label' => $this->l('Displayed'), 'name' => 'active', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ) ), array( 'type' => 'categories', 'label' => $this->l('Parent category'), 'name' => 'id_parent', 'tree' => array( 'id' => 'categories-tree', 'selected_categories' => $selected_categories, 'disabled_categories' => (!Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('submitAdd'.$this->table)) ? array($this->_category->id) : null, 'root_category' => $context->shop->getCategory() ) ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'file', 'label' => $this->l('Category Cover Image'), 'name' => 'image', 'display_image' => true, 'image' => $image_url ? $image_url : false, 'size' => $image_size, 'delete_url' => self::$currentIndex.'&'.$this->identifier.'='.$this->_category->id.'&token='.$this->token.'&deleteImage=1', 'hint' => $this->l('This is the main image for your category, displayed in the category page. The category description will overlap this image and appear in its top-left corner.'), 'format' => $format['category'] ), array( 'type' => 'file', 'label' => $this->l('Category thumbnail'), 'name' => 'thumb', 'display_image' => true, 'image' => $thumb_url ? $thumb_url : false, 'size' => $thumb_size, 'format' => $format['medium'] ), array( 'type' => 'text', 'label' => $this->l('Meta title'), 'name' => 'meta_title', 'maxchar' => 70, 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('Meta description'), 'name' => 'meta_description', 'maxchar' => 160, 'lang' => true, 'rows' => 5, 'cols' => 100, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'tags', 'label' => $this->l('Meta keywords'), 'name' => 'meta_keywords', 'lang' => true, 'hint' => $this->l('To add "tags," click in the field, write something, and then press "Enter."').' '.$this->l('Forbidden characters:').' <>;=#{}' ), array( 'type' => 'textarea', 'label' => $this->l('H1 Category'), 'name' => 'h1_cat', 'autoload_rte' => false, 'lang' => true, 'hint' => $this->l('Invalid characters:').' <>;=#{}' ), array( 'type' => 'text', 'label' => $this->l('Friendly URL'), 'name' => 'link_rewrite', 'lang' => true, 'required' => true, 'hint' => $this->l('Only letters, numbers, underscore (_) and the minus (-) character are allowed.') ), array( 'type' => 'group', 'label' => $this->l('Group access'), 'name' => 'groupBox', 'values' => Group::getGroups(Context::getContext()->language->id), 'info_introduction' => $this->l('You now have three default customer groups.'), 'unidentified' => $unidentified_group_information, 'guest' => $guest_group_information, 'customer' => $default_group_information, 'hint' => $this->l('Mark all of the customer groups which you would like to have access to this category.') ) ), 'submit' => array( 'title' => $this->l('Save'), 'name' => 'submitAdd'.$this->table.($this->_category->is_root_category && !Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('add'.$this->table.'root') ? '': 'AndBackToParent') ) ); $this->tpl_form_vars['shared_category'] = Validate::isLoadedObject($obj) && $obj->hasMultishopEntries(); $this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'); $this->tpl_form_vars['displayBackOfficeCategory'] = Hook::exec('displayBackOfficeCategory'); // Display this field only if multistore option is enabled if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && Tools::isSubmit('add'.$this->table.'root')) { $this->fields_form['input'][] = array( 'type' => 'switch', 'label' => $this->l('Root Category'), 'name' => 'is_root_category', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'is_root_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'is_root_off', 'value' => 0, 'label' => $this->l('No') ) ) ); unset($this->fields_form['input'][2], $this->fields_form['input'][3]); } // Display this field only if multistore option is enabled AND there are several stores configured if (Shop::isFeatureActive()) { $this->fields_form['input'][] = array( 'type' => 'shop', 'label' => $this->l('Shop association'), 'name' => 'checkBoxShopAsso', ); } // remove category tree and radio button "is_root_category" if this category has the root category as parent category to avoid any conflict if ($this->_category->id_parent == (int)Configuration::get('PS_ROOT_CATEGORY') && Tools::isSubmit('updatecategory')) { foreach ($this->fields_form['input'] as $k => $input) { if (in_array($input['name'], array('id_parent', 'is_root_category'))) { unset($this->fields_form['input'][$k]); } } } if (!($obj = $this->loadObject(true))) { return; } $image = ImageManager::thumbnail(_PS_CAT_IMG_DIR_.'/'.$obj->id.'.'.$this->imageType, $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true); $this->fields_value = array( 'image' => $image ? $image : false, 'size' => $image ? filesize(_PS_CAT_IMG_DIR_.'/'.$obj->id.'.'.$this->imageType) / 1000 : false ); // Added values of object Group $category_groups_ids = $obj->getGroups(); $groups = Group::getGroups($this->context->language->id); // if empty $carrier_groups_ids : object creation : we set the default groups if (empty($category_groups_ids)) { $preselected = array(Configuration::get('PS_UNIDENTIFIED_GROUP'), Configuration::get('PS_GUEST_GROUP'), Configuration::get('PS_CUSTOMER_GROUP')); $category_groups_ids = array_merge($category_groups_ids, $preselected); } foreach ($groups as $group) { $this->fields_value['groupBox_'.$group['id_group']] = Tools::getValue('groupBox_'.$group['id_group'], (in_array($group['id_group'], $category_groups_ids))); } $this->fields_value['is_root_category'] = (bool)Tools::isSubmit('add'.$this->table.'root'); return AdminController::renderForm(); } } 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