Jump to content

[RESOLU] Multiplier la palette de coloris pour l'utiliser autrement


Recommended Posts

Salut à tous !
Voilà, je me sert de cette palette afin de personnaliser des produits avec typo et image.

Problème, j'ai créé deux palettes, l'une pour typo et l'autre pour image, hors dans BO il faut obligatoirement choisir entre les deux...

Alors sur serait-ce possible de faire des modifications afin que les deux palettes (ou plus) soient prises en compte ?

Sinon avoir la possibilité de multiplier ce "module" palette de coloris. En supposant qu'on puisse le multiplier, il y aura surement un problème de dédoublage du "module" exemple: le même titre, les même taille d'image etc...
Alors il faudrait différencier chaque personnalisation.


Quelqu'un aurait-il une idée pour cela? Je pense que ça pourrait être vraiment pas mal.

Merci d'avance à tous ceux qui répondront :)


EDIT :

1ere SOLUTION ( merci à Damemarianne et merci aussi a A-prods pour son aide) :) :

dans le product.php
-- ligne 273
-----remplacer ce code :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) 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'];
}


-----par :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
   $colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
}
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];



-- ligne 318
-----remplacer ce code :

'colors' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,


-----par :

'colors_group' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,



dans le product.tpl (du thème)
-- ligne 162
-----remplacer ce code :

{if $colors}
<!-- colors -->


{l s='Pick a color:' js=1}


   {foreach from=$colors key='id_attribute' item='color'}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
   {/foreach}



{/if}


-----par :

{if $colors_group}
   <!-- colors -->

       {foreach from=$colors_group key='id_attribute_group' item='colors'}


{$colors.public_group_name} :


               {foreach from=$colors key='id_attribute' item='color'}
                   {if $id_attribute!="public_group_name"}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
                   {/if}
               {/foreach}




       {/foreach}

{/if}



Et surtout n'oubliez par de rajouter dans la balise a du li ce code :

onclick="updateColorSelect({$id_attribute|intval},{$id_attribute_group|intval});$('#wrapResetImages').show('slow');"



Enfin dans le product.js (du thème)
-- ligne 105
-----remplacer ce code :

function updateColorSelect(id_attribute)


-----par :

function updateColorSelect(id_attribute,id_color_default)



Modifiez le code à la ligne 271 afin que les attributs concernés ne soient que les palettes couleurs.
-- ligne 271
-----remplacer ce code :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
   $colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
}
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];



-----par

if (((isset($row['attribute_color']) AND $row['attribute_color']AND ($row['is_color_group']==1)) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
   $colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
   $colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];
}



Vous obtiendrez alors des images de la même taille que les cadres de couleur avec la fonction de clique et le changement d'image qui marche.

31824_QmzqIrSgBcRS1vrx8vHp_t

31825_KElLNZawZYLnP9VerkYW_t

41252_WR4G0Azp7gu64jckyzOa_t

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

Moi je créerai un nouveau groupe d'attribut. Ensuite dans le code du product.tpl, tu peux utiliser l'ID du groupe et du coup, ne pas utiliser la liste déroulante de base des groupes, mais une liste d'images.

Par exemple :
{foreach from=$groups key=id_attribute_group item=group}
{if $id_attribute_group|intval == 2}

{foreach from=$group.attributes key=id_attribute item=group_attribute}
{$id_attribute|intval}
{/foreach}

{/if}
{/foreach}

Enfin voila, c'est pas des plus compréhensibles, mais ça pourrait marcher. Il faudrait ensuite que tu mettes chaque image dans le dossier /img/g et que tu l'appelles img_4.jpg par exemple. C'est moins automatique, mais ça reste une bonne piste.
Pour ensuite récupérer l'ID de l'attribut, il faut mettre un input type="hidden" et un événement onclick="$('#input_group').val({$id_attribute|intval});"

Link to comment
Share on other sites

Alors voila le fichier.
Il y a 3 fois l'ID à renseigner :
Ligne 174
Ligne 178
Ligne 251

