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

  • De le 03 octobre 2009
  • Difficulté : 3/4

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

  • 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> 
commentaires

Commentez cet article : Ajouter le nom des filtres dans le titre (meta title) des pages catégories