PrestaShop Forum

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum

Jump to content

 

Gestion de l'ordre d'affichage des caractéristiques

34 replies to this topic
#1
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
Bonjour à tous
bon beh, c'est un peu le [auto censure;-)] binzz ces caractéristiques techniques dés que l'on a des produits.....techniques.

l'ordre d'affichage est alphanumérique; c'est bien mais à quoi cela sert? à rien.
comment peut on modifier l'ordre d'affichage pour donner un peu de cohérence à tout ça?

merci pour vos conseils.
A+

#2
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
Bonjour,

ayant été confronté au même problème je propose ici une solution.


* Pour modifier l'ordre d'affichage des produits sur le front

il faut modifier la classe Product (classes/Product.php) au niveau de la fonction getFrontFeaturesStatic
C'est au niveau de cette fonction qu'est lancée la requête SQL pour la récupération des caractéristiques

Il est donc possible de trier :

- en modifiant la requête SQL pour pouvoir y ajouter une clause ORDER BY

- en récupérant le résultat de la requête SQL pour le manipuler dans la fonction

exemple :

static public function getFrontFeaturesStatic($id_lang, $id_product)
{
// 1. Spécifier un ordre de tri (ici, tri par nom de la caractéristique)
// 2. Récupérer le résultat de la requête dans le tableau $results

$results = Db::getInstance()->ExecuteS('
SELECT name, value, pf.id_feature
FROM '._DB_PREFIX_.'feature_product pf
LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).')
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).')
WHERE pf.id_product = '.intval($id_product) . ' ORDER BY name ASC');

// 3. Manipuler le tableau $results

// pour chaque caractéristique produit...
foreach ($results as $result_line){
// ... effectuer le tri ICI
// ...
}

// 4. Retourner le tableau trié
return $results;

}




* Pour modifier l'ordre d'affichage des produits sur l'admin

même principe, il faut modifier la classe Product (classes/Product.php) au niveau de la fonction getFeaturesStatic

Remarque : ici, la requête ne récupère pas le nom et la valeur des caractéristiques, donc pour un tri via SQL il faudra modifier la requête en entier (et pas seulement ajouter un ORDER BY).

#3
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
merci pour ta réponse
j'essaie de comprendre....
A+

#4
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
ce qu'il faudrait (le rêve quoi), ce serait cette possibilité: pour chaque catégorie de produits (pour chaque famille de produits), on pourrait définir un certain nombre de caractéristiques à remplir de façon facultative en BO; le top serait de définir à ce moment l'ordre avec lequel ces caract. doivent s'afficher .



exemple
produit pomme -> catégorie Fruit ->; caractéristiques: appellation, origine, insecticide soit 3 caractéristiques

produit renault clio -> catégorie automobile -> caractéristiques: puissance fiscale, nombre de portes, cylindrées, accessoires, soit 4 caractéristiques toutes disjointes (ou non d'ailleurs) par rapport à mon premier produit

ce serait bien de pouvoir n 'avoir accès qu'à ces 4 là qd je rentre un nouveau véhicule en BO.

qui a une idée

#5
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
Effectivement, ce serait une fonctionnalité très intéressante : pouvoir créer des "groupes de caractéristiques".
Une bonne idée de module !!!
:-)

J'ai contourné le problème en nommant les caractéristiques avec un préfixe contenant le nom du groupe et l'ordre (un peu à la manière du nommage des catégories pour le tri des catégories)

exemple : si je veux 2 groupes de caractéristiques, 1 pour les fruits, 1 pour les automobiles, je crée les caractéristiques
FRUIT.01.Appellation
FRUIT.02.Origine
FRUIT.03....
AUTO.01.Puissance fiscale
AUTO.02.Nombre de portes
AUTO.03....

ensuite, je trie les caractéristiques par ordre alphabétique (et donc par groupe), et je supprime le préfixe pour qu'il n'apparaisse pas dans l'affichage de la fiche produit (ni dans le front ni dans le back-office).
Au niveau du back-office, toutes les caractéristiques apparaissent mais elles sont triées donc c'est un peu moins gênant pour la saisie.

#6
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
est ce que FRUIT.01. disparait en FO? comme cela se passe pour les catégories?

#7
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
@samsab : oui, dans le front-office, le préfixe FRUIT.01. disparait.

Au niveau du back-office, je laisse le préfixe dans l'onglet Catalogue >> Caractéristiques,
par contre, dans l'onglet Caractéristiques de la fiche produit dans le back-office, je le supprime,
mais je trie les caractéristiques pour avoir un tableau du type :

FRUIT
Origine
Appellation
[...]

AUTO
Puissance fiscale
Nb de portes
[...]

#8
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
merci pour ta réponse
pas ceratin de comprendre.
aurais tu 2 ou 3 screen à mettre ici pour bien piger.
comment peux tu "dans l’onglet Caractéristiques de la fiche produit dans le back-office, je le supprime,
mais je trie les caractéristiques pour avoir un tableau du type :"

A te lire
A+

#9
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
Voilà deux écrans du BO.
Pour le front, tout se passe comme si il n'y avait pas de préfixe.

Attached Files

  • Attached File  BO-1.png   66bytes   2151 downloads
  • Attached File  BO-2.png   53bytes   2169 downloads


#10
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
merci
mais comment obtiens tu une séparation aussi sexy en BO?

argh je viens d'essayer: FRUIT.01. apparait bien en FO.

#11
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
pour le BO, j'ai modifié la classe AdminProducts
(fichier admin/tabs/AdminProducts.php, fonction displayFormFeatures() )

pouru le FO, j'ai modifié la classe Product
(fichier classes/Product.php, fonction getFrontFeaturesStatic() )

#12
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
crois tu possible de nous communiquer le détail des modif? :cheese:

#13
Codigo

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
oui bien sur, je posterai ici les modifs que j'ai effectuées dès que j'aurais un peu de temps

#14
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
super
c'est sympa de ta part.

#15
distri

    PrestaShop Newbie

  • Members
  • Pip
  • 10 posts
ça m'intéresse également car je suis en train de chercher comment faire... mais je n'ai pas complétement résolu le pb.
J'ai réussi à modifier sur le front office mais pas sur le back office...
Quel est la modif exacte à faire sur pour changer l'apparition sur le BO et trier par ordre alphabétique et non par id

#16
tons28

    PrestaShop Apprentice

  • Members
  • PipPip
  • 222 posts
up ? :)

#17
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
up! :coolsmile:

#18
perrone971

    PrestaShop Newbie

  • Members
  • Pip
  • 8 posts
Bonjour,
Je suis intéressé par la proposition de Codigo.
Mais il n'y a pas la solution.
Qui peut m'aider

#19
samsab

    PrestaShop Apprentice

  • Members
  • PipPip
  • 354 posts
re re up :coolsmile:

#20
neastea18

    PrestaShop Apprentice

  • Members
  • PipPip
  • 43 posts
Bonsoir, je me permets de faire un petit up car je suis trés intéressé par cette modification
Merci beaucoup