Avec ce code, la liste déroulante ne s'affichera pas, uniquement les images en dessous du color Picker.

Pour les images, tu peux changer le dossier dans le code, Ligne 178, dans l'attribut 'src' de l'élément images (actuellement, ça serait un dossier attr dans le dossier img).
Le truc un peu long est de devoir nommer chaque image avec l'ID de l'attribut du groupe. Tu peux trouver facilement depuis la partie admin, dans l'URL de la fiche attribut.

product_edited.zip

Link to comment
Share on other sites

C'est déjà un bon début !
Pour améliorer l'afficher, tu peux rajouter 2 propriétés dans le CSS sur : #color_to_pick_list :
clear:left;
overflow:hidden;
Pour que ça aille bien à la ligne.

Le onclick est invisible en fait, ça change la valeur d'un input type="hidden" (donc caché) dans ton form.
Tu peux ajouter un événement si tu veux, un alert() ou autre.

Link to comment
Share on other sites

Ah ma faute ! J'ai oublié une chose.
Il faut rajouter sur l'événement onclick de l'image : [removed]findCombination();

Cela permet de créer la combinaison en fonction des produits, il y a un input type="hidden" aussi qui doit changer de valeur.
Mais pour le changement d'images, tu veux signifier quoi exactement ? En cliquant sur une des petites images, l'image principale change ?
Je ne suis pas très calé sur l'admin de Prestashop, donc je ne connais pas toutes les possibilités encore ....

Link to comment
Share on other sites

Le plus important, c'est que se soit pris en compte lors de l'envoie au panier.

Sinon pour le petit plus, oui c'est le changement de l'image principale. Exemple: avec la palette de couleur simple, si tu attribues au rose une image de couleur rose, lorsque tu cliques sur la couleur rose, l'image principale change.

Serait-ce ceci? ligne 168, dans le onclick de la palette de base

;$('#resetImages').show('slow');

Link to comment
Share on other sites

Ah ok tout simplement, oui à priori c'est ce petit bout de Javascript (JQuery même).
Il est présent sur tous les éléments Color.

findCombination() permet de bien le prendre en compte lors de l'envoi au panier.
Si tu as firebug, cherche l'input type="hidden" avec comme nom IdCombination (je crois !), sa valeur doit changer lors du clic sur une image.

Link to comment
Share on other sites

Yop je reviens encore dessus un lundi matin ^^

Alors j'ai bien remplacé le hidden par findCombination(), un champ de plus s'affiche et quand on clique sur un choix, il prend en compte le numéro de la déclinaison /**voir image **/ mais quand on ajoute au panier, il ne la prend toujours pas . En ce qui concerne l'image centrale qui change, il se passe bien un petit changement. "afficher toutes les images" s'affiche mais l'image de change pas.

je sens qu'on est tout près, mais ça résiste encore et encore ><

32907_Krey35Ee5slyUsqHzQhl_t

Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...

Bonjour,

Je vient de faire la modif pour un de mes sites et comme j'étais tombée sur votre post avant, voila les modifs que j'ai effectuées :

Pas de démo le site en question n'est pas encore en ligne

Trois fichiers sont à modifier

A la racine de votre boutique le fichier product.php

Ligne 273 remplacer

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) 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'];
}



Par

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color'] AND $row['is_color_group']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
   $colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
}
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];



