Jump to content

[Tri] Catégories, Produits et Attributs / modules tiers 1.3 -> 1.4


MadW

Recommended Posts

Bonjour tout le monde.

[Petite édition du sujet, le plus important se trouvant au 6ème message, je vous invite à le lire si une gestion des positions des groupes d'attributs et des attributs dans les pages produit vous intéresse.

Attention, la modification se fait à vos risques et périls !]


-----------------------------------------------------------------------------


Je commence directement avec cette remarque pour le sujet que j'aborde ici : je suis conscient que l'équipe Prestashop n'est en rien responsable du suivi de modules développés par des tiers, ni n'est chargée de leur mise à jour et modification.

Je ne suis donc pas ici pour demander de faire une mise à jour, mais je souhaite recueillir des avis des personnes ayant utilisé les mêmes modules que moi et se retrouvant devant une envie de reproduire les mêmes effets sur Prestashop 1.4.

Autant faire un petit topo :
Il y'a quelques mois je lance une boutique en ligne fonctionnant sous PrestaShop 1.3. L'ordre des catégories et des produits (par classement alphabétique) ne me plait vraiment pas, donc je me suis mis à chercher des modules de ci de là.

Tombant sur un sujet de ce forum, je trouve un lien vers le site de M. Henri BAEYENS. Ce dernier proposant des modules intéressant, j'en teste plusieurs, principalement "Reposition", permettant de gérer la position des produits et des catégories sur le site.
(voici son site)

Les effets de bord de ce module est d'implanter une colonne Position dans la table dédiée aux produits et dans celle dédiée aux catégories, tout en rajoutant une nouvelle page dynamique dans le BackOffice.

La condition du fonctionnement de ce module est de modifier des fichiers du moteur de PrestaShop ( /classes/product.php ; /modules/blockcategories/blockcategories.php ; deux trois autres fichiers...) en ajoutant/commentant certains éléments de ces fichiers, permettant un classement plus approprié. Principalement, modifier les clauses "ORDER BY" de certaines requêtes "SELECT" dans ces fichiers - servant à récupérer les listes des catégories/sous-catégories/produits - de manière à intégrer non pas un classement alphabétique, mais un classement par "numéro de position".

NE VOUS INQUIETEZ PAS, le site fonctionnait parfaitement pendant ces derniers mois, je savais ce que je faisais, et tout marchait parfaitement. Catégories/Sous-Catégories et produits étaient triés comme je le voulais.





On me demande alors d'implanter PrestaShop 1.4. Petit ennui avec "Smarty" je crois, réglé grâce à une intervention sur le forum que j'ai vu y'a peu. Merci d'ailleurs à la communauté et à l'équipe.

J'ai donc toute ma boutique, tous les produits, toutes les sous-catégorie. Comme je m'y attends, sans modules, j'ai les catégories et produits triés par ordre alphabétique.

Je me dit alors : je vais réinstaller le module de M. Henri BAEYENS, et voir si ça tourne.

Bah... les colonnes positions sont bien là dans la BDD, mais j'ai beau glisser-déposer les catégories/produits comme je le souhaite dans l'interface du module en question, bizarrement les modifications ne sont pas prises en compte. La base de données correspondante n'est pas mise à jour. Donc ça viendrait plus du module à mon avis.

J'ai tenté de contacter M. BAEYENS mais je n'ai pas eu de nouvelles - peut être n'a t'il pas reçu mon mail...

Donc voilà, je voulais savoir si vous, utilisateurs de PrestaShop, connaissiez un module ayant un résultat similaire, ou si vous aviez utilisé auparavant le même module et avez trouvé une solution pour ce petit problème.

J'ai idée de modifier moi même la position des catégories à la main directement dans la base de données, mais si je confie la boutique à quelqu'un qui n'est pas familiarisé avec les BDD ça va être folklo, il ne va pas s'en sortir...

Bref, je suis tout ouïe.

EDIT : Ah, et après lecture je constate que j'ai peut être posté dans la mauvaise section.... Pardon pour le dérangement si c'est le cas...

Link to comment
Share on other sites

Bonjour,

moi après lecture, je crois que vous n'avez pas fait le tour de la version 1.4 de Prestashop et des 250 nouvelles fonctionnalités ;-)

