AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 (edited) Les couleurs doivent obligatoirement avoir les deux ? ou juste une couleur ou une image? Aurais je du avoir un résultat malgré tout? car de ce que je vois la condition n'est pas prise en compte. je n'ai rien d'afficher en html . ça marche nickel sur prestashop 1.5.4.1 et sans image les couleurs du produit s'affichent en lettre. Edited July 19, 2013 by AkrOpad (see edit history) 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 (edited) Après des dizaine de test décidément rien ne va ! Je n'ai pas les couleur d'afficher et pourtant j'ai bien fait comme indiqué sur ton tutoriel sur ton site. J'ai vu que tu avais testé sous la 1.5.4.1 et que c'était passé aussi je voulais savoir si c'était passé chez toi? C'est bien dans le dossier classes qui est dans le dossier override que je dois créer e fichier Product.php ? Dans le dossier classes il ya d'autre fichier d'ou ma question Edited July 19, 2013 by Lotfi69 (see edit history) Link to comment Share on other sites More sharing options...
AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 Après des dizaine de test décidément rien ne va ! Je n'ai pas les couleur d'afficher et pourtant j'ai bien fait comme indiqué sur ton tutoriel sur ton site. J'ai vu que tu avais testé sous la 1.5.4.1 et que c'était passé aussi je voulais savoir si c'était passé chez toi? C'est bien dans le dossier classes qui est dans le dossier override que je dois créer e fichier Product.php ? Dans le dossier classes il ya d'autre fichier d'ou ma question Oui, ça marche sur serveur local et distant. C'est bien dans override/classes qu'il faut créer le fichier product.php 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 (edited) Je fais les test sur une version de base prestashop toujours 1.5.4.1 pour voir si ça vient d'un bout de code que j'ai peut être enlever ou je ne sais quoi. A la base je me sert du thème par défaut de prestashop donc je vois pas quoi mais on sait jamais ! D'accord je teste en local moi car en distant ça ne veut rien savoir Edited July 19, 2013 by Lotfi69 (see edit history) Link to comment Share on other sites More sharing options...
AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 Je fais les test sur une version de base prestashop toujours 1.5.4.1 pour voir si ça vient d'un bout de code que j'ai peut être enlever ou je ne sais quoi. A la base je me sert du thème par défaut de prestashop donc je vois pas quoi mais on sait jamais ! D'accord je teste en local moi car en distant ça ne veut rien savoir le cache peut-être ? le code du template pour afficher les couleurs est-il encapsulé dans une autre condition ? ... 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 non aucune je te met mon code du fichier product-list.tpl : {* * 2007-2013 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-2013 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 isset($products)} <!-- Products list --> <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix"> <div class="center_block"> <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"> <img id="img_{$product.id_product}" src="{$link->getImageLink($product.link_rewrite, $product.id_image)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" height="{$homeSize.height}" width="{$homeSize.width}" /> </a> <h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:35:'...'}</a></h3> {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if} {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price1"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price1" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if} </div> {/if} <!-- colors --> {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$img_prod_dir}{$product.id_product}-{$color.id_image}.jpg'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} </div> </li> {/foreach} </ul> <!-- /Products list --> {/if} si tu vois le soucis je suis preneur ^^ Link to comment Share on other sites More sharing options...
AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 non aucune je te met mon code du fichier product-list.tpl : si tu vois le soucis je suis preneur ^^ Votre code marche chez moi ! 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 (edited) D'accord d'accord c'est vraiment rageant chez moi rien y fait je vais recompiler (encore ) le smarty vidé tout le cache etc... Merci de vos réponses en tout cas. Je teste sur le champ ! Ca marche enfin ! Visiblement un oubli de cache de ma part ! Bref tout fonctionne manque plus qu'a gérer le css ! Enorme merci encore Juste le soucis maintenant que j'ai c'est quand je clique sur une couleur il me met un point d'interrogation mais c'est peut etre dans les config produit non ? Edited July 19, 2013 by Lotfi69 (see edit history) 1 Link to comment Share on other sites More sharing options...
AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 D'accord d'accord c'est vraiment rageant chez moi rien y fait je vais recompiler (encore ) le smarty vidé tout le cache etc... Merci de vos réponses en tout cas. Je teste sur le champ ! Ca marche enfin ! Visiblement un oubli de cache de ma part ! Bref tout fonctionne manque plus qu'a gérer le css ! Enorme merci encore Juste le soucis maintenant que j'ai c'est quand je clique sur une couleur il me met un point d'interrogation mais c'est peut etre dans les config produit non ? Remplacez le code du template par celui-ci ! {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image)}'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 Tu es vraiment le meilleur ! Encore merci tout marche nickel ! j'ai plus qu'a le gérer au survol plutôt qu'au clic et c'est dans la poche Merci beaucoup vraiment Link to comment Share on other sites More sharing options...
AkrOpad Posted July 19, 2013 Share Posted July 19, 2013 Tu es vraiment le meilleur ! Encore merci tout marche nickel ! j'ai plus qu'a le gérer au survol plutôt qu'au clic et c'est dans la poche Merci beaucoup vraiment c'est super simple, au cas où : onMouseover à la place de onclick dans le code du template 1 Link to comment Share on other sites More sharing options...
Lotfi69 Posted July 19, 2013 Share Posted July 19, 2013 oui lol c'est fait d’ailleurs mais ça je sais y faire lol. Ici c'est le smarty qui me faisait galérer mais vraiment merci beaucoup ! Link to comment Share on other sites More sharing options...
laurens Posted July 27, 2013 Share Posted July 27, 2013 Bonjour, J'ai un petit souci avec les textures , ça fait des heures que je cherche mais sans succès , pour les couleurs pas de problème voici le bout de code qui fonctionne avec les couleurs mais ne m'affiche pas les textures il m'affiche la couleur par défaut ( j'ai pourtant bien créer une texture avec un code couleur) voir capture 1 {if isset($product.colors) && $product.colors} <span class="color_text">{l s='Available colors :'}</span> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onmouseover="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image, 'homcat')}'" onmouseout="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $product.id_image, 'homcat')}'" title="{$color.name}" style="background: {$color.value};"> </a> {/foreach} {/if} et voici le code qui m'affiche une texture mais je n'ai plus les couleurs, de plus la texture prend la place de l'image prix réduit voir capture 2 {if isset($product.colors) && $product.colors} <span class="color_text">{l s='Available colors :'}</span> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onmouseover="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image, 'homcat')}'" onmouseout="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $product.id_image, 'homcat')}'" title="{$color.name}" > <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} {/if} V : 1.4.7.3 Merci Link to comment Share on other sites More sharing options...
laurens Posted July 28, 2013 Share Posted July 28, 2013 Bonjour, svp une réponse même si elle est négative je me sentirait moins seul Link to comment Share on other sites More sharing options...
Tchupa Posted August 19, 2013 Share Posted August 19, 2013 Bonjour, j'aimerais faire la même à part que je voudrais afficher les miniatures des déclinaisons à la place des carrés de couleur mais je ne sais pas trop comment m'y prendre auriez vous une solution a me soumettre? Sachant que je tourne sous prestashop 1.4.10 En vous remerciant. Tchupa. Link to comment Share on other sites More sharing options...
Tchupa Posted August 28, 2013 Share Posted August 28, 2013 Personne n'a une petite piste? Link to comment Share on other sites More sharing options...
Rdev Posted September 26, 2013 Share Posted September 26, 2013 Si ça peut aider ! Test sous Prestashop 1.4.5.1 Dans override/controllers/ créez un fichier CategoryController.php Copiez ceci dans CategoryController.php : <?php class CategoryController extends CategoryControllerCore { public function productListAssign() { $hookExecuted = false; Module::hookExec('productListAssign', array('nbProducts' => &$this->nbProducts, 'catProducts' => &$this->cat_products, 'hookExecuted' => &$hookExecuted)); if(!$hookExecuted) // The hook was not executed, standard working { self::$smarty->assign('categoryNameComplement', ''); $this->nbProducts = $this->category->getProducts(NULL, NULL, NULL, $this->orderBy, $this->orderWay, true); $this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts" $this->cat_products = $this->category->getProducts((int)(self::$cookie->id_lang), (int)($this->p), (int)($this->n), $this->orderBy, $this->orderWay); /* @TODO VERU CORE PRESTASHOP */ foreach ($this->cat_products as $key => $cat_product) { $product = new Product(intval($cat_product['id_product']), true, intval(self::$cookie->id_lang)); $colors = array(); $groupcolor = 1; /* O pour afficher aussi les produits hors stock*/ $prodquantity = 1; $attributesGroups = Db::getInstance()->ExecuteS(' SELECT pai.`id_image`, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name, a.`id_attribute`, al.`name` AS attribute_name, a.`color` AS attribute_color, pa.`id_product_attribute`, pa.`quantity`, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`, pa.`minimal_quantity` FROM `' . _DB_PREFIX_ . 'product_attribute` pa LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_image` pai ON pai.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_lang` al ON a.`id_attribute` = al.`id_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group_lang` agl ON ag.`id_attribute_group` = agl.`id_attribute_group` WHERE pa.`id_product` = '.$cat_product['id_product'].' AND al.`id_lang` = '.self::$cookie->id_lang.' AND agl.`id_lang` = '.self::$cookie->id_lang.' AND ag.`is_color_group` = '.$groupcolor.' AND pa.quantity >= '.$prodquantity.' '); if (Db::getInstance()->numRows()) { foreach ($attributesGroups AS $k => $row) { /* Color management */ if (isset($row['attribute_color']) AND $row['attribute_color'] AND $row['id_attribute_group'] == $product->id_color_default) { $colors[$row['id_attribute']]['value'] = $row['attribute_color']; $colors[$row['id_attribute']]['name'] = $row['attribute_name']; $colors[$row['id_attribute']]['id_image'] =(($row['id_image'] != NULL) ? intval($row['id_image']) : -1); } } } $this->cat_products[$key]['colors'] = $colors; } } else // Hook executed, use the override $this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts" self::$smarty->assign('nb_products', (int)$this->nbProducts); } } ?> Et Copiez ceci dans themes/votre_theme/product-list.tpl : Remplacer le code de l'image par celui-ci : <img id="img_{$product.id_product}" src="{$link->getImageLink($product.link_rewrite, $product.id_image)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" height="{$homeSize.height}" width="{$homeSize.width}" /> {if isset($product.colors) && $product.colors} <!-- colors --> <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$img_prod_dir}{$product.id_product}-{$color.id_image}.jpg'" title="{$color.name}"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} Bonjour, merci pour votre code, mais ça ne fonctionne pas sur prestashop 1.5.5 qui a une idée merci Link to comment Share on other sites More sharing options...
Gaelle_sib Posted October 17, 2013 Share Posted October 17, 2013 Bonjour! Je me décide à vous poster une question car j'essaie d'intégrer les couleurs dans ma page de catégorie sous Prestashop 1.5.4.1. J'aurai besoin de quelques précisions si une âme charitable accepte de me répondre car je n'arrive pas à faire fonctionner cette astuce... Première incertitude : l'ajout dans override > Classes > Product.php - J'ai déjà un fichier de ce nom à cet emplacement. J'ai donc tenté d'ajouter la fonction à la fin de mon fichier existant, j'ai également tenté de le remplacer. - J'ai ajouté le code dans product-list.tpl de mon thème, dans une div spécialement en dehors de la condition : la div apparait bien dans le html mais elle reste désespérément vide... J'ai également changé la balise img afin que, une fois que les oculeurs apparaitront, celle-ci soit modifiée au survol. - Mes couleurs ne sont pas toutes renseignées en "texture" mais cela devrait fonctionner sur les produits dont les couleurs ont les 2 informations (code et texture)? 2e incertitude : la gestion du cache J'ai désactivé le cache Smarty ainsi que le cache serveur... J'ai modifié le alt de l'image pour être sûre que la page est bien été rechargé (et non en cache). Résultat actuel : aucune modification... Je ne découvre Prestashop que depuis un mois et là, je n'ai plus de piste pour faire fonctionner cette fonctionnalité, auriez-vous une idée...? Merci d'avance d'une réponse éventuelle (et merci à AkrOpad pour son astuce, ça va marcher, j'y crois!) Link to comment Share on other sites More sharing options...
AkrOpad Posted October 20, 2013 Share Posted October 20, 2013 (edited) Première incertitude : l'ajout dans override > Classes > Product.php - J'ai déjà un fichier de ce nom à cet emplacement. J'ai donc tenté d'ajouter la fonction à la fin de mon fichier existant, j'ai également tenté de le remplacer. - Mes couleurs ne sont pas toutes renseignées en "texture" mais cela devrait fonctionner sur les produits dont les couleurs ont les 2 informations (code et texture)? 2e incertitude : la gestion du cache J'ai désactivé le cache Smarty ainsi que le cache serveur... J'ai modifié le alt de l'image pour être sûre que la page est bien été rechargé (et non en cache). Résultat actuel : aucune modification... Je ne découvre Prestashop que depuis un mois et là, je n'ai plus de piste pour faire fonctionner cette fonctionnalité, auriez-vous une idée...? Merci d'avance d'une réponse éventuelle (et merci à AkrOpad pour son astuce, ça va marcher, j'y crois!) Bonjour, - Oui il faut bien ajouter la fonction "getProductProperties" modifiée dans la classe Product, fichier : "override > classes > Product.php". - Ajoutez un code couleur et une texture à toutes vos valeurs de couleur. - Désactivez le cache et le vider - L'url Rewrite est-il activé ? Cordialement, Edited October 20, 2013 by AkrOpad (see edit history) 1 Link to comment Share on other sites More sharing options...
Gaelle_sib Posted October 21, 2013 Share Posted October 21, 2013 Merci Arkopad pour ta réponse! Je te confirme que la fonction getProductProperties a été ajoutée à la fin du Product.php d'origine, dans override/classes/ Chacune des couleurs a un code ET une texture maintenant. L'image du produit est bien modifiée dans product-list.tpl (j'ai bien un id défini pour celle-ci) J'ai intégré le code suivant dans ce même fichier : <div id="attributes_list"> {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onMouseover="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image)}'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} </div> Voici le résultat dans le html : <div id="attributes_list"> </div> Si je commente le if de ce bout de code, le html donne : <div id="attributes_list"><p> </p></div> J'ai désactivé le cache dans Performances > Smarty Pour vider le cache, faut-il faire une autre manipulation? Ou juste refaire un appel de page dans le navigateur? Enfin, je te confirme que l'url rewrite est activé. Je te remercie pour ton aide car cette fonction me parait effectivement incontournable pour les prochaines versions! Link to comment Share on other sites More sharing options...
AkrOpad Posted October 22, 2013 Share Posted October 22, 2013 (edited) Merci Arkopad pour ta réponse! Je te confirme que la fonction getProductProperties a été ajoutée à la fin du Product.php d'origine, dans override/classes/ Chacune des couleurs a un code ET une texture maintenant. L'image du produit est bien modifiée dans product-list.tpl (j'ai bien un id défini pour celle-ci) J'ai intégré le code suivant dans ce même fichier : <div id="attributes_list"> {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onMouseover="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image)}'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} </div> Voici le résultat dans le html : <div id="attributes_list"> </div> Si je commente le if de ce bout de code, le html donne : <div id="attributes_list"><p> </p></div> J'ai désactivé le cache dans Performances > Smarty Pour vider le cache, faut-il faire une autre manipulation? Ou juste refaire un appel de page dans le navigateur? Enfin, je te confirme que l'url rewrite est activé. Je te remercie pour ton aide car cette fonction me parait effectivement incontournable pour les prochaines versions! Bonjour, Et ça ne fonctionne toujours pas ??? Il faut ajouter la fonction "getProductProperties" modifiée dans la classe Product, fichier : "override > classes > Product.php". comme ceci : <?php class Product extends ProductCore { public static function getProductProperties($id_lang, $row, Context $context = null) { if (!$row['id_product']) return false; if ($context == null) $context = Context::getContext(); // Product::getDefaultAttribute is only called if id_product_attribute is missing from the SQL query at the origin of it: // consider adding it in order to avoid unnecessary queries $row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']); if (Combination::isFeatureActive() && (!isset($row['id_product_attribute']) || !$row['id_product_attribute']) && ((isset($row['cache_default_attribute']) && ($ipa_default = $row['cache_default_attribute']) !== null) || ($ipa_default = Product::getDefaultAttribute($row['id_product'], !$row['allow_oosp'])))) $row['id_product_attribute'] = $ipa_default; if (!Combination::isFeatureActive() || !isset($row['id_product_attribute'])) $row['id_product_attribute'] = 0; // Tax $usetax = Tax::excludeTaxeOption(); $cache_key = $row['id_product'].'-'.$row['id_product_attribute'].'-'.$id_lang.'-'.(int)$usetax; if (isset($row['id_product_pack'])) $cache_key .= '-pack'.$row['id_product_pack']; if (isset(self::$producPropertiesCache[$cache_key])) return array_merge($row, self::$producPropertiesCache[$cache_key]); // Datas $row['category'] = Category::getLinkRewrite((int)$row['id_category_default'], (int)$id_lang); $row['link'] = $context->link->getProductLink((int)$row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']); $row['attribute_price'] = 0; if (isset($row['id_product_attribute']) && $row['id_product_attribute']) $row['attribute_price'] = (float)Product::getProductAttributePrice($row['id_product_attribute']); $row['price_tax_exc'] = Product::getPriceStatic( (int)$row['id_product'], false, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), (self::$_taxCalculationMethod == PS_TAX_EXC ? 2 : 6) ); if (self::$_taxCalculationMethod == PS_TAX_EXC) { $row['price_tax_exc'] = Tools::ps_round($row['price_tax_exc'], 2); $row['price'] = Product::getPriceStatic( (int)$row['id_product'], true, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), 6 ); $row['price_without_reduction'] = Product::getPriceStatic( (int)$row['id_product'], false, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), 2, null, false, false ); } else { $row['price'] = Tools::ps_round( Product::getPriceStatic( (int)$row['id_product'], true, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), 2 ), 2 ); $row['price_without_reduction'] = Product::getPriceStatic( (int)$row['id_product'], true, ((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null), 6, null, false, false ); } $row['reduction'] = Product::getPriceStatic( (int)$row['id_product'], (bool)$usetax, (int)$row['id_product_attribute'], 6, null, true, true, 1, true, null, null, null, $specific_prices ); $row['specific_prices'] = $specific_prices; $row['quantity'] = Product::getQuantity( (int)$row['id_product'], 0, isset($row['cache_is_pack']) ? $row['cache_is_pack'] : null ); if ($row['id_product_attribute']) { $row['quantity_all_versions'] = $row['quantity']; $row['quantity'] = Product::getQuantity( (int)$row['id_product'], $row['id_product_attribute'], isset($row['cache_is_pack']) ? $row['cache_is_pack'] : null ); } $row['id_image'] = Product::defineProductImage($row, $id_lang); $row['features'] = Product::getFrontFeaturesStatic((int)$id_lang, $row['id_product']); $row['attachments'] = array(); if (!isset($row['cache_has_attachments']) || $row['cache_has_attachments']) $row['attachments'] = Product::getAttachmentsStatic((int)$id_lang, $row['id_product']); $row['virtual'] = ((!isset($row['is_virtual']) || $row['is_virtual']) ? 1 : 0); // Color Product-list $colors = array(); /* Vérifier l id du groupe dans l admin Catalogue > Attributs et Valeurs > dans la liste ex: Couleur l id = 1 */ $groupcolor = 1; /* O pour afficher aussi les produits hors stock */ $prodquantity = 0; $attributesGroups = Db::getInstance()->ExecuteS(' SELECT pai.`id_image`, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name, a.`id_attribute`, al.`name` AS attribute_name, a.`color` AS attribute_color, pa.`id_product_attribute`, pa.`quantity`, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`, pa.`minimal_quantity` FROM `' . _DB_PREFIX_ . 'product_attribute` pa LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_image` pai ON pai.`id_product_attribute` = pa.`id_product_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute` a ON a.`id_attribute` = pac.`id_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_lang` al ON a.`id_attribute` = al.`id_attribute` LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group_lang` agl ON ag.`id_attribute_group` = agl.`id_attribute_group` WHERE pa.`id_product` = '.(int)$row['id_product'].' AND al.`id_lang` = '.(int)($id_lang).' AND agl.`id_lang` = '.(int)($id_lang).' AND ag.`is_color_group` = '.$groupcolor.' AND pa.quantity >= '.$prodquantity.' GROUP BY id_attribute '); if (Db::getInstance()->numRows()) { foreach ($attributesGroups AS $k => $rowcolo) { // Color management if (isset($rowcolo['attribute_color']) AND $rowcolo['attribute_color'] ) { $colors[$rowcolo['id_attribute']]['value'] = $rowcolo['attribute_color']; $colors[$rowcolo['id_attribute']]['name'] = $rowcolo['attribute_name']; $colors[$rowcolo['id_attribute']]['id_image'] =(($rowcolo['id_image'] != NULL) ? intval($rowcolo['id_image']) : -1); } } } $row['colors'] = $colors; // End Color Product-list // Pack management $row['pack'] = (!isset($row['cache_is_pack']) ? Pack::isPack($row['id_product']) : (int)$row['cache_is_pack']); $row['packItems'] = $row['pack'] ? Pack::getItemTable($row['id_product'], $id_lang) : array(); $row['nopackprice'] = $row['pack'] ? Pack::noPackPrice($row['id_product']) : 0; if ($row['pack'] && !Pack::isInStock($row['id_product'])) $row['quantity'] = 0; $row = Product::getTaxesInformations($row, $context); self::$producPropertiesCache[$cache_key] = $row; return self::$producPropertiesCache[$cache_key]; } } ?> Et Copiez ceci dans themes/votre_theme/product-list.tpl : Remplacez le code de l’image par celui-ci : <img id="img_{$product.id_product}" src="{$link->getImageLink($product.link_rewrite, $product.id_image)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" height="{$homeSize.height}" width="{$homeSize.width}" /> Et placez : {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image)}'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} Cordialement, Edited October 28, 2013 by AkrOpad (see edit history) Link to comment Share on other sites More sharing options...
mistertendance Posted October 28, 2013 Share Posted October 28, 2013 En 1.5.6 ca marche mais quand on click sur la couleur l'image ne se change pas et on a un gros point d'interrogation y'a t'il une solution ??? merci d'avance Link to comment Share on other sites More sharing options...
AkrOpad Posted October 28, 2013 Share Posted October 28, 2013 (edited) En 1.5.6 ca marche mais quand on click sur la couleur l'image ne se change pas et on a un gros point d'interrogation y'a t'il une solution ??? merci d'avance Remplacez le code du template par celui-ci ! {if isset($product.colors) && $product.colors} <p> {foreach from=$product.colors key='id_attribute' item='color'} <a id="{$product.id_product}-{$color.id_image}" class="color_pick" onclick="document.getElementById('img_{$product.id_product}').src='{$link->getImageLink($product.link_rewrite, $color.id_image)}'"> <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" /> </a> {/foreach} </p> {/if} Edited October 28, 2013 by AkrOpad (see edit history) Link to comment Share on other sites More sharing options...
mistertendance Posted October 28, 2013 Share Posted October 28, 2013 excellent !!! merci beaucoup pour tout Link to comment Share on other sites More sharing options...
mistertendance Posted October 29, 2013 Share Posted October 29, 2013 J'ai réussi à faire exactement ce que je cherchais sur la page product-list.tpl je cherches à le faire sur mes modules de page d'accueil comment faire ?? merci d'avance Link to comment Share on other sites More sharing options...
Gaelle_sib Posted October 30, 2013 Share Posted October 30, 2013 Bonjour, Je ne sais pas si mon thème est la raison du problème mais je ne peux faire apparaître les attributs de couleur... J'ai pourtant suivi à la lettre vos indications mais rien n'y fait. Il semble que je n'ai pas de valeur pour $product.colors d'où un vide persistant dans mes listes de produits à cet endroit du html. J'ai comparé avec product.tpl puisque c'est le seul endroit où apparaissent les images de couleurs. Ce n'est pas du tout la même terminologie. Cette page fait appel a $groups et $group.group_type == 'color' avec un script en haut de code. Dans product-list.tpl, la zone dans {if isset($product.colors) && $product.colors} {/if} reste malheureusement vide et ne s'affiche pas (même en y insérant un caractère "en dur". La condition n'est donc pas remplie... Voici le code que j'ai dans product.tpl : {elseif ($group.group_type == 'color')} <ul id="color_to_pick_list" class="clearfix"> {assign var="default_colorpicker" value=""} {foreach from=$group.attributes key=id_attribute item=group_attribute} <li{if $group.default == $id_attribute} class="selected"{/if}> <a id="color_{$id_attribute|intval}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}" style="background: {$colors.$id_attribute.value};" title="{$colors.$id_attribute.name}" onclick="colorPickerClick(this);getProductAttribute();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if}"> {if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')} <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$colors.$id_attribute.name}" width="15" height="15" /><br> {/if} </a> </li> {if ($group.default == $id_attribute)} {$default_colorpicker = $id_attribute} {/if} {/foreach} </ul> Je ne sais pas où / comment trouver ce qui cloche! J'ai un module également qui était prévu pour cet affichage mais il affiche aussi les tailles, le tout en ajax mais... le temps de chargement de page est totalement impraticable... Si une bonne âme a une suggestion, une piste, un tuto... Je vous en serais très reconnaissante! Merci d'avance Link to comment Share on other sites More sharing options...
Gaelle_sib Posted November 17, 2013 Share Posted November 17, 2013 Bonjour, Je viens de trouver pourquoi je n'avais aucun résultat d'affichage de couleurs avec cette astuce!!! Donc, si ça peut servir à quelqu'un: mon attribut "Couleur" était bien défini dans mon back office comme un attribut de type Couleur mais, pour une raison que j'ignore, celui-ci était bien en type "Color" dans ma base de données (table ps_attribute_group) mais il y a un 2e champ qui définit la nature de cet attribut "is_color_group" et celui-ci était à "0" au lieu de "1"... :-) Link to comment Share on other sites More sharing options...
AkrOpad Posted November 17, 2013 Share Posted November 17, 2013 (edited) Bonjour, Je viens de trouver pourquoi je n'avais aucun résultat d'affichage de couleurs avec cette astuce!!! Donc, si ça peut servir à quelqu'un: mon attribut "Couleur" était bien défini dans mon back office comme un attribut de type Couleur mais, pour une raison que j'ignore, celui-ci était bien en type "Color" dans ma base de données (table ps_attribute_group) mais il y a un 2e champ qui définit la nature de cet attribut "is_color_group" et celui-ci était à "0" au lieu de "1"... :-) Ah oui ! Dans override/classes/product.php mettre $groupcolor = 0; au lieu de $groupcolor = 1; Edited November 17, 2013 by AkrOpad (see edit history) Link to comment Share on other sites More sharing options...
zoomtronic Posted November 26, 2013 Share Posted November 26, 2013 Bonjour, En page 2, ichigoK postait une solution pour afficher un groupe d'attribut en particulier. Le code n'a pas l'air de fonctionner sous 1.5.6, je pense surtout que je suis perdu ! Avez-vous une solution ? Link to comment Share on other sites More sharing options...
zellige Posted November 26, 2013 Share Posted November 26, 2013 Bonjour à tous, Je souhaiterai savoir si cette méthode fonctionne sur prestashop 1.5.6. Quelqu'un aurait il l'amabilité de faire un résumé de la procédure, en effet ce sujet contient 7 pages et je suis un peu perdue ! Merci d'avance, Link to comment Share on other sites More sharing options...
AkrOpad Posted November 26, 2013 Share Posted November 26, 2013 Bonjour à tous, Je souhaiterai savoir si cette méthode fonctionne sur prestashop 1.5.6. Quelqu'un aurait il l'amabilité de faire un résumé de la procédure, en effet ce sujet contient 7 pages et je suis un peu perdue ! Merci d'avance, Bonjour, http://akropad.com/web-developpement/prestashop-1-5-6-afficher-la-liste-des-couleurs-dans-la-liste-des-produits Cordialement, Link to comment Share on other sites More sharing options...
zellige Posted November 26, 2013 Share Posted November 26, 2013 Bonjour, http://akropad.com/web-developpement/prestashop-1-5-6-afficher-la-liste-des-couleurs-dans-la-liste-des-produits Cordialement, Merci beaucoup ! Link to comment Share on other sites More sharing options...
zoomtronic Posted November 26, 2013 Share Posted November 26, 2013 @AkrOpad aurais-tu une solution miracle afficher qu'un seul groupe d'attribut? Link to comment Share on other sites More sharing options...
AkrOpad Posted November 26, 2013 Share Posted November 26, 2013 @AkrOpad aurais-tu une solution miracle afficher qu'un seul groupe d'attribut? Bonjour, Malheureusement pas en stock pour prestashop 1.5, ça fait un bon moment que j'y pense... Cordialement, Link to comment Share on other sites More sharing options...
zoomtronic Posted November 26, 2013 Share Posted November 26, 2013 Si je trouve la solution je posterai ici. Merci quand même ! Link to comment Share on other sites More sharing options...
trinkyz Posted December 17, 2013 Share Posted December 17, 2013 Bonjour Bonjour, Tout d'abord je tiens vraiment a te remercier Akropad pour tout le mal que tu t'es donné et pour ta disponibilité, j'ai pas encore mis tout ça en place mais je pense qu'avec ce topic je devrais me débrouiller Juste une question, serait-il possible, à la place des carrés de couleur, d'avoir directement les aperçus produits des différents couleurs clickables et l'image qui se change au survol de chacun? Si je remplace les couleurs par des images dans les valeurs ça devrait le faire non ? Au final j'adorerais avoir à peu près ce rendu là: http://www.articlesdeparis.com/bijoux-mode-bracelets-c-23_34.html Merci d'avance, Je trouve vraiment que tu fais un super boulot ! Bonne semaine à tous Link to comment Share on other sites More sharing options...
wxhlybb Posted March 24, 2014 Share Posted March 24, 2014 Bonjour, Tout d'aborde merci beaucoup votre info, cela vraiment m'a aidé beaucoup ! Du coup j'aimerais savoir si vous connaissez comment on peut afficher les couleur pour les produits accesoires dans la page Produit. Je vous remercie en avance Cordialement Mania Link to comment Share on other sites More sharing options...
JLCH Posted November 30, 2014 Share Posted November 30, 2014 Bonjour, je ne sais pas si je suis dans le bon topic, mais j'ai un problème avec les déclinaisons (éventuellement un conseil sur un module existant serait tres bien) voila ma problématique: Sur un PS 1.5.5 j'ai des produits ayants plusieurs déclinaisons, par exemple un fauteuil existe en tissus, simili, et cuirs. Chaque matériaux à une 30ene de textures différentes à afficher. Du coups sur la fiche produit l'affichage est très laid car entre lest différentes couleurs, grains, etc de chaque textures il y a 70 à 80 imagettes carres sur la droite. Je voudrais un système permettant un 1er choix de la matière, qui ouvrirai le choix de ces texture par exemple, dans un déroulant je choisi cuir parmi "tissus, simili, cuir," et là j'ai les texture cuis uniquement qui s'affichent. Ou ya un scroller latéral sur les 3 (ou plus) matériaux "tissus, simili, cuir," n'affichant les imagette de textures que sur 3 lignes. Quelqu'un à une idée? D'avance merci. Link to comment Share on other sites More sharing options...
Upyourcom Posted April 9, 2015 Share Posted April 9, 2015 Bonjour, Dans la liste des produits, j'aimerais exclure un attribut qui est de type couleur. En effet, mes produits possèdent plusieurs attributs de type couleur et j'aimerais afficher les couleurs d'un seul ID... Merci d'avance pour vos réponses. PS: je suis sous Prestashop v1.6.0.9 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