marty69 Posted December 2, 2010 Share Posted December 2, 2010 Bonjour,Une petite problématique : je voudrais pouvoir afficher dans le meta title de mes pages, le nom de la catégorie principale ou l'on se trouve.Exemple :Chez moi, le site est divisé en 3 grandes sections (qui sont en fait les 3 premières catégories du site)Disons que A, B et C sont ces sections.J'aimerais que dans le meta title de toutes les catégories et les produits d'une section soit intégré le nom de la section auquel ils appartiennent.Par exemple ca donnerait pour un produit de la section A :A : nom du produitPour une catégorie de la section B :B : nom de la catégorieJ'ai cherché du côté de classes/Tools.php et header.tpl mais je ne trouve rien de concluant...Si quelqu'un est inspiré...Merci Link to comment Share on other sites More sharing options...
marty69 Posted December 4, 2010 Author Share Posted December 4, 2010 ne me dites pas que cette petite question colle les plus calés d'entre vous ? non mais sans rire si quelqu'un à une idée...thx ! Link to comment Share on other sites More sharing options...
patate34 Posted December 7, 2010 Share Posted December 7, 2010 Hello, je me penche sur le même sujet ce soir. A mon avis il y a 2 méthodes différentes : 1 - Par modification directement du champs meta_title dans la base de données sur la table ps_psproduct_lang. avantage : Simple à réaliser via un Update du champ Inconvénient : Titre "en dur" n'évoluant pas si changement des informations composant la balise Title. Sauf par un tâche planifiée CRON, mais je ne connais pas pas du tout ce sujet...2 - Par modification de code. Je regarde effectivement côté tools.php. Je débute juste ma recherche, si je trouve quelque chose, je le post ! et inversement , si tu trouves une piste, n'hésites pas A+ pour de goods news j'espère... Link to comment Share on other sites More sharing options...
patate34 Posted December 7, 2010 Share Posted December 7, 2010 Je pense ne pas être très loin de la solution, même si je ne suis pas sûr que ça soit la bonne n'étant pas un spécialiste... Enfin bref, j'ai modifié le code suivant dans le header.tpl {if isset($return_category_name) AND $return_category_name} /* Dans ce cas le titre est de la forme "Nom du produit - Catégorie du produit" */ <title>{$name} - {$return_category_name|escape:'htmlall':'UTF-8'}</title> {else} /* Sinon, on retrouve le titre pas défaut */ <title>{$meta_title|escape:'htmlall':'UTF-8'}</title> {/if} Sauf que... Il y a un hic ! Je n'arrive pas à récupérer la valeur de la catégorie {$return_category_name}, pourtant elle est bien présente dans la Smarty Debug Console ?!?!? Je ne comprends pas pourquoi.... Une idée ? Link to comment Share on other sites More sharing options...
marty69 Posted December 8, 2010 Author Share Posted December 8, 2010 Hello,Je m'y remet aujourd'hui, j'étais un peu occupé ces derniers jours.Perso ce qui me manque c'est le nom de cette variable qui récupère le nom de la catégorie. Dans mon cas il me faut la catégorie de base, pas la catégorie en cours.Donc je regarde ça et on se tient au courant.Pour ton code je vais voir de mon côté. Es-tu sur de tes conditions if{} ? Link to comment Share on other sites More sharing options...
marty69 Posted December 8, 2010 Author Share Posted December 8, 2010 Je ne vois pas de variable $return_category_name...Les variables dont je dispose et qui pourraient aider sont :$blockCategTree -> j'imagine les catégories dans le module blockcategories $cat et $categories -> je ne sais aps trop d'ou ca vient ! dans $categories j'ai mes 4 premières catégories, dans $cat j'ai la 5eme ! mai j'ai pas la catégorie Accueil...$currentCategoryId -> id de la catégorie actuelle.Je me demande s'il n'est pas plus recommandé d'intervenir directement dans le PHP style Tools.php... Link to comment Share on other sites More sharing options...
patate34 Posted December 8, 2010 Share Posted December 8, 2010 Hello Marty, en fait j'ai compris pourquoi je n'arrivais pas à récupérer cette variable. J'avais positionné le $smarty->debugging à true dans le smarty.config.inc.php et je pense que dans ce cas, la Smarty Debug Console montre toutes les variables disponibles et pas seulement celle du header.tpl.Du coup, j'ai simplement mis {debug} dans le header.tpl et effectivement cette variable n'est pas dispo sans modification du php... Mais sinon, je te confirme que le $return_category_name correspond bien à la catégorie du produit...Sinon dans le header.tpl, on a la {$currentCategoryId}... Je pense que ça ne doit pas être compliquer de récupérer le libellé de cette catégorie... Mais modif PHP à faire...Je poursuis mes recherches... To be continue... Link to comment Share on other sites More sharing options...
marty69 Posted December 8, 2010 Author Share Posted December 8, 2010 ya pas un dév qui pourrait nous éclairer ? Link to comment Share on other sites More sharing options...
création de sites & seo Posted December 8, 2010 Share Posted December 8, 2010 up up up svp Link to comment Share on other sites More sharing options...
patate34 Posted December 9, 2010 Share Posted December 9, 2010 Bon, j'ai trouvé un truc qui marche, maintenant, n'étant pas un spécialiste, c'est sans doute du bricolage, mais j'espère que des personnes compétentes pourront nous aider à améliorer le truc.Objectif : Titre page du style "Nom Produit" - "Nom Catégorie du produit" L'idée est de récupérer le nom de la catégorie sous forme de $category_name pour pouvoir le manipuler dans le header.tpl.1 - Dans "classes/Tools.php" :Modification de la requete SQL en rajoutant le nom de la catégorie. static public function getMetaTags($id_lang) { global $maintenance; if (!(isset($maintenance) AND (!isset($_SERVER['REMOTE_ADDR']) OR $_SERVER['REMOTE_ADDR'] != Configuration::get('PS_MAINTENANCE_IP')))) { /* Products specifics meta tags */ if ($id_product = self::getValue('id_product')) { $row = Db::getInstance()->getRow(' SELECT pl.`name`, pl.`meta_title`, pl.`meta_description`, pl.`meta_keywords`, pl.`description_short`, c.`name` category_name FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = p.`id_product`) LEFT JOIN `'._DB_PREFIX_.'category_lang` c ON (p.`id_category_default` = c.`id_category` AND c.id_lang ='.intval($id_lang).') WHERE pl.id_lang = '.intval($id_lang).' AND pl.id_product = '.intval($id_product).' AND p.active = 1'); if ($row) { if (empty($row['meta_description'])) $row['meta_description'] = strip_tags($row['description_short']); return self::completeMetaTags($row, $row['name'], $row['category_name'] ); } } 2- Puis dans le fichier header.tpl, j'ai fait la modification suivante : {if isset($category_name) AND $category_name} <title>{$name|escape:'htmlall':'UTF-8'} - {$category_name|escape:'htmlall':'UTF-8'}</title> {else} <title>{$meta_title|escape:'htmlall':'UTF-8'}</title> {/if} Voila, suis en phase de tests, mais ça a l'air de fonctionner. N'hésitez pas à critiquer ce code, je ne le prendrai pas mal Link to comment Share on other sites More sharing options...
création de sites & seo Posted December 9, 2010 Share Posted December 9, 2010 bonsoir patate34ton code marche très biencordialementphil 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