En gros le classement des catégories se faite en natif maintenant dans le backoffice de Prestashop ainsi que les produits en utilisant les flèches soit en appuyant sur les petites flèches haut et bas ou en ayant la main ouverte qui s'affiche alors on déplace simplement la catégorie ou le produit.

Link to comment
Share on other sites

... Et comment passer pour une andouille en 1 leçon. Bah tant pis, c'est fait, j'suis ridicule :)

En effet, je n'ai pas pensé à m'occuper de ces flèches..... je vais faire un essai.
Elles étaient déjà présentes dans la 1.3 à certains endroits, si mes souvenirs sont bons, et nullement efficace (ça ne fonctionnait pas semblait il). Donc en les voyant de nouveau dans la 1.4, je n'ai pas cherché plus loin.

Une chose me surprends cependant : je n'ai pas détecter de réelles modifications dans la base de données lors du passage de la 1.3 à la 1.4 pour ce qui est des produits et des catégories... Donc comment sont gérés ces positions alors ?

Bref, je vais faire quelques essais, et je vous tiens au courant.

EDIT : Ok je me suis très mal informé... Merci à l'équipe de développement d'avoir intégré cette nouvelle fonctionnalité faisant défaut à l'autre version.

Link to comment
Share on other sites

Je me suis permis un petit changement de titre pour continuer sur ce sujet. J'espère que cela n'enfreint rien..

Ancien titre : "Catégories et produits", j'ai rajouté "Attributs".

Voilà, je reviens sur ce contexte pour vous expliquer mon second souci. J'étais bloqué devant la position des produits et catégories sur PrestaShop, merci à [Dr] Jeckyl de m'avoir indiqué où étaient mes lacunes.


Maintenant, voici le pépin.

Sur la 1.3, j'avais aussi utilisé un module de M. BAEYENS (AttributePosition) qui permettait de trier les attributs comme l'on le souhaitait.
Hors, cette fois-ci - je me suis un peu plus penché sur le souci, et correctement, contrairement à la dernière fois - je constate qu'il n'est apparemment pas possible de faire ce genre de tri avec PrestaShop et ses modules natifs.


Fonctionnant comme le module "Reposition" du même auteur et le glisser-déplacer actuel pour le tri des Catégories/Produits, il ne semble plus fonctionner sur la 1.4.

Avez vous connaissance d'un module (peut être déjà présent, hein, je continuerai à être ridicule :) ) qui se chargerait de faire ça pour PrestaShop 1.4 ? Ou d'une technique particulière ?

Link to comment
Share on other sites

Le problème est que dans PrestaShop 1.3, la table ps_attribute_group contenait le champ 'position' et que ce dernier n'existe plus dans PrestaShop 1.4... malheureusement. A moins que ce champ ait été déplacé dans une autre table ???

Thierry

Link to comment
Share on other sites

Il me semble que la colonne "position" de attribute_group n'ai jamais existé sur la 1.3. Ce n'est qu'en activant le module de M. BAEYENS que la colonne Position se crée suite à l'installation et l'activation du module.

Concernant la 1.4, avec ce même module, la table attribute_group contient bien la colonne "position". Il semblerait cependant que le système de glisser-déposer ne soit plus accessible à cette page de module - sans doute le module utilise t'il maintenant des fonctions dépréciées.


J'ai corrigé mon problème, et je peux vous indiquer comment procédé, MAIS ATTENTION :
* Je ne suis pas responsable si cela ne marche pas, ou si cela provoque d'autres désagréments. Je ne teste cette technique que depuis très peu de temps, et je ne connais pas parfaitement le moteur PrestaShop, donc ça peut avoir des conséquences lourdes sur le long terme. J'ai décidé de prendre le risque, à vous d'assumer si vous le prenez aussi. Prévoyez de sauvegarder correctement votre site et votre base de données avant quoi que ce soit.
* L'équipe de PrestaShop n'est pas non plus responsable de ces modifications, c'est à vos risques et périls.

3 points importants sont à faire après que tous vos groupes et tous vos attributs aient été créés :
* Base de données. Très long et très fastidieux, la moindre erreur pouvant avoir de sacrées conséquences.
Si vous n'avez aucune connaissance en base de données, et en l'interface se chargeant d'éditer la base de données de votre site, abandonnez ! Ne prenez pas de risques inconsidérés.
* Contrôleur produit.
* Classe produit.


