stickattack Posted June 10, 2016 Share Posted June 10, 2016 bonjour à tous , je suis dans une galère monumentale ... Je reprend juste le SEO d'un qui tourne sur la version 1.6.0.9 de PS . J'ai effectuer un crawl des URLS et je me trouve face a un problème.. Les URL été toutes dupliqués. J'ai donc modifier les URLS des catégories et sous catégories manuellement ainsi que leurs titres. Sauf que j'ai plus de 2000 produits et autant dire que manuellement c'est du suicide ... Comment modifier en masse pour que dans l'URL il intègre le nom du produit ? Merci Link to comment Share on other sites More sharing options...
AC2ID Posted June 14, 2016 Share Posted June 14, 2016 Bonjour, Vous pouvez essayer de faire un petit script en php qui sélectionnerait tout les produits en base et les bouclerait un à un pour régénérer l'url sur la base du nom produit et de la référence par exemple, puis l'enregistrerait en base. Il faudra également que votre script prenne en compte le multi-boutique (si activé) et les langues (si plusieurs). Cordialement. Link to comment Share on other sites More sharing options...
eewee Posted July 17, 2016 Share Posted July 17, 2016 (edited) Bonjour, Il y a StoreCommander qui permet de faire des changements en masse sur PrestaShop via le plugin payant : 1 mois = 79 € (1 boutique) 6 mois = 149 € (1 boutique) 6 mois = 299 € (multi-boutiques) ou Store Manager. Je m'en suis déjà servi pour un site, et c'est plutôt pratique Edited July 18, 2016 by eewee (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 17, 2016 Share Posted July 17, 2016 Bonjour, Si j'ai bien compris, vous avez modifié les url des catégories. Donc les url produits prennent en compte automatiquement ce changement. Link to comment Share on other sites More sharing options...
hshaker Posted September 1 Share Posted September 1 Vous pouvez essayer ce script : ps-urls-refresh.php <?php /* * Rebuild SEO-friendly product slugs (link_rewrite) for all languages & shops * ajuster les urls SEO dans Prestashop */ require(dirname(__FILE__).'/../../config/config.inc.php'); $Context = Context::getContext(); $token = Tools::getValue('token'); $Context = Context::getContext(); $products_updated = 0; $langs = LanguageCore::getLanguages(false); foreach($langs as $lang){ $sql = 'SELECT * FROM '._DB_PREFIX_.'product p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`) WHERE pl.`id_lang`="'.pSQL($lang['id_lang']).'"'; $products = Db::getInstance()->ExecuteS($sql); foreach($products as $p){ $Product = new Product($p['id_product'],false,$lang['id_lang']); $sql = 'UPDATE '._DB_PREFIX_.'product_lang pl SET `link_rewrite`="'.pSQL(Tools::str2url($Product->name)).'" WHERE pl.`id_product`="'.pSQL($p['id_product']).'" AND pl.`id_lang`="'.pSQL($lang['id_lang']).'"'; echo $sql.'<br/>'; Db::getInstance()->Execute($sql); $products_updated++; } } echo '<strong>Nbre urls produits mis à jour : '.$products_updated/count($langs).'</strong>'; accéder au fichier pour lancer le script via cron ou lien direct Link to comment Share on other sites More sharing options...
cocos.codes Posted September 1 Share Posted September 1 Dans PrestaShop, chaque produit dispose d'un champ link_rewrite dans le tableau ps_product_lang – celui-ci est responsable du fragment de l'URL. Il est donc possible de créer un script PHP simple qui mettra à jour en masse les URL en fonction des noms des produits. Voici un exemple ci-dessous: <?php // config PrestaShop include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); // Pobieramy wszystkie produkty $sql = "SELECT id_product, id_lang, name FROM "._DB_PREFIX_."product_lang"; $products = Db::getInstance()->executeS($sql); foreach ($products as $product) { $id_product = (int)$product['id_product']; $id_lang = (int)$product['id_lang']; $name = $product['name']; // Tworzymy slug (przyjazny URL) $link_rewrite = Tools::link_rewrite($name); // Aktualizacja w bazie Db::getInstance()->update( 'product_lang', ['link_rewrite' => pSQL($link_rewrite)], "id_product = $id_product AND id_lang = $id_lang" ); echo "Zaktualizowano produkt $id_product : $link_rewrite<br>"; } echo "Gotowe!"; Comment l'utiliser ? Téléchargez le fichier, par exemple update_urls.php, dans le répertoire principal de PrestaShop. Lancez-le dans votre navigateur: http://twoj-sklep.pl/update_urls.php. Le script parcourra tous les produits et définira des URL conviviales en fonction des noms. Remarques importantes : Effectuez une sauvegarde de la base de données avant de lancer le script. Si vous avez plusieurs langues, link_rewrite sera défini séparément pour chaque id_lang. Une fois l'opération terminée, il est recommandé de vider le cache dans PrestaShop et, éventuellement, de reconstruire le plan du site. 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