aalshimi Posted April 6, 2010 Share Posted April 6, 2010 Bonjour à tous,Dans le récapitulatif de la commande,je souhaiterais rajouter la variable "catégorie" correspond au produit du caddie, de la même façon qu'on y trouve le produit et ces caractéristiques.Est ce quelqu'un a déjà fait une chose dans le genre ?Ou une piste à soumettre ?Merci à tous Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Bonjour,dans Smarty les caractéristiques c'est la variable $features Je ne peux malheureusement pas t'en dire bien plus.Bonne chance et dis moi si tu y arrive et commenta+ Link to comment Share on other sites More sharing options...
Cédric Posted June 3, 2010 Share Posted June 3, 2010 Dans la classe Cart /classes/cart.php , recherche la fonction: public function getProducts($refresh = false, $id_product = false) { if (!$this->id) return array(); if ($this->_products AND !$refresh) return $this->_products; $sql = ' SELECT cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, pl.`name`, cp.`id_custome`, pl.`description_short`, pl.`available_now`, pl.`available_later`, p.`id_product`, p.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, p.`id_tax`, p.`on_sale`, p.`ecotax`, p.`quantity`, p.`price`, p.`reduction_price`, p.`reduction_percent`, p.`reduction_from`, p.`reduction_to`, p.`weight`, p.`out_of_stock`, p.`active`, p.`date_add`, p.`date_upd`, t.`id_tax`, tl.`name` AS tax, t.`rate`, pa.`price` AS price_attribute, pa.`quantity` AS quantity_attribute, pa.`ecotax` AS ecotax_attr, i.`id_image`, il.`legend`, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(cp.`id_product`, cp.`id_product_attribute`) AS unique_id, IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, IF (IFNULL(pa.`supplier_reference`, \'\') = \'\', p.`supplier_reference`, pa.`supplier_reference`) AS supplier_reference, IF (IFNULL(pa.`weight`, 0) = \'\', p.`weight`, pa.`weight`) AS weight_attribute, IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13 FROM `'._DB_PREFIX_.'cart_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($this->id_lang).') LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = cp.`id_product_attribute`) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`) LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($this->id_lang).') LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON (pai.`id_product_attribute` = cp.`id_product_attribute`) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = cp.`id_product` AND (IF(pai.`id_image`, pai.`id_image` = i.`id_image`, i.`cover` = 1))) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($this->id_lang).') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($this->id_lang).') WHERE `id_cart` = '.intval($this->id).' '.($id_product ? ' AND cp.`id_product` = '.intval($id_product) : '').' AND p.`id_product` IS NOT NULL GROUP BY unique_id ORDER BY cp.date_add ASC'; // ... return $this->_products; } après IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13ajouter: , cl.name as categorynamedans shopping-cart.tpl oi shopping-cart-line.tpl, utiliser:{$products.categoryname}@++ Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Merci Cedric, pour ajouter les caractéristiques ça donnerait ça ?cl.name as feature ?? merci Link to comment Share on other sites More sharing options...
Cédric Posted June 3, 2010 Share Posted June 3, 2010 non pas besoin, elles sont déjà prises en charge.via {$product.features}il faut donc faire une boucle: id_feature_value {foreach from=$product.features item=feature} {$feature.id_feature_value} {/foreach} Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Cool ça marche nickel.Et si je voulais récupérer qu'une seule valeur d'une des caractéristiques (dans mon cas la valeur de la caractéristique "metrage" pour l'inserer dans une formule simple genre {$product.cart_quantity*$feature.id_feature_value} si et seulement si cette caractéristique existe pour le produit ????Un grand merci Cedric Link to comment Share on other sites More sharing options...
Cédric Posted June 3, 2010 Share Posted June 3, 2010 soit $product.features[0].id_feature_value, où 0 correspond à l'index de votre métrage soit {assign name=myvalue value=0 } {foreach from=$product.features item=feature} {if $feature.id_feature==} {assign name=myvalue value=$feature.id_feature_value} {/if} {/foreach} ex: = 1[/code] Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Je sens bien ce truc !!! {$product.cart_quantity*$product.features[11].id_feature_value} Le problème c'est que ça me divise par l'ID de ma caractéristique et non pas par la valeur de celle ciJ'ai essayé avec $product.features[11].feature_value et $product.features[11].value_feature_value mais ça marche pas aussi bien :-(Je brûleEn tout cas la piste est magiqueMERCI Link to comment Share on other sites More sharing options...
Cédric Posted June 3, 2010 Share Posted June 3, 2010 oui ca devient plus compliqué, désolé de pas vérifier les valeurs avant de les soumettre par manque de temps.Dans Product.php (/classes/product.php) cherche la fonction: static public function getFeaturesStatic($id_product) { return Db::getInstance()->ExecuteS(' SELECT id_feature, id_product, id_feature_value FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.intval($id_product)); } que tu remplaces par static public function getFeaturesStatic($id_product) { return Db::getInstance()->ExecuteS(' SELECT fp.id_feature, fp.id_product, fp.id_feature_value, fv.custom FROM `'._DB_PREFIX_.'feature_product` fp, `'._DB_PREFIX_.'feature_value` fv WHERE fp.id_feature_value=fv.id_feature_value and fp.`id_product` = '.intval($id_product)); } ensuite, au lieu d'appeler id_feature_value, tu appelles custom.Mais bon ca marchera que si tu utilises des valeurs particulières dans des fiches.Sinon c'est static public function getFeaturesStatic($id_product) { global $cookie; return Db::getInstance()->ExecuteS(' SELECT fp.id_feature, fp.id_product, fp.id_feature_value, fv.value FROM `'._DB_PREFIX_.'feature_product` fp, `'._DB_PREFIX_.'feature_value_lang` fv WHERE fv.id_lang='.$cookie->id_lang.' and fp.id_feature_value=fv.id_feature_value and fp.`id_product` = '.intval($id_product)); } ensuite, au lieu d'appeler id_feature_value, tu appelles value. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Dommageça m'allait bien cette formule, je vais essayé la tienne.Sinon avec un truc du genre : {if $features} {foreach from=$features item=feature} {if $feature.name=='metrage' && $feature.value!='' } {if $product.active AND ($product.allow_oosp OR $product.stock_quantity > 0)} Soit {$product.cart_quantity*$feature.value} m² {else} ND qu'est-ce qui cloche ??? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 Houla ce que tu me propose ça ressemble pas à ça chez moi. Et quelles implication il y aura ailleurs ? Si je pouvais faire sans toucher au core ça m'irai bien !!!Voilà ma classe Product, je vais quand m^me essayer static public function getFeaturesStatic($id_product) { return Db::getInstance()->ExecuteS(' SELECT id_feature, id_product, id_feature_value FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.intval($id_product)); } Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 {$product.cart_quantity*$custom[11]} ça marche pas après ta modif de classe.{$product.cart_quantity*$product.custom[11]} marche pas non plus {$product.cart_quantity*$product.custom[11].custom} NadaJe suis sur que ta methode précédente est une bonne solution. Il faudrait juste pour voir récupérer ces "lhgqljhgfdjqhg" de variable quelque part. Là elles sont pas présentes dans le tpl meme après ta modifou j'ai rien compris (ce qui est ma foi fort possible ;-) )Merci encore Link to comment Share on other sites More sharing options...
Cédric Posted June 3, 2010 Share Posted June 3, 2010 tu dois utiliser : {$product.cart_quantity*$features[11].custom} Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 j'ai failli essayé ;-) Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 3, 2010 Share Posted June 3, 2010 ben non ça coince avec la partie 1 de ta dernière solution. Ce soir j'essaye l'autre. Je suis en 1.3, une incidence ???? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 4, 2010 Share Posted June 4, 2010 YESSSSSSS Merci Cedric, t'es un as !Alors the good solution pour intégrer une caractéristique dans le panier récapitulatifTUTORIEL1/ incorporer ce code dans /classe/Product.php static public function getFeaturesStatic($id_product) { global $cookie; return Db::getInstance()->ExecuteS(' SELECT fp.id_feature, fp.id_product, fp.id_feature_value, fv.value FROM `'._DB_PREFIX_.'feature_product` fp, `'._DB_PREFIX_.'feature_value_lang` fv WHERE fv.id_lang='.$cookie->id_lang.' and fp.id_feature_value=fv.id_feature_value and fp.`id_product` = '.intval($id_product)); } à la place de celui placé en dessous de static public function getFeaturesStatic($id_product) 2/ ensuite il faut aller dans /theme/votretheme/shopping-cart-product-line.tplet incorporer un code du genre {$product.cart_quantity*$product.features[3].value} avec comme numéro l'ID de votre caractéristique.Chez moi ça donne ça: {if $product.active AND ($product.allow_oosp OR $product.stock_quantity > 0)} {l s='pour'} {$product.cart_quantity*$product.features[3].value} {l s=' m²'}{l s='(attention aux coupes : prévoir ±5 à 10%)'}{else}{l s=''}{/if} 3) si vous voulez créer une colonne pour incorporer votre résultat ça se passe dans shopping-cart.tplet c'est TROP COOL de la part de Cédric.mille mercis Link to comment Share on other sites More sharing options...
Jean-Bruno Posted June 7, 2010 Share Posted June 7, 2010 AU SECOUUUUUUUUUUUUUUUUUUUURS 8En fait ça marche pas !Je m'en suis aperçu en testant sur de nombreux produitsVoilà ou le bas blesse : Avec $product.features[4].value il affiche par exemple le 2.1 de la feature 13 ET NON PAS LA VALEURS DE MON id_feature => "21" Dans les variables (qui s'affichent avec {debug} )PRODUIT "1" features => Array (14) 0 => Array (4) id_feature => "8" id_product => "1" id_feature_value => "33" value => "Stratifié HDF-3L " 1 => Array (4) id_feature => "7" id_product => "1" id_feature_value => "29" value => "Densifié" 2 => Array (4) id_feature => "9" id_product => "1" id_feature_value => "52" value => "Flottante" 3 => Array (4) id_feature => "6" id_product => "1" id_feature_value => "27" value => "Ambre" 4 => Array (4) id_feature => "11" id_product => "1" id_feature_value => "41" value => "1.58" 5 => Array (4) etc... 13 => Array (4) id_feature => "21" id_product => "1" id_feature_value => "122" value => "2.1" MAIS AVEC UN AUTRE PRODUIT "2" features => Array (3) 0 => Array (4) id_feature => "15" id_product => "13" id_feature_value => "61" value => "seau de 6 kg" 1 => Array (4) id_feature => "11" id_product => "13" id_feature_value => "114" value => "6" 2 => Array (4) id_feature => "21" id_product => "13" id_feature_value => "123" value => "12 "LA VALEUR est bien présente mais pas dans la même feature. J'ai essayé avec $product.id_features[21].value Et ça ne fonctionne pas.Merci si vous me sortez de ce mauvais pas ! ou expliquez moi pourquoi ça ne fonctionne pas !!!!!a+ Link to comment Share on other sites More sharing options...
Cédric Posted June 9, 2010 Share Posted June 9, 2010 Salut à tous,La solution a été donnée en privée, du fait de la complexité de la situation et surtout de la spécificité.Dans Product.php (/classes/product.php) cherche la fonction: static public function getFeaturesStatic($id_product) { global $cookie; return Db::getInstance()->ExecuteS(' SELECT fp.id_feature, fp.id_product, fp.id_feature_value, fv.value, fv.custom, fl.name FROM `'._DB_PREFIX_.'feature_product` fp, `'._DB_PREFIX_.'feature_value_lang` fv, `'._DB_PREFIX_.'feature_lang` fl WHERE fv.id_lang='.$cookie->id_lang.' and fp.id_feature_value=fv.id_feature_value and fp.`id_product` = '.intval($id_product).' and fl.id_feature=fp.id_feature and fl.id_lang=2'); /* return Db::getInstance()->ExecuteS(' SELECT id_feature, id_product, id_feature_value FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.intval($id_product)); */ } On obtient donc un tableau de caractéristique avec pour chacune des caractéristiques associées au produit:son nom, sa valeur par defaut et sa valeur personnalisée.Ensuite dans le tpl, utiliser le code suivant par exemple, la caractéristique qui sert ici c'est metrage. Cette méthode permet en plus de ne pas avoir la même liste pour tous les produits. {assign name=myvalue value=0 } {foreach from=$product.features item=feature} {if $feature.name=='metrage'} {assign name=myvalue value=$feature.value} {/if} {/foreach} ici on exploite {$myvalue} @++ Link to comment Share on other sites More sharing options...
cycleelcyc Posted October 28, 2014 Share Posted October 28, 2014 bonjour Cedric je suis tombé sur ce sujet et vos discussion m'interesse beaucoup. je suis sur 1.6.0.9, je veux simplement de replacer le colonne "disponibilité" par une caractéristique que j'ai crée (marque par ex.) j'ai essayé de regarder les fichiers tpl et php mais je n'arrive pas de trouver le meme chose... pouvez vous me donner un peu de detail? merci. Link to comment Share on other sites More sharing options...
cycleelcyc Posted October 30, 2014 Share Posted October 30, 2014 up 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