* Contrôleur produit :
Dans le répertoire Controllers du site se trouve un fichier ProductController. Comme l'indiquait M. BAEYENS dans son module AttributePosition pour PS1.3, il va falloir commenter ces lignes :

foreach($groups AS &$group)
   natcasesort($group['attributes']);


(ligne 309 et 310)
de cette manière :

/*foreach($groups AS &$group)
   natcasesort($group['attributes']);*/



* Classe produit :
Dans le répertoire Classe du site se trouve un fichier Product. Comme l'indiquait à nouveau M. BAEYENS dans son module, il va falloir modifier la ligne 2150 (ORDER BY ....) se trouvant à la fin de la fonction getAttributesGroups de cette façon :

ORDER BY ag.`position`, a.`position`');



* Base de données :

Là est le plus difficile, et vous n'avez pas droit à l'erreur.
** Créez une colonne position dans la table attribute_group et dans la table attribute.
** Ne modifiez rien en dehors de ce qui se trouve dans ces deux colonnes !
** Repérez et notez quelque part (sans rien modifier dans la base de données, encore une fois !) les correspondances entre les noms de vos groupes d'attributs (colonne "public_name") avec leurs id (colonne "id_attribute_group") dans la table attribute_group_lang.
** Faites de même (encore une fois sans rien modifier !) pour les noms de vos attributs ("public_name") et leurs id ("id_attribute") dans la table attribute_lang.
** Notez enfin l'appartenance de chaque attribut à son groupe d'attribut : notez les correspondances de l'id de vos attributs ("id_attribute") avec la colonne du groupe dont il appartient ("id_attribute_group").
** Vous devriez alors obtenir une liste d'attributs avec leurs noms et leurs id, une liste de groupe d'attributs avec leurs noms et leurs id, et une liste d'attributs avec leurs id et leurs groupe respectifs. Faites correspondre le tout par le biais d'Excel, d'un tableur, ou à la main.
** Maintenant que vous avez ces trois listes, utilisez les pour réfléchir à la manière dont vous allez procéder. Il faut garder en tête qu'avec ce que vous venez de faire dans les deux fichiers précédents, la gestion des groupes d'attributs et des attributs se fera ainsi :

Position Groupe_Attribut - Position_Attribut
1 - 1
1 - 2
1 - 3
1 - 4
[...]
2 - 1
2 - 2
[...]
3 - 1
[...]
[...]
10 - 1
[...]

* Donc, vous allez devoir classer les groupes en éditant la colonne position de "attribute_group" (et uniquement cette colonne, autant insister encore) et numéroter de 1 à X les différents groupes, dans l'ordre que VOUS souhaitez.
* Ensuite, pour chaque attribut vous devrez numéroter de 1 à X les attributs appartenant à chaque groupe en éditant UNIQUEMENT la colonne position (j'insiste) de la table "attribute".

Si vous n'avez commis aucune erreur, tout devrait être bon, et votre boutique vous présentera les groupes d'attributs et les attributs dans l'ordre dans lequel vous vouliez qu'ils soient !

Tâche colossale.... mais faut bosser dur pour avoir ce que l'on veut.


Ah, et il va sans dire que si une nouvelle mise à jour sort, vous devrez faire ceci :
* AVANT la mise à jour, supprimer la colonne "position" des tables "attribute_group" et "attribute" de la base de données de votre site.
* APRES la mise à jour, reproduire les modifications indiquées ci-dessus. Toutes. Oui, car les fichiers product.php et productcontroller.php risquent d'avoir été modifiés par les développeur pour la nouvelle mise à jour.

Mieux vaut remettre la base de données dans une forme initiale avant de faire quoique ce soit !


---------------------------------------------------------------------------------------------------------------

Si vous connaissez un module se chargeant proprement de faire ce que je décris plus tôt, merci de l'indiquer, je le recherche ardemment !

Avis à nos amis modérateur : si mon tutorial n'est pas permis, faites le moi savoir. Si sanction prise, j'en assumerai les conséquences (même si je doute que ça soit interdit d'aider, même s'il s'agit de modifier profondément le coeur de PrestaShop).

Merci de m'avoir lu.

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...

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