Magazine Ebusiness

Optimisez les balises meta title dans PrestaShop

Publié le 05 mai 2013 par Amerigeau @arnaudmerigeau
5 mai 2013

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

icon smile Optimisez les balises meta title dans PrestaShop

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

icon wink Optimisez les balises meta title dans PrestaShop
Il faut également penser à supprimer le fichier www/cache/classes_index.php – qui sera regénéré – pour que cet override soit pris en compte.

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

icon smile Optimisez les balises meta title dans PrestaShop


Retour à La Une de Logo Paperblog

A propos de l’auteur


Amerigeau 144 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte