Jump to content

Recommended Posts

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

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

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

Posted (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 by AcidLava (see edit history)
Link to comment
Share on other sites

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

Posted (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 by AcidLava (see edit history)
Link to comment
Share on other sites

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

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

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

@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

 

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.

image.png.258d8665a5f047c78dd70d5cd71c1762.png

Edited by ps8modules.com (see edit history)
Link to comment
Share on other sites

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

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

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

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.

image.png.258d8665a5f047c78dd70d5cd71c1762.png.a0dbbcc0f0ffaa1b809c8007c000c9c9.png

 

Edited by ps8modules.com (see edit history)
Link to comment
Share on other sites

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

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