AcidLava Posted August 23 Share Posted August 23 Bonjour, Je cherche les requêtes SQL pour exporter via le Gestionnaire SQL : - Noms des produits - Références - Urls des fiches Et ce pour l'intégralité de mon catalogue et convertis ensuite en CSV. En vous remerciant ! Link to comment Share on other sites More sharing options...
Prestashop Addict Posted August 23 Share Posted August 23 (edited) Bonjour, les urls ce n'est pas possible en SQL si vous êtes en url rewriting Edited August 23 by Prestashop Addict (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 23 Author Share Posted August 23 Bonjour, Merci pour votre retour. Avez-vous une solution sous la main pour les exporter pour un plan de redirection ? Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 Bonjour. Modifiez simplement id_lang et id_shop ci-dessous dans le SQL ou, si vous n'utilisez pas le .html à la fin du lien du produit, supprimez-le du SQL. SELECT p.reference, pl.name, CONCAT( CASE WHEN (SELECT cfg.value FROM ps_configuration cfg WHERE cfg.name = 'PS_SSL_ENABLED') = '1' THEN ('https://') ELSE ('http://') END, shu.domain, CASE WHEN (SELECT COUNT(ls.id_lang) FROM ps_lang_shop ls) > '1' THEN (CONCAT('/', l.iso_code)) ELSE ('') END, '/', cl.link_rewrite, '/', p.id_product, '-', pl.link_rewrite, '.html' ) AS product_url FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_product_shop ps ON (ps.id_product = pl.id_product) LEFT JOIN ps_shop_url shu ON (ps.id_shop = shu.id_shop) LEFT JOIN ps_category_lang cl ON (cl.id_category = p.id_category_default) LEFT JOIN ps_lang l ON (l.id_lang = pl.id_lang) WHERE pl.id_lang = '1' AND shu.id_shop = '1' AND l.id_lang = '1' AND cl.id_lang = '1' GROUP BY p.id_product Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 Le 23/08/2024 à 5:36 PM, AcidLava a dit : un plan de redirection Bonjour, dans quel cadre souhaitez-vous mettre en place un plan de redirection complet sur toutes les URL produits ? Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 @ps8modules.com Merci je vais essayer ça @Mediacom87 Dans le cadre d'un changement de CMS, tout conseil est le bienvenue :) Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 il y a 4 minutes, AcidLava a dit : @Mediacom87 Dans le cadre d'un changement de CMS, tout conseil est le bienvenue Dans ce cas, prenez votre sitemap celui-ci doit comporter toutes les URL Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 😁 CMS est une abréviation de Content Management System en anglais, et non de la page CMS de Prestashop. Merci de lire le premier message Je lui ai écrit ce dont il avait besoin 🫣 1 Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 il y a 31 minutes, ps8modules.com a dit : Je lui ai écrit ce dont il avait besoin 🫣 Je n'ai jamais dit le contraire, votre réponse est parfaite, après la personne voulait peut-être faire quelque chose de totalement aberrant et nous aurions pu lui proposer quelque chose de plus adapté à son besoin réel, donc cela explique mon questionnement. Du genre, l'autre CMS (je sais ce que c'est tout de même), propose une structure d'URL permettant de créer une simple règle de redirection entre la structure proposée par le CMS PrestaShop et le nouveau CMS au lieu d'empiler 6 000 redirections. il y a 35 minutes, ps8modules.com a dit : 😁 CMS est une abréviation de Content Management System en anglais, et non de la page CMS de Prestashop. Merci Wikipédia pour la leçon. il y a 35 minutes, ps8modules.com a dit : Merci de lire le premier message Je sais lire par contre, je sais aussi réfléchir plus loin que votre réponse au problème plutôt qu'à la solution qui peut être la plus mauvaise même si elle répond à la demande. Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 (edited) Merci pour vos retours. Je vais passer de Prestashop à Odoo pour cette boutique et en effet, je cherche la meilleure manière de gérer le plan de redirections. En l'état j'ai un import Exel des produits qui ont déjà été migrés sur Odoo avec : - Nom des produits - Références produit - Urls des produits Et je cherchais donc à faire de même sur le Prestashop, pour ensuite faire matcher les Urls en fonction des références produit qui elles restent identiques ? Bien que je ne sache pas vraiment si Excel permet ceci. Vos conseils sont très appréciés. Edited August 25 by AcidLava (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 Il y a 3 heures, ps8modules.com a dit : CASE WHEN (SELECT cfg.value FROM ps_configuration cfg WHERE cfg.name = 'PS_SSL_ENABLED') = '1' THEN ('https://') ELSE ('http://') END, shu.domain, Il n'est pas réellement nécessaire de mettre le nom de domaine dans l'URL pour une redirection htaccess. Il y a 3 heures, ps8modules.com a dit : CASE WHEN (SELECT COUNT(ls.id_lang) FROM ps_lang_shop ls) > '1' THEN (CONCAT('/', l.iso_code)) Attention, si le site est multi lingue est qu'il intègre un module pour retirer l'ISO de la langue par défaut si l'ajout de la langue fut après le lancement du site. Il y a 3 heures, ps8modules.com a dit : '/', cl.link_rewrite, '/', p.id_product, '-', pl.link_rewrite, '.html' Bien vérifier que la configuration des structures d'URL produit soit ainsi composée. Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 @Mediacom87 J'ai répondu juste avant au cas où vous auriez raté le message, nous avons répondu en même temps. Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 il y a 1 minute, AcidLava a dit : Vos conseils sont très appréciés. Quelle est la structure de l'URL initiale et quelle sera sa structure après sur Odoo ? Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 (edited) @Mediacom87 Le problème c'est que la mise à jour forcée des URLs simplifiées n'était pas active pendant longtemps, donc les noms des produits dans les URLs ont changés sur certaines références maintenant qu'ils ont été migrés sur Odoo... Du coup je ne suis pas sûr que vous donner la structure soit vraiment utile dans ce cas de figure... Edited August 25 by AcidLava (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 25 Share Posted August 25 il y a une heure, AcidLava a dit : @Mediacom87 Le problème c'est que la mise à jour forcée des URLs simplifiées n'était pas active pendant longtemps, donc les noms des produits dans les URLs ont changés sur certaines références maintenant qu'ils ont été migrés sur Odoo... Du coup je ne suis pas sûr que vous donner la structure soit vraiment utile dans ce cas de figure... Donc oui, redirection obligatoire pour tous les produits. Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 La meilleure solution est donc bien de faire matcher l'import excel des produits de Odoo avec celui de Prestashop (importé via les requêtes SQL ci-dessus) ? Savez-vous comment automatiser le matching des url en fonction des colonnes "Référence" identiques sur Excel ? Merci. Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 5 hours ago, ps8modules.com said: Bonjour. Modifiez simplement id_lang et id_shop ci-dessous dans le SQL ou, si vous n'utilisez pas le .html à la fin du lien du produit, supprimez-le du SQL. SELECT p.reference, pl.name, CONCAT( CASE WHEN (SELECT cfg.value FROM ps_configuration cfg WHERE cfg.name = 'PS_SSL_ENABLED') = '1' THEN ('https://') ELSE ('http://') END, shu.domain, CASE WHEN (SELECT COUNT(ls.id_lang) FROM ps_lang_shop ls) > '1' THEN (CONCAT('/', l.iso_code)) ELSE ('') END, '/', cl.link_rewrite, '/', p.id_product, '-', pl.link_rewrite, '.html' ) AS product_url FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_product_shop ps ON (ps.id_product = pl.id_product) LEFT JOIN ps_shop_url shu ON (ps.id_shop = shu.id_shop) LEFT JOIN ps_category_lang cl ON (cl.id_category = p.id_category_default) LEFT JOIN ps_lang l ON (l.id_lang = pl.id_lang) WHERE pl.id_lang = '1' AND shu.id_shop = '1' AND l.id_lang = '1' AND cl.id_lang = '1' GROUP BY p.id_product Ces requêtes permettent bien d'exporter en CSV les colonnes suivantes ? - Noms des produits - Références - Urls des fiches Je ne vois rien au sujet des références produit. Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 (edited) p.reference = Références pl.name = Noms des produits product_url = Urls des fiches Vous pouvez modifier les noms des colonnes: p.reference AS 'Références', pl.name AS 'Noms des produits', .... Edited August 25 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 @ps8modules.com Merci. Du coup concernant les entrées suivantes : pl.id_lang = '1' AND shu.id_shop = '1' AND l.id_lang = '1' AND cl.id_lang = '1' Je met juste le code ISO des langues de ma boutique soit : fr.id_lang = '1' AND gb.id_lang = '1' AND Que dois-je mettre pour shu.id_shop svp ? Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 (edited) Non, vous modifiez uniquement l'identifiant de langue '1' et aussi l'identifiant du magasin '1' Ce SQL exporte pour une seule langue. Si vous souhaitez plus de langues, vous devez en faire une copie et remplacer id_lang par un ID de langue différent. Edited August 25 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 Comment trouver l'id du magasin ? J'ai essayé la requête en l'état et j'obtiens un csv vide. Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 Ce n'est pas possible. Cela me rendra tout. Vous pouvez également utiliser ce SQL dans lequel vous n'avez rien à changer et il exporte toutes les langues et tous les magasins. SELECT p.reference AS 'Références', pl.name AS 'Noms des produits', CONCAT( CASE WHEN (SELECT cfg.value FROM ps_configuration cfg WHERE cfg.name = 'PS_SSL_ENABLED') = '1' THEN ('https://') ELSE ('http://') END, shu.domain, CONCAT('/', l.iso_code), '/', cl.link_rewrite, '/', p.id_product, '-', pl.link_rewrite, '.html' ) AS 'Noms des produits', l.id_lang AS 'identifiant de langue', l.iso_code AS 'code de langue', l.name AS 'le nom de la langue', sh.name AS 'nom du magasin' FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_product_shop ps ON (ps.id_product = pl.id_product) LEFT JOIN ps_shop_url shu ON (ps.id_shop = shu.id_shop) LEFT JOIN ps_shop sh ON (sh.id_shop = shu.id_shop) LEFT JOIN ps_category_lang cl ON (cl.id_category = p.id_category_default) LEFT JOIN ps_lang l ON (l.id_lang = pl.id_lang) WHERE cl.id_lang = l.id_lang AND pl.id_lang = l.id_lang ORDER BY p.id_product, l.id_lang; Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 (edited) 8 minutes ago, AcidLava said: Comment trouver l'id du magasin ? J'ai essayé la requête en l'état et j'obtiens un csv vide. Est votre préfixe de table dans la base de données ps_ ? Edited August 25 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 J'ai essayé ce code en modifiant ps_ avec mon prefixe et j'obtiens toujours un .csv vide. Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 (edited) Le plus simple est d'insérer votre SQL modifié dans phpMyAdmin et de l'exécuter. Il vous montrera une erreur ici. Ou écrivez-moi simplement votre préfixe de table. Edited August 25 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 Voici : 9yzoo9zf_ Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 Just now, AcidLava said: Voici : 9yzoo9zf_ SELECT p.reference AS 'Références', pl.name AS 'Noms des produits', CONCAT( CASE WHEN (SELECT cfg.value FROM 9yzoo9zf_configuration cfg WHERE cfg.name = '9yzoo9zf_SSL_ENABLED') = '1' THEN ('https://') ELSE ('http://') END, shu.domain, CONCAT('/', l.iso_code), '/', cl.link_rewrite, '/', p.id_product, '-', pl.link_rewrite, '.html' ) AS 'Noms des produits', l.id_lang AS 'identifiant de langue', l.iso_code AS 'code de langue', l.name AS 'le nom de la langue', sh.name AS 'nom du magasin' FROM 9yzoo9zf_product p LEFT JOIN 9yzoo9zf_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN 9yzoo9zf_product_shop ps ON (ps.id_product = pl.id_product) LEFT JOIN 9yzoo9zf_shop_url shu ON (ps.id_shop = shu.id_shop) LEFT JOIN 9yzoo9zf_shop sh ON (sh.id_shop = shu.id_shop) LEFT JOIN 9yzoo9zf_category_lang cl ON (cl.id_category = p.id_category_default) LEFT JOIN 9yzoo9zf_lang l ON (l.id_lang = pl.id_lang) WHERE cl.id_lang = l.id_lang AND pl.id_lang = l.id_lang ORDER BY p.id_product, l.id_lang; Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 Parfait merci beaucoup Link to comment Share on other sites More sharing options...
ps8modules Posted August 25 Share Posted August 25 2 minutes ago, AcidLava said: Parfait merci beaucoup J'étais heureux d'aider 🙃 Link to comment Share on other sites More sharing options...
AcidLava Posted August 25 Author Share Posted August 25 Une dernière petite question sans vouloir vous déranger, est-il possible de décliner cette requête de manière à pouvoir le faire deux exports distincts (un pour la langue française et un pour la langue anglaise) sans avoir à se préoccuper de l'id de la boutique ? Link to comment Share on other sites More sharing options...
ps8modules Posted August 26 Share Posted August 26 (edited) S'il vous plaît, lorsque vous avez besoin d'aide, vous devez donner toutes les informations. Vous avez besoin de deux SQL pour deux langues différentes. Je n'ai pas d'informations sur la langue de l'ID. Ce serait bien de m'écrire si votre e-boutique a activé SSL = https. Je simplifierais le SQL. Par exemple: fr = 1 en = 2 Je t'ai déjà donné une photo aussi. Edited August 26 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
AcidLava Posted August 26 Author Share Posted August 26 Merci, j'ai réussi à isoler les langues avec Excel au final, une nouvelle requête ne sera pas nécessaire. En revanche, si vous savez me faire la même chose pour les catégories ce serait très bienvenue ! Export csv des noms de catégories, de leurs liens (fr et eng). Link to comment Share on other sites More sharing options...
AcidLava Posted August 26 Author Share Posted August 26 Up Link to comment Share on other sites More sharing options...
ps8modules Posted August 26 Share Posted August 26 (edited) Je suis désolé, mais je ne suis pas en mesure de vous fournir le SQL pour les catégories. Cela vous aidera certainement @Mediacom87 il a certainement plus d'expérience et de connaissances. Edited August 26 by ps8modules.com (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 26 Share Posted August 26 Perso, je ferai toujours comme je l'ai dit, je prendrai mon sitemap et je le convertis en CSV https://www.convertcsv.com/xml-to-csv.htm 1 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