



Afin d'accroître sa visibilité, ajouter le nom des filtres et leur valeur dans la balise meta title des pages catégories est très bénéfique. Cela empêche le dédoublonnage des titres et y insère des mots clés.
Lorsque l'on navigue dans les catégories de la boutique et que l'on filtre les résultats (SHOP BY), les metas sont strictement identiques sur toutes les pages de la catégorie. Les titres sont donc autant de fois dupliqués qu'il existe de combinaison de filtrage...
Imaginons qu'une catégorie dispose des filtres suivants :
(4 x 5) + 1, soit 21 pages dont le titre et la description seront identiques.
Afin de pallier à ce problème nous allons développer un module qui générera les titres automatiquement de cette manière :
Pour l'URL :
Déclarons un nouvel Observer depuis le fichier de configuration :
app/code/local/Magentix/MetasFilters/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Magentix_MetasFilters>
<version>0.1</version>
</Magentix_MetasFilters>
</modules>
<global>
<models>
<metasfilters>
<class>Magentix_MetasFilters_Model</class>
</metasfilters>
</models>
</global>
<frontend>
<events>
<controller_action_layout_generate_blocks_after>
<observers>
<magentix_metasfilters_observer>
<type>singleton</type>
<class>metasfilters/observer</class>
<method>editMetas</method>
</magentix_metasfilters_observer>
</observers>
</controller_action_layout_generate_blocks_after>
</events>
</frontend>
</config>
La méthode editMetas se chargera de récupérer les filtres sélectionnés, de les juxtaposer, et de générer le nouveau titre :
app/code/local/Magentix/MetasFilters/Model/Observer.php
<?php
class Magentix_MetasFilters_Model_Observer {
public function editMetas($observer) {
$layout = $observer->getLayout();
$_filters = Mage::getSingleton('catalog/layer')->getState()->getFilters();
if(count($_filters)) {
$separator = ' '.Mage::getStoreConfig('catalog/seo/title_separator').' ';
$s = '';
foreach ($_filters as $_filter) $s .= $separator.strip_tags(Mage::helper('cms')->__($_filter->getName()).' '.$_filter->getLabel());
if($headBlock = $layout->getBlock('head')) {
$head = array();
if(strlen(Mage::getStoreConfig('design/head/title_prefix'))) $head[Mage::getStoreConfig('design/head/title_prefix')] = '';
if(strlen(Mage::getStoreConfig('design/head/title_suffix'))) $head[Mage::getStoreConfig('design/head/title_suffix')] = '';
$headBlock->setTitle(implode(array_filter(explode($separator,strtr($headBlock->getTitle().$separator.$s,$head))),$separator));
}
}
}
}
Il ne reste plus qu'à déclarer et activer le module :
app/etc/modules/Magentix_MetasFilters.xml
<?xml version="1.0"?>
<config>
<modules>
<Magentix_MetasFilters>
<active>true</active>
<codePool>local</codePool>
</Magentix_MetasFilters>
</modules>
</config>
Commentez cet article Ajouter le nom des filtres dans le titre (meta title) des pages catégories
pouvez vous nous indiquer les fonctions dans le fichier Magentix_MetasFilters.xml?
cordialement
Il s'agit juste du fichier permettant la déclaration et l'activation de l'extension, ainsi que le type de contribution (community ou local). De manière général les extensions récupérées depuis Magento Connect se placeront dans community (sauf oublie du développeur lors de la génération du package), dans local on y place les extensions "maison".
Peut-on faire la même chose sur les pages de produits ? Je souhaiterais que le titre de la page devienne :
"texte fixe" + nom du produit + marque
Merci
Le tuto est très clair et très efficace, il fonctionne a merveilles pour mes pages catégories. Félicitations
J'ai mis en place le système de filtres sur les pages de résultats de recherche, malheureusement l'observer ne modifie pas les metas pour ces pages. Après rapide investigation il s'agit de la ligne suivante qui ne renvoi aucun résultat:
Mage::getSingleton('catalog/layer')->getState()->getFilters();
Auriez vous une idée de ce qu'il faudrait modifier pour que cet observer soit efficace sur les pages de recherche avancée (quitte à rajouter un else) ?
Merci,
Robin.
Le module fonctionne pour la version 1.4 ? Je ne vois pas cette fonctionnalité sur officeeasy.fr