Jump to content

Tri des attributs (déclinaisons) - astuce


Patric

Recommended Posts

Bonjour,

Je viens de m'apercevoir de la chose suivante. Je ne sais pas si quelqu'un l'a déjà fait remarquer.

Beaucoup semblent se demander comment trier les listes d'attributs dans le FO.
Julien Breux a d'ailleurs donné une solution au niveau du code :
http://www.prestashop.com/forums/viewthread/3834

Il semble également que les listes du FO adoptent l'ordre obtenu dans le "Générateur de déclinaison du produit".

J'avais les attributs suivants :
Couleur
Gris
Noir
Taille
S
M
L
XL
2XL
3XL
4XL

En les ajoutant tous d'un coup, ça me donnait une liste désordonnée que je retrouvais dans le FO.

J'ai donc tout supprimé et réajouté les attributs les uns après les autres, dans l'ordre que je souhaitais.
Puis j'ai "Généré".
Dans le FO, les attributs ont conservé cette ordre.

Link to comment
Share on other sites

  • 1 year later...

c'est la methode que j'ai effectué
SAUF que cet ordre n'est pas conservé lors de la duplication d'un produit > très gênant … 

Quant à la solution de Julien … vu qu'il a mis la ligne (et non le code initial à remplacer/compléter), comme le TPL a changé depuis … je ne m'y retrouve pas … 

un peu de complément d'information est-il possible ?
(et penser à corriger cette défaillance dans la prochaine version serait nécéssaire je pense, en modifiant la tpl au minimum ou en permettant un tri manuel en back-office)

Link to comment
Share on other sites

  • 2 months later...

Bonjour
j'ai essaye d'ajouter ce bout de code dans product.php mais ca bug n'importe ou ou je le place merci de maider



/* 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'];
}

array_flip($groups[$row['id_attribute_group']]['attributes']);
asort($groups[$row['id_attribute_group']]['attributes']);
array_flip($groups[$row['id_attribute_group']]['attributes']);


$groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name'];
$groups[$row['id_attribute_group']]['name'] = $row['public_group_name'];
if ($row['default_on'])
$groups[$row['id_attribute_group']]['default'] = intval($row['id_attribute']);
if (!isset($groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']]))
$groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] = 0;
$groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] += intval($row['quantity']);

$combinations[$row['id_product_attribute']]['attributes_values'][$row['id_attribute_group']] = $row['attribute_name'];
$combinations[$row['id_product_attribute']]['attributes'][] = intval($row['id_attribute']);
$combinations[$row['id_product_attribute']]['price'] = floatval($row['price']);
$combinations[$row['id_product_attribute']]['ecotax'] = floatval($row['ecotax']);
$combinations[$row['id_product_attribute']]['weight'] = floatval($row['weight']);
$combinations[$row['id_product_attribute']]['quantity'] = intval($row['quantity']);
$combinations[$row['id_product_attribute']]['reference'] = $row['reference'];
$combinations[$row['id_product_attribute']]['id_image'] = isset($combinationImages[$row['id_product_attribute']][0]['id_image']) ? $combinationImages[$row['id_product_attribute']][0]['id_image'] : -1;
}

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...