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