On modifie le test pour prendre en compte tout les attributs de couleurs et plus seulement celui sélectionné pour le produit (attention du coup tout les attributs de couleurs auront leur palette il n'y a plus de choix)
Puis une modification du tableau de la palette pour y mettre les différentes palettes
Enfin j'ajoute à mon tableau le nom de l'option pour affichage ultérieur.

Ligne 318 remplacer

'colors' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,


Par

'colors_group' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,




Ensuite dans themes/votre_theme/product.tpl
Remplacer toute la partie de la palette ligne 162

{if $colors}
<!-- colors -->


{l s='Pick a color:' js=1}


   {foreach from=$colors key='id_attribute' item='color'}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
   {/foreach}



{/if}


Par

{if $colors_group}
   <!-- colors -->

       {foreach from=$colors_group key='id_attribute_group' item='colors'}


{$colors.public_group_name} :


               {foreach from=$colors key='id_attribute' item='color'}
                   {if $id_attribute!="public_group_name"}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
                   {/if}
               {/foreach}




       {/foreach}

{/if}




Pb de censure du forum qui supprime mon js, il faut ajouter à la balise

onclick="updateColorSelect({$id_attribute|intval},{$id_attribute_group});$('#resetImages').show('slow');"



Et à la balise

onclick="updateColorSelect(0,{$id_attribute_group});$('a#resetImages').hide('slow');" title="{l s='Cancel'}"



En résumé on fait une boucle pour chaque groupe de coloris, au lieu de choisissez une couleur j'affiche le libelle de l'attribut pour les différencier.

Là tout s'affiche bien mais il n'y a pas de liaison entre les palettes et les listes déroulantes.

Il faut encore modifier le fichier themes/votre_theme/js/product.js
Ligne 105 remplacer :

function updateColorSelect(id_attribute)


Par

function updateColorSelect(id_attribute,id_color_default)




Edit 16/05/2011 : rajout du js supprimé par le forum et d'un test oublié pour voir si la déclinaison est bien un coloris

Link to comment
Share on other sites

  • 1 month later...

EUREKA J'AI TROUVE!!
desole :)
Eureka j'ai trouve

en ligne 162 de product.tpl:
remplacer

{if $colors}
       <!-- colors -->


{l s='Pick a color:' js=1}


           {foreach from=$colors key='id_attribute' item='color'}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
           {/foreach}



       {/if}


par:

{if $colors}
       <!-- colors -->

       {foreach from=$groups key=id_attribute_group item=group}



{$group.name|escape:'htmlall':'UTF-8'} :
               {assign var='groupName' value='group_'|cat:$id_attribute_group}

                   {foreach from=$group.attributes key=id_attribute item=group_attribute}
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}{/if}
                   {/foreach}




       {/foreach}
       {/if}


a la ligne 105 du fichier product.js (dans le dossier js du theme)
remplacer

function updateColorSelect(id_attribute) 
{
   if (id_attribute == 0)
   {
       refreshProductImages(0);
       return ;
   }
   // Visual effect
   $('#color_'+id_attribute).fadeTo('fast', 1, function(){    $(this).fadeTo('slow', 0, function(){ $(this).fadeTo('slow', 1, function(){}); }); });
   // Attribute selection
   $('#group_'+id_color_default+' option[value='+id_attribute+']').attr('selected', 'selected');
   $('#group_'+id_color_default+' option[value!='+id_attribute+']').removeAttr('selected');
   findCombination();
}


par

function updateColorSelect(id_attribute,id_attribute_group) 
{
   if (id_attribute == 0)
   {
       refreshProductImages(0);
       return ;
   }
   // Visual effect
   $('#color_'+id_attribute).fadeTo('fast', 1, function(){    $(this).fadeTo('slow', 0, function(){ $(this).fadeTo('slow', 1, function(){}); }); });
   // Attribute selection
   $('#group_'+id_attribute_group+' option[value='+id_attribute+']').attr('selected', 'selected');
   $('#group_'+id_attribute_group+' option[value!='+id_attribute+']').removeAttr('selected');
   findCombination();
}



C'etait tout bete l'ID du groupe n'etait envoye a la fonction js du coup le select ne se changeait pas donc le click sur l'attribut n'etait pas pris en compte.

Ca change egalement l'image principale du produit

Apres 4 heures, j'espere que ca en aidera plus d'un

Link to comment
Share on other sites

J'ai aussi retesté la version de Damemarianne et ça fonctionne très bien. mais biensur, dans le product.tpl il ne faut pas oublier le

onclick="updateColorSelect({$id_attribute|intval},{$id_attribute_group|intval});$('#wrapResetImages').show('slow');"



après le

