sandra nanou Posted July 3, 2017 Share Posted July 3, 2017 Bonjour à tous, Je m'arrache les cheveux depuis plusieurs semaines. Je n'arrive pas à afficher des champs personnalisés sur ma liste produit. Les champ sont bien présents en base (ps_product_lang) et s'affichent correctement sur la page produit (en back et front office). Pour cela, j'ai modifier Override classes > Product.php : class Product extends ProductCore { public $fab1; public $ref1; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['fab1'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'); Product::$definition['fields']['ref1'] = array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } Modifier informations.tpl puis ajouter mes champs sur product.tpl : {if isset ($product->fab1)}{$product->fab1|escape:'html':'UTF-8'}{else} - {/if} {if isset ($product->ref1)}{$product->ref1|escape:'html':'UTF-8'}{else} - {/if} Pour ajouter ces champs à product list, j'ai modifier override>classes>Category.php : $sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) AS quantity'.(Combination::isFeatureActive() ? ', IFNULL(product_attribute_shop.id_product_attribute, 0) AS id_product_attribute, product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity' : '').', pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`fab1`, pl.`ref1`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, image_shop.`id_image` id_image, il.`legend` as legend, m.`name` AS manufacturer_name, cl.`name` AS category_default, DATEDIFF(product_shop.`date_add`, DATE_SUB("'.date('Y-m-d').' 00:00:00", INTERVAL '.(int)$nb_days_new_product.' DAY)) > 0 AS new, product_shop.price AS orderprice FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.Shop::addSqlAssociation('product', 'p'). (Combination::isFeatureActive() ? ' LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.')':'').' '.Product::sqlStock('p', 0).' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.') LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE product_shop.`id_shop` = '.(int)$context->shop->id.' AND cp.`id_category` = '.(int)$this->id .($active ? ' AND product_shop.`active` = 1' : '') .($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '') .($id_supplier ? ' AND p.id_supplier = '.(int)$id_supplier : ''); Et modifier product-list.tpl : {if isset($fab1)} {$product.fab1|escape:'html':'UTF-8'} {/if} {if isset($ref1)} {$product.ref1|escape:'html':'UTF-8'} {/if} rien se s'affiche ! Vous avez une idée de se que j'ai pu rater ?? Merci ! Sandra Link to comment Share on other sites More sharing options...
BeComWeb Posted July 3, 2017 Share Posted July 3, 2017 Bonjour, Sans avoir éplucher ton code dans le détail (mais à vue de nez tout semble ok), je pense que ton erreur est là {if isset($fab1)} {$product.fab1|escape:'html':'UTF-8'} {/if} {if isset($ref1)} {$product.ref1|escape:'html':'UTF-8'} {/if} Tu testes l'existence des variables $fab1 et $ref1... Ca ne colle pas. Il faut que tu remplaces par {if isset($product.fab1)} {$product.fab1|escape:'html':'UTF-8'} {/if} {if isset($product.ref1)} {$product.ref1|escape:'html':'UTF-8'} {/if} Link to comment Share on other sites More sharing options...
sandra nanou Posted July 3, 2017 Author Share Posted July 3, 2017 Merci beaucoup pour ta réponse, malheureusement le problème ne vient pas de là. Mes 2 variables ne sont renseignée, j'ai vérifié en mode {debug} mes variables n’existent pas. D’ailleurs, si je n'ajoute que {$product.fab1|escape:'html':'UTF-8'} dans product-list.tpl j'ai ce message d'erreur : Notice: Undefined index: fab1 in /var/www/vhosts/xxx.fr/xxx/tools/smarty/sysplugins/smarty_internal_templatebase.php(157) : eval()'d code on line 346 Encore merci, Sandra Link to comment Share on other sites More sharing options...
BeComWeb Posted July 3, 2017 Share Posted July 3, 2017 Tu as bien supprimé le fichier cache/class_index.php après avoir créé tes fichiers d'override ? Link to comment Share on other sites More sharing options...
sandra nanou Posted July 3, 2017 Author Share Posted July 3, 2017 Oui j'ai supprimé le fichier, désactiver le cache... Link to comment Share on other sites More sharing options...
sandra nanou Posted July 3, 2017 Author Share Posted July 3, 2017 J'ai trouvé ! Incompatibilité avec le module advanced search 4. Je vais contacter le développeur. merci encore pour votre aide ! Sandra Link to comment Share on other sites More sharing options...
BeComWeb Posted July 4, 2017 Share Posted July 4, 2017 Ce module utilise déjà des overrides pour les mêmes modèles et contrôleurs j'imagine. Pense à passer ton topic sur "[Résolu]" 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