Ajouter le nom des filtres dans le titre (meta title) des pages catégories

Ajouter le nom des filtres dans le titre (meta title) des pages catégoriesAfin 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 :

  • Couleurs : Jaune / Vert / Bleu / Rouge
  • Taille : S / M / L / XL / XXL

(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 :

  • Ma boutique - T-shirt Magento - Couleur rouge - taille XL

Pour l'URL :

  • t-shirt-magento.html?color=3&size=4

Architecture du module :

  • app/code/local/Magentix/MetasFilters/etc/
  • config.xml
  • app/code/local/Magentix/MetasFilters/Model/
  • Observer.php
  • app/etc/modules/
  • Magentix_MetasFilters.xml

Développement du module

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

franck @ 24-02-2010 21:28:52
Bonjour et bravo pour votre site,
pouvez vous nous indiquer les fonctions dans le fichier Magentix_MetasFilters.xml?
cordialement
Magentix @ 24-02-2010 22:17:25
J'ai ajouté le contenu du fichier à l'article ;)
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".

Ajouter un commentaire

[b]Gras[/b] [i]italic[i] [url=http://www.domaine.com]Lien[/url] [code]Code[/code]

* champs obligatoires, l'e-mail ne sera pas publié