style="background: {$color.value};"

dans la balise a du

41251_4xK0VQ8QFWKU3GUjAuhN_t

Link to comment
Share on other sites

effectivement c'est mieux car on recupere la valeur de la couleur
mais c'est moins bien car on touche au coeur de PS (probleme pour mise a jour future)

Un autre probleme subsiste:
si une declinaison n'ai pas un coloris il l'affiche quand meme comme tel avec que des couleurs noir (par default)
Dans l'exemple ci joint l'attribut Taille n'est configure commme palette de couleur. il faudrait afficher que le menu deroulant.
Sinon tous les produits de la boutique avec declinaisons a;fficheront sous forme de palette.

J'ai essaye (sans succes) a recuprer la valeur de "is_color_group" dans la DB (table ps_attribute_group) pour faire un {if}

Quelqu'un aurait il une idee pour que cela n'affecte que les declinaisons de type "coloris"

41361_cK8ZXKrvwn1zeOq5cXQi_t

Link to comment
Share on other sites

J'ai trouve la solution
dans le fichier product.php
il faut mettre

if (((isset($row['attribute_color']) AND $row['attribute_color']AND ($row['is_color_group']==1)) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
   $colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
   $colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
   $colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];
}


a la place de

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Je retombe sur mon message en essayant de faire la même modif pour un autre client et ... bah ça marche pas.

Après verif le forum avait supprimé le js de mon code.

J'ai donc édité mon post de base avec le js à part.

http://www.prestashop.com/forums/viewthread/74716/P15/#374596



Ps : en bonus ajout d'un test pour n'afficher que les attributs coloris/image

Link to comment
Share on other sites

Voila un module qui permet de faire tous sa, sans changer toute les lignes de code.

http://www.xn—crating-cya.com/product.php?id_product=56

Demo du module: http://www.xn—crating-cya.com/category.php?id_category=8

Module Sur Prestashop Addons: http://addons.prestashop.com/fr/fonctionnalites-front-office/1247-gestion-declinaisons-visuels-illimites.html

Sur Prestashop Addons vous avez plus de screenshots de notre module.

Cordialement L‘équipe Créating.com

45300_G18FIRsnwjudd2ndOd4l_t

45301_dom3IZqOZ7qmI9JXMoJK_t

45302_JyrCIIREGKVhnHjfNeIo_t

45303_GozoTi9uGe6KBqDXDXFX_t

45304_8plnvhkUyNcpf2mKoEA9_t

Link to comment
Share on other sites

  • 1 month later...

Bonjour à tous,
je cherche à afficher 2 palettes de couleurs que j'utilise dans mes déclinaisons. Mais il ne propose l'affichage que l'une des 2 palettes. Or les couleurs sont differents dans les 2 groupes. Les clients ne peuvent donc pas choisir la 2eme couleur sans la voir :(
Je pense que c'est plus simple que ce que vous avez reussi à faire... Bravo... Alors peut être pourriez vous m'aider svp?
Je suis sous PS 1.4.1
Merci

P.S : ou alors au moins afficher un petit carré avec la couleur ds la liste deroulante ??? c'est une idée comme ça :s

Link to comment
Share on other sites

  • 1 year later...

Bonjour,

 

Il faudrait que je puisse faire ceci sur mon site mais je suis sur prestashop 1.4

 

quelqu'un pourrait il m'aider ? la prestation sera rémunéré.

 

J'ai lu le topic et j'ai vu qu'il y avait pas mal d'erreur donc je ne préfère pas me confronter au meme probleme car je ne saurait pas le résoudre.

 

cordialement

Link to comment
Share on other sites

  • 3 months later...

Salut, merci pour la réponse, mais vous pouvez expliquer étape par étape ce qu'il faut faire, vous devez modifier les fichiers, s'ils ordonner la solution sera en mesure d'aider ceux qui sont un peu perdu avec ce sujet, salutations et remerciements. - Google translate :(

 

