ritepac Posted April 25, 2013 Share Posted April 25, 2013 Bonjour amis développeurs, Version de prestashop : 1.5.2 Je souhaiterais modifier l'affichage des déclinaisons sur la page produit. En effet, aujourd'hui, j'ai un groupe d'attributs "tissus" composé des valeurs : - tissu 1 - tissu 2 et un autre groupe d'attributs "couleurs" composé des valeurs : - citron - forêt Les deux sont gérés en type couleurs avec une image uploadée dans le backoffice. • j'ai préparé 2 déclinaisons possibles : -> tissu 1 / citron -> tissu 2 / forêt Le tissu 1 n'existe pas en forêt et le tissu 2 n'existe pas en citron • Ce qu'il m'affiche aujourd'hui : -> tissu 1 / citron -> tissu 1 / forêt => le bouton panier est non visible -> tissu 2 / citron => le bouton panier est non visible -> tissu 2 / forêt • Ce que je souhaiterais : -> tissu 1 / citron -> tissu 1 / forêt => le colori forêt si on clique sur tissu1 n'apparait pas -> tissu 2 / citron => le colori citron si on clique sur tissu2 n'apparait pas -> tissu 2 / forêt Sachant qu'il a des valeurs d'attributs par défaut (tissu 1 / citron) Comme me l'a expliqué Whoami, le changement de gestion des déclinaisons est plus compliqué qu'il n'y parait mais je souhaiterais me lancer dans le code pour parvenir au résultat escompté. • Question 1 : N'y aurait-il pas moyen de gérer cela avec les quantités (stocks) disponibles par produit et par déclinaisons ? • Question 2 : N'y aurait-il pas moyen de vérifier les quantités disponibles par déclinaisons et si pas de quantité il n'affiche pas la couleur (sans gestion de stock) ? • Question 3 : Faut-il plutôt travaillé sur la classe Product.php (fonction qui gère les attributs) : public static function getDefaultAttribute($id_product, $minimum_quantity = 0) { if (!Combination::isFeatureActive()) return 0; $sql = 'SELECT pa.id_product_attribute FROM '._DB_PREFIX_.'product_attribute pa '.Shop::addSqlAssociation('product_attribute', 'pa').' '.($minimum_quantity > 0 ? Product::sqlStock('pa', 'pa') : ''). ' WHERE product_attribute_shop.default_on = 1 ' .($minimum_quantity > 0 ? ' AND IFNULL(stock.quantity, 0) >= '.(int)$minimum_quantity : ''). ' AND pa.id_product = '.(int)$id_product; $result = Db::getInstance()->getValue($sql); if (!$result) { $sql = 'SELECT pa.id_product_attribute FROM '._DB_PREFIX_.'product_attribute pa '.Shop::addSqlAssociation('product_attribute', 'pa').' '.($minimum_quantity > 0 ? Product::sqlStock('pa', 'pa') : ''). ' WHERE pa.id_product = '.(int)$id_product .($minimum_quantity > 0 ? ' AND IFNULL(stock.quantity, 0) >= '.(int)$minimum_quantity : ''); $result = Db::getInstance()->getValue($sql); } if (!$result) { $sql = 'SELECT pa.id_product_attribute FROM '._DB_PREFIX_.'product_attribute pa '.Shop::addSqlAssociation('product_attribute', 'pa').' WHERE product_attribute_shop.`default_on` = 1 AND pa.id_product = '.(int)$id_product; $result = Db::getInstance()->getValue($sql); } if (!$result) { $sql = 'SELECT pa.id_product_attribute FROM '._DB_PREFIX_.'product_attribute pa '.Shop::addSqlAssociation('product_attribute', 'pa').' WHERE pa.id_product = '.(int)$id_product; $result = Db::getInstance()->getValue($sql); } return $result; } Ou plutôt travaillé sur la classe attributs (Attribute.php) ? : public static function getAttributes($id_lang, $not_null = false) { if (!Combination::isFeatureActive()) return array(); return Db::getInstance()->executeS(' SELECT ag.*, agl.*, a.`id_attribute`, al.`name`, agl.`name` AS `attribute_group` FROM `'._DB_PREFIX_.'attribute_group` ag LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute_group` = ag.`id_attribute_group` LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') '.Shop::addSqlAssociation('attribute_group', 'ag').' '.Shop::addSqlAssociation('attribute', 'a').' '.($not_null ? 'WHERE a.`id_attribute` IS NOT NULL AND al.`name` IS NOT NULL' : '').' ORDER BY agl.`name` ASC, a.`position` ASC '); } Merci d'avance de vos éclaircissements. Link to comment Share on other sites More sharing options...
Fez-o-Joe Posted April 26, 2013 Share Posted April 26, 2013 Pardon the english... I've been seaching for someone/anyone that has this - but if you get this working, there's a few of us that would love such a module/mod. We have products that have items that can be added - that have their own quantity - but we don't want 12,800 product entries when we have only 40 main items. ex: A hat with a specific logo... that can come in 10 sizes - each size can have it's own quantity. then, each hat comes with its own hatband, one of ten. and, it can also get vented in one of three colours, finally, the client can order an extra hatband and/or venting. Akin to your painting - we need one product, but each option would have it's own quantity associated with it. Hopefully someone can help you. (and all of us) Good luck. 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