Comme promis, voici un billet plus ou moins utiles notamment si vous vous intéressé de près à votre taux de conversion et à la performance de votre boutique PrestaShop.
PrestaShop, bien pour le référencement ?
Oui, PrestaShop est déjà doté de bonnes bases et d’outils / fonctionnalités efficace quand il s’agit de parler “référencement“. On peut notamment relever : la génération auto des balises alt des images produits avec la possibilité de personnaliser celles-ci, la possibilité d’indexer les déclinaisons produits avec des urls réécrites, la gestion d’une tâche cron pour mettre à jour le sitemap…
Le bilan est donc positif pour une solution e-commerce open-source, on ne part donc pas de zéro et je dirai même avec un bon avantage et d’autant plus si vous rédigez de belles et pertinentes descriptions produit. Le contenu est roi !
Comment améliorer le référencement de ma boutique PrestaShop via les balises title ?
C’est la question qu’on se pose aujourd’hui et voici un élément de réponse plutôt efficace et qui ne nécessite pas 10 jours de développement, ne pas attendre pour le mettre en place
Constat : peut mieux faire
La balise meta title – c’est le titre de la page affiché dans le cadre haut de votre navigateur – est très importante pour la visibilité de votre boutique autant pour les moteurs de recherche que pour les internautes qui vont lire les résultats de recherche. Chaque balise meta title doit être unique dans votre boutique et l’affichage est limité à 70 caractères donc autant exploiter au maximum cette précieuse place en l’optimisant.
PrestaShop en natif affiche les balises title de la sorte : [nom_du_produit] – [nom_du_site]
< title > Mon produit – Ma boutique PrestaShop < /title >Le nom du site n’est pas forcément pertinent d’autant qu’on aura sûrement besoin de la place pour le nom du produit
Solution : on vire le nom de la boutique !
On vient de voir que le nom de la boutique rallonge la balise meta title or on a besoin de la place pour garder une longueur de titre optimale.
on va donc modifier la class Meta.php qui régie la construction des balises metas de PrestaShop.On ouvre le fichier www/override/classes/Meta.php et on y colle ce bout de code :
getRow($sql)) { if (empty($row['meta_description'])) $row['meta_description'] = strip_tags($row['description']); // Paginate title if (!empty($row['meta_title'])) $row['meta_title'] = $title.$row['meta_title'].(!empty($page_number) ? ' ('.$page_number.')' : ''); else $row['meta_title'] = $row['name'].(!empty($page_number) ? ' ('.$page_number.')' : ''); if (!empty($title)) $row['meta_title'] = $title.(!empty($page_number) ? ' ('.$page_number.')' : ''); return Meta::completeMetaTags($row, $row['name']); } return Meta::getHomeMetas($id_lang, $page_name); } /** * Get manufacturer meta tags * * @since 1.5.0 * @param int $id_manufacturer * @param int $id_lang * @param string $page_name * @return array */ public static function getManufacturerMetas($id_manufacturer, $id_lang, $page_name) { $page_number = (int)Tools::getValue('p'); $sql = 'SELECT `name`, `meta_title`, `meta_description`, `meta_keywords` FROM `'._DB_PREFIX_.'manufacturer_lang` ml LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (ml.`id_manufacturer` = m.`id_manufacturer`) WHERE ml.id_lang = '.(int)$id_lang.' AND ml.id_manufacturer = '.(int)$id_manufacturer; if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) { if (empty($row['meta_description'])) $row['meta_description'] = strip_tags($row['meta_description']); $row['meta_title'] = ($row['meta_title'] ? $row['meta_title'] : $row['name']).(!empty($page_number) ? ' ('.$page_number.')' : ''); $row['meta_title'] .= ' - '.Configuration::get('PS_SHOP_NAME'); return Meta::completeMetaTags($row, $row['meta_title']); } return Meta::getHomeMetas($id_lang, $page_name); } /** * Get supplier meta tags * * @since 1.5.0 * @param int $id_supplier * @param int $id_lang * @param string $page_name * @return array */ public static function getSupplierMetas($id_supplier, $id_lang, $page_name) { $sql = 'SELECT `name`, `meta_title`, `meta_description`, `meta_keywords` FROM `'._DB_PREFIX_.'supplier_lang` sl LEFT JOIN `'._DB_PREFIX_.'supplier` s ON (sl.`id_supplier` = s.`id_supplier`) WHERE sl.id_lang = '.(int)$id_lang.' AND sl.id_supplier = '.(int)$id_supplier; if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) { if (empty($row['meta_description'])) $row['meta_description'] = strip_tags($row['meta_description']); if (!empty($row['meta_title'])) $row['meta_title'] = $row['meta_title']; return Meta::completeMetaTags($row, $row['name']); } return Meta::getHomeMetas($id_lang, $page_name); } /** * Get CMS meta tags * * @since 1.5.0 * @param int $id_cms * @param int $id_lang * @param string $page_name * @return array */ public static function getCmsMetas($id_cms, $id_lang, $page_name) { $sql = 'SELECT `meta_title`, `meta_description`, `meta_keywords` FROM `'._DB_PREFIX_.'cms_lang` WHERE id_lang = '.(int)$id_lang.' AND id_cms = '.(int)$id_cms; if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) { $row['meta_title'] = $row['meta_title']; return Meta::completeMetaTags($row, $row['meta_title']); } return Meta::getHomeMetas($id_lang, $page_name); } /** * Get CMS category meta tags * * @since 1.5.0 * @param int $id_cms_category * @param int $id_lang * @param string $page_name * @return array */ public static function getCmsCategoryMetas($id_cms_category, $id_lang, $page_name) { $sql = 'SELECT `meta_title`, `meta_description`, `meta_keywords` FROM `'._DB_PREFIX_.'cms_category_lang` WHERE id_lang = '.(int)$id_lang.' AND id_cms_category = '.(int)$id_cms_category; if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) { $row['meta_title'] = $row['meta_title']; return Meta::completeMetaTags($row, $row['meta_title']); } return Meta::getHomeMetas($id_lang, $page_name); } /** * @since 1.5.0 */ public static function completeMetaTags($meta_tags, $default_value, Context $context = null) { if (!$context) $context = Context::getContext(); if (empty($meta_tags['meta_title'])) $meta_tags['meta_title'] = $default_value; if (empty($meta_tags['meta_description'])) $meta_tags['meta_description'] = Configuration::get('PS_META_DESCRIPTION', $context->language->id) ? Configuration::get('PS_META_DESCRIPTION', $context->language->id) : ''; if (empty($meta_tags['meta_keywords'])) $meta_tags['meta_keywords'] = Configuration::get('PS_META_KEYWORDS', $context->language->id) ? Configuration::get('PS_META_KEYWORDS', $context->language->id) : ''; return $meta_tags; } }
…ou alors on est plus malin /feignant et on télécharge ce fichier Meta.php et on le place dans www/override/classes
Le résultat avec le même exemple précédent sur les balises title est à présent :
< title > Mon produit < /title >Il ne vous reste plus qu’à optimiser de manière efficace vos titres produits pour les rendre visibles