Hi, thanks for replying, but you can explain step by step what to do, you need to modify files, if they order the solution will be able to help those who are a little lost with this topic, greetings and thanks. - Google translate :(

 

Hola, gracias por responder, pero podéis explicar paso a paso lo que hay que hacer, que archivos hay que modificar, si ordenan la solución podran ayudarnos a los que estamos un poco perdidos con este tema, saludos y gracias.

Edited by yesiam (see edit history)
Link to comment
Share on other sites

  • 5 months later...

Salut à tous !

Voilà, je me sert de cette palette afin de personnaliser des produits avec typo et image.

 

Problème, j'ai créé deux palettes, l'une pour typo et l'autre pour image, hors dans BO il faut obligatoirement choisir entre les deux...

 

Alors sur serait-ce possible de faire des modifications afin que les deux palettes (ou plus) soient prises en compte ?

 

Sinon avoir la possibilité de multiplier ce "module" palette de coloris. En supposant qu'on puisse le multiplier, il y aura surement un problème de dédoublage du "module" exemple: le même titre, les même taille d'image etc...

Alors il faudrait différencier chaque personnalisation.

 

 

Quelqu'un aurait-il une idée pour cela? Je pense que ça pourrait être vraiment pas mal.

 

Merci d'avance à tous ceux qui répondront :)

 

 

EDIT :

 

1ere SOLUTION ( merci à Damemarianne et merci aussi a A-prods pour son aide) :) :

 

dans le product.php

-- ligne 273

-----remplacer ce code :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) 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'];
}

-----par :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
$colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
$colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
}
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];

 

-- ligne 318

-----remplacer ce code :

'colors' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,

-----par :

'colors_group' => (sizeof($colors) AND $product->id_color_default) ? $colors : false,

 

dans le product.tpl (du thème)

-- ligne 162

-----remplacer ce code :

{if $colors}
<!-- colors -->


{l s='Pick a color:' js=1}


[list]
{foreach from=$colors key='id_attribute' item='color'}
	[*][url=""]{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}[img={$img_col_dir}{$id_attribute}.jpg]{/if}[/url]
{/foreach}

[/list]	


{/if}

-----par :

{if $colors_group}
<!-- colors -->


	{foreach from=$colors_group key='id_attribute_group' item='colors'}



{$colors.public_group_name} :


			[list]
			{foreach from=$colors key='id_attribute' item='color'}
				{if $id_attribute!="public_group_name"}
					[*][url=""]{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}[img={$img_col_dir}{$id_attribute}.jpg]{/if}[/url]
				{/if}
			{/foreach}

[/list]					[url=""][img={$img_dir}icon/cancel.gif][/url]



	{/foreach}


{/if}

 

Et surtout n'oubliez par de rajouter dans la balise a du li ce code :

onclick="updateColorSelect({$id_attribute|intval},{$id_attribute_group|intval});$('#wrapResetImages').show('slow');"

 

Enfin dans le product.js (du thème)

-- ligne 105

-----remplacer ce code :

function updateColorSelect(id_attribute)

-----par :

function updateColorSelect(id_attribute,id_color_default)

 

Modifiez le code à la ligne 271 afin que les attributs concernés ne soient que les palettes couleurs.

-- ligne 271

-----remplacer ce code :

/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
$colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
$colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
}
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];

 

-----par

if (((isset($row['attribute_color']) AND $row['attribute_color']AND ($row['is_color_group']==1)) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) )//AND $row['id_attribute_group'] == $product->id_color_default)
{
$colors[$row['id_attribute_group']][$row['id_attribute']]['value'] = $row['attribute_color'];
$colors[$row['id_attribute_group']][$row['id_attribute']]['name'] = $row['attribute_name'];
$colors[$row['id_attribute_group']]['public_group_name']=$row['public_group_name'];
}

 

Vous obtiendrez alors des images de la même taille que les cadres de couleur avec la fonction de clique et le changement d'image qui marche.

 

 

Super ta solution mais c'est sur quelle version? sur la version 1.4.6.2 c'est pas les memes codes

 

 

