loic V. Posted July 15, 2019 Share Posted July 15, 2019 (edited) Bonjour tous le monde, Je suis entrain de travailler sur un site Prestashop qui sera lié au CRM Dolibarr. J'ai donc créé un script qui permet de transmettre les informations (catégories, produits, ...) de Dolibarr vers Prestashop. Lorsque sur le site Prestashop, je souhaite accéder au lien [NOM DE DOMAINE]/index.php?id_category=2&controller=category, j'obtiens aucune catégorie comme le montre la pièce jointe n°1. Par contre avec le lien [NOM DE DOMAINE]/index.php?id_category=3&controller=category, j'obtiens toutes les catégories enfants de la catégorie 3 comme souhaité (voir la pièce jointe n°2). Après des tests en local, je pense fortement que le problème provient de la Base de Données Prestashop -> de la table "ps_category" et plus précisément des champs "nleft" & "nright" que j'insère à 0 lorsque mon script est exécuté. Mon problème c'est que je ne comprend pas comment fonctionne ces champs ni leur logique. Quelqu'un pourrait s'il vous plaît m'indiquer comment les renseigner et m'expliquer leur logique ? Merci par avance. Loïc V. Edited July 15, 2019 by loic V. (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted July 15, 2019 Share Posted July 15, 2019 Si tu bousilles nleft et nright, au mieux ça ne parche pas comme tu le constate, au pire tu flingues la totalité du shop C'est champs sont des intervalles à recalculer à chaque ajout de catégories https://www.we-rc.com/blog/2015/07/19/nested-set-model-practical-examples-part-i Link to comment Share on other sites More sharing options...
loic V. Posted July 15, 2019 Author Share Posted July 15, 2019 (edited) Bonjour doekia, Tout d'abord merci pour le lien, je viens de comprendre la logique des champs. Donc si je comprend bien, il faut que j'utilise la procédure stockée "r_tree_traversal" en changeant les tables correspondant aux miennes, c'est ça ?? Y as t'il pas possibilité de le faire en PHP ? Car mon script est en PHP et j'aimerais remplir les champs en même temps. Cordialement. Loïc V. Edited July 15, 2019 by loic V. (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted July 15, 2019 Share Posted July 15, 2019 Il n'y a pas de procédure stockée dans prestashop (la plupart de mutus refusent). C'est codé en PHP dans Category::rebuildEntireTree() en 1.6 et inférieure tout du moins Link to comment Share on other sites More sharing options...
loic V. Posted July 15, 2019 Author Share Posted July 15, 2019 Merci pour la réponse. J'utilise Prestashop 1.7. Mon script ne sera pas dans le dossier de Prestashop mais sera sur un autre serveur donc j'essaye de construire une fonction qui le fasse directement. Link to comment Share on other sites More sharing options...
doekia Posted July 15, 2019 Share Posted July 15, 2019 Vouloir injecter sans passer par le framework, ça va t'obliger à réécrire beaucoup de code et ne résistera pas aux évolutions qui ne sauraient manquer Link to comment Share on other sites More sharing options...
loic V. Posted July 15, 2019 Author Share Posted July 15, 2019 Le problème c'est que je ne vais pas demander à l'utilisateur par exemple d'ajouter ses produits sur le CRM Dolibarr et sur son site Prestashop donc je ne vois pas comment je peux injecter directement via Prestashop c'est pour cela qu'il va y avoir un script qui fera l'intermédiaire entre les 2. Link to comment Share on other sites More sharing options...
doekia Posted July 15, 2019 Share Posted July 15, 2019 faire cohabiter les 2 codes dans le même serveur, appeler le framework PS (config.inc.php) tu aura accès au meilleurs des 2 mondes Link to comment Share on other sites More sharing options...
loic V. Posted July 17, 2019 Author Share Posted July 17, 2019 Bonjour, Malheureusement je ne peux pas cohabiter les 2 codes sur le même serveur car le Dolibarr est sur un petit serveur chez l'utilisateur et il ne veux pas le déplacer... Bref, j'ai réussit à faire un script permettant de mettre à jour les champs "nleft" et "nright". Merci tout de même pour ton aide. Cordialement. Loïc V. 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