Jump to content

[Résolu] Supprimer le "Nom du site" dans la balise "Title"


yan.k

Recommended Posts

Bonsoir,

Comment faire pour supprimer le nom du site par défaut de la balise "title" de prestashop ?

En fait je préfère la gérer moi même, par exemple dans le fichier header.tpl j'ai mis ceci :

<title>{$meta_title|escape:'htmlall':'UTF-8'} - Titre de mon site</title>



Grâce à ça, le nom de mon site s'affiche sur toutes les pages, précédé par le nom des produits et des titres de pages.

Ce qui n'est pas le cas par défaut.

Le problème est que sur ma page d'accueil, les pages CMS et les pages produits (product.tpl) je me retrouve avec :

Nom du produit - Titre de mon site - Nom de mon site

Ce qui fait un doublon inutile.

Il me semble qu'il s'agit du nom rentré lors de l'installation de presta, mais je ne trouve pas le fichier concerné pour le supprimer.

Merci de votre aide.

Link to comment
Share on other sites

Bonjour,

Attention cette action modifiera le cœur de PestaShop.
Dans la classe classes/Tools.php, les méthodes suivantes peuvent vous être modifiée, notamment le PS_SHOP_NAME :

   /**
   * Get meta tags for a given page
   *
   * @param integer $id_lang Language id
   * @return array Meta tags
   */
   static public function getHomeMetaTags($id_lang)
   {
       global $cookie, $page_name;

       /* Metas-tags */
       $metas = Meta::getMetaByPage($page_name, $id_lang);
       $ret['meta_title'] = (isset($metas['title']) AND $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');
       $ret['meta_description'] = (isset($metas['description']) AND $metas['description']) ? $metas['description'] : '';
       $ret['meta_keywords'] = (isset($metas['keywords']) AND $metas['keywords']) ? $metas['keywords'] :  '';
       return $ret;
   }


   static public function completeMetaTags($metaTags, $defaultValue)
   {
       global $cookie;

       if ($metaTags['meta_title'] == NULL)
           $metaTags['meta_title'] = $defaultValue.' - '.Configuration::get('PS_SHOP_NAME');
       if ($metaTags['meta_description'] == NULL)
           $metaTags['meta_description'] = Configuration::get('PS_META_DESCRIPTION', intval($cookie->id_lang)) ? Configuration::get('PS_META_DESCRIPTION', intval($cookie->id_lang)) : '';
       if ($metaTags['meta_keywords'] == NULL)
           $metaTags['meta_keywords'] = Configuration::get('PS_META_KEYWORDS', intval($cookie->id_lang)) ? Configuration::get('PS_META_KEYWORDS', intval($cookie->id_lang)) : '';
       return $metaTags;
   }



Bien cordialement

Link to comment
Share on other sites

Nickel merci bien !

SOLUTION

Remplacer cette ligne :

$ret['meta_title'] = (isset($metas['title']) AND $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');



par

$ret['meta_title'] = (isset($metas['title']) AND $metas['title']) ? $metas['title'] : Configuration::get('PS_SHOP_NAME');



et

$metaTags['meta_title'] = $defaultValue.' - '.Configuration::get('PS_SHOP_NAME');



par

$metaTags['meta_title'] = $defaultValue;

Link to comment
Share on other sites

Par contre étrangement le nom du site persiste sur les pages CMS du site...

Un autre fichier à modifier ?


Bonjour,

Toujours dans la même classe Tools.php, à la méthode static public function getMetaTags($id_lang) :

           /* CMS specifics meta tags */
           elseif ($id_cms = self::getValue('id_cms'))
           {
               $row = Db::getInstance()->getRow('
               SELECT `meta_title`, `meta_description`, `meta_keywords`
               FROM `'._DB_PREFIX_.'cms_lang`
               WHERE id_lang = '.intval($id_lang).' AND id_cms = '.intval($id_cms));
               if ($row)
               {
                   $row['meta_title'] = $row['meta_title'].' - '.Configuration::get('PS_SHOP_NAME');
                   return self::completeMetaTags($row, $row['meta_title']);
               }
           }



Bonne continuation

Link to comment
Share on other sites

Bonjour,

Dans le même esprit, comment rajouter dans le titre le nom de la catégorie en cours ?
je vois bien le concept, mais quelle est la variable qui récupère cette donnée (la catégorie) ?


Bonjour,

Lorsque vous naviguez dans une catégorie, c'est déjà le cas. La balise title reprend le nom de la catégorie grâce à $row['name'] : (toujours dans Tools.php, dans la méthode static public function getMetaTags($id_lang))

           /* Categories specifics meta tags */
           elseif ($id_category = self::getValue('id_category'))
           {
               $row = Db::getInstance()->getRow('
               SELECT `name`, `meta_title`, `meta_description`, `meta_keywords`, `description`
               FROM `'._DB_PREFIX_.'category_lang`
               WHERE id_lang = '.intval($id_lang).' AND id_category = '.intval($id_category));
               if ($row)
               {
                   if (empty($row['meta_description']))
                       $row['meta_description'] = strip_tags($row['description']);
                   return self::completeMetaTags($row, Category::hideCategoryPosition($row['name']));
               }
           }



Bien cordialement

Link to comment
Share on other sites

Bonjour,

Merci pour l'info. Oui j'avais repéré ce bout de code (que je ne comprend pas totalement !) mais cependant il n'y a pas d'affichage de cette info dans le titre !? quel est le bout de code qui récupère ce nom de catégorie ?

En gros j'imagine qu'il faudrait avoir un truc du genre :
$row['meta_description'] = strip_tags($row['description']) et la catégorie ici ;

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