voici le code que j'ai pour le color picker sur product.tpl

 

 

{if isset($colors) && $colors}

 

<!-- colors -->

 

<div id="color_picker">

 

<p>{l s='Pick a color:' js=1}</p>

 

<div class="clear"></div>

 

<ul id="color_to_pick_list">

{foreach from=$colors key='id_attribute' item='color'}

<li><a id="color_{$id_attribute|intval}" class="color_pick" style="background: {$color.value};" onclick="updateColorSelect({$id_attribute|intval});$('#wrapResetImages').show('slow');" title="{$color.name}">{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}<img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" width="20" height="20" />{/if}</a></li>

{/foreach}

 

</ul>

 

<div class="clear"></div>

</div>

{/if}

 

 

le code attributes toujours sur product.tpl

 

{if isset($groups)}

 

<!-- attributes -->

 

<div id="attributes">

 

{foreach from=$groups key=id_attribute_group item=group}

{if $group.attributes|@count}

 

<p>

<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>

 

{assign var="groupName" value="group_$id_attribute_group"}

 

<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">

 

{foreach from=$group.attributes key=id_attribute item=group_attribute}

<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option>

 

{/foreach}

 

</select>

 

</p>

 

{/if}

{/foreach}

</div>

Edited by jamesford (see edit history)
Link to comment
Share on other sites

yes c'est un vieux topic! mais domage que prestashop ne propose q'une seule palette couleur!

 

Okey je vais revoir le code, et l'envoyer ici des ce soir (avec les balises...je savais pas comment faire ;) )

 

Je ne sais pas sur quelle version tu etais pour avoir ce code, moi je suis sur la 1.4.6 et c'est pas les meme codes...!

 

je veux proposer a mes utilisateur de personnaliser des stickers, donc je recherche a ajouter une autre palette textures, une autre palette style graphique....

 

J'ai reussi a dupliquer le color picker en touchant a ce code, mais c'est pas le but...

Link to comment
Share on other sites

Donc voila, la réctification de code que tu propose n'est pas envisageable sur la version 1.4.6voici donc les morceaux de code attribute et color picker si quelqu'un peut nous aider sur ce probleme on galere depuis quelques jours meme en essayant de toucher au codes!=====> Page "product.tpl"=> code couleur ligne 208

{if isset($colors) && $colors}

{l s='Pick a color:' js=1}[list]
{foreach from=$colors key='id_attribute' item='color'}[*][url=""]{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}[img={$img_col_dir}{$id_attribute}.jpg]{/if}[/url]
{/foreach}
[/list]{/if}

[/code]=> code attribute ligne 267

{if isset($groups)}
{foreach from=$groups key=id_attribute_group item=group}{if $group.attributes|@count}
{$group.name|escape:'htmlall':'UTF-8'} :{assign var="groupName" value="group_$id_attribute_group"}{foreach from=$group.attributes key=id_attribute item=group_attribute}{$group_attribute|escape:'htmlall':'UTF-8'}{/foreach}{/if}{/foreach}{/if}

=====> Page "product.php"c'est une fonction qui appelle la database!

public function getAttributesGroups($id_lang){return Db::getInstance()->ExecuteS('SELECT 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.*FROM `'._DB_PREFIX_.'product_attribute` paLEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`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)($this->id).'AND al.`id_lang` = '.(int)($id_lang).'AND agl.`id_lang` = '.(int)($id_lang).'ORDER BY agl.`public_name`, al.`name`');}

Bon voila j'envoie ce post comme un coup d'épée dans l'eau peut etre :) mais je crois que je vais acheter ce f****** module a 100€ lol

Edited by jamesford (see edit history)
Link to comment
Share on other sites

  • 10 months later...

Bonjour,

 

Petit up svp pour la version 1.4.10. Est-ce que quelqu'un a déjà essayé ce code sur cette version et est-ce qu'il fonctionne?

 

Sinon auriez-vous un lien vers un module (même payant) car je ne trouve rien sur Addons?

 

Un grand merci à vous!

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...