Question

Comment créer un méta-titre de catégorie par défaut pour toutes les pages de catégorie ?

J'aimerais que ce soit quelque chose comme ceci :

<title>{{category name}} - blah blah blah blah</title>

Je veux que ce soit la valeur par défaut uniquement pour les pages de catégories.

Est-ce possible?

Était-ce utile?

La solution

Ajoutez le code suivant dans votre head.phtml

if (Mage::registry(current_category)) {
    echo '<title> Categoryname- keyword1 keyword2 keyword3"';
}

MODIFIER

Pour autant que je sache Mage::registry('current_category') peut être utilisé pour vérifier si nous sommes dans une catégorie.Voir Réponse d'Alanstorm.Les parties importantes de cette réponse sont ajoutées ci-dessous pour référence

Les versions actuelles de Magento enregistrent certaines variables globales (pas les globales PHP, mais des éléments globaux au système Magento) sur certaines pages.

Appeler ce qui suit

   $category = Mage::registry('current_category');         
   $product  = Mage::registry('current_product');
   $product  = Mage::registry('product');

retournera soit null si les objets n'ont pas été définis (c'est-à-direvous êtes sur une page sans catégorie ni produit), ou renvoyez les objets catégorie et produit.

Si un objet produit est renvoyé, vous êtes sur une page produit.

Si aucun objet produit n'est renvoyé mais qu'un objet catégorie l'est, vous êtes sur une page de catégorie.

alors vous pouvez imprimer ce que vous voulez.

Autres conseils

La façon la plus propre d'y parvenir est d'observer l'événement. controller_action_layout_generate_blocks_after.Donc les parties importantes de votre module (Namespace_Module) serait

Déposer : app\code\local\Namespace\Module\etc\config.xml

<config>
    <frontend>
        <events>
            <controller_action_layout_generate_blocks_after>
                <observers>
                    <change_category_page_title>
                        <class>namespace_module/observer</class>
                        <method>setCategoryPageTitle</method>
                    </change_category_page_title>
                </observers>
            </controller_action_layout_generate_blocks_after>
        </events>
    </frontend>
</config>

Ici, nous inscrivons un observateur à l'événement controller_action_layout_generate_blocks_after.Cet événement particulier sera déclenché une fois que chaque bloc sera généré à partir de la mise en page.Ainsi, à ce moment précis, nous pouvons accéder à tous les blocs de la mise en page.Le bloc qui nous intéresse ici est head bloquer (c'est-à-dire Mage_Page_Block_Html_Head).Ce bloc contient le title élément.

Déposer : app\code\local\Namespace\Module\Model\Observer.php

<?php
class Namespace_Module_Model_Observer
{

    const CATEGORY_TITLE_CONSTANT = 'blah blah blah blah';

    public function setCategoryPageTitle(Varien_Event_Observer $observer)
    {
        //ensure modification applies only for category page.
        if (Mage::registry('current_category')) {
            //get head block
            $head = $observer->getLayout()->getBlock('head');
            $title = $this->_prepareCategoryTitle();
            //set new title
            $head->setTitle($title);
        }
    }

    protected function _prepareCategoryTitle()
    {
        return Mage::registry('current_category')->getName()
            . '-'
            . self::CATEGORY_TITLE_CONSTANT;
    }
}

C'est notre classe d'observateur.La méthode qui modifiera le titre de la catégorie est setCategoryPageTitle().Ce que fait cette fonction est simple.Cela garantit que nous sommes dans une page de catégorie.Ensuite, il saisira le head bloquer et définir un nouveau titre.Pour définir un nouveau titre, nous utilisons une fonction protégée _prepareCategoryTitle().J'ai défini cette fonction en fonction du besoin de cette question.Actuellement, il reviendra category name + blah blah blah.Vous pouvez donc modifier cette méthode et changer le titre selon vos besoins.

Note:Ici, AUCUNE MODIFICATION DE BASE, AUCUNE ALTERNATION DANS LES MODÈLES PAR DÉFAUT.C'est pourquoi c'est la méthode plus propre.

Fondamentalement, le titre des pages du champ méta-titre de la catégorie.

Pour vos besoins, vous devez réécrire la classe Mage_Catalog_Block_Category_View là-bas, vous devez vérifier le titre actuel en utilisant le bloc de contrôle Head getTitle() value et reset it value to default quand il a une quelconque valeur.

Classe de réécriture :

<?php
class Dev_AmitCatalog_Block_Catalog_Category_View extends Mage_Catalog_Block_Category_View
{
   protected function _prepareLayout()
    {
        parent::_prepareLayout();

        $this->getLayout()->createBlock('catalog/breadcrumbs');

        if ($headBlock = $this->getLayout()->getBlock('head')) {
            $category = $this->getCurrentCategory();
    if (!$headBlock->getTitle()) {
                $headBlock->setTitle($category->getName().' - blah blah blah blah');
            }
    }
}

config.xml :

  <global>
    ....
    <blocks>
      <amitcatalog>
        <class>Dev_AmitCatalog_Block</class>
      </amitcatalog>
            <catalog>
                <rewrite>
                    <category_view>Dev_AmitCatalog_Block_Catalog_Category_View</category_view>
                </rewrite>
            </catalog>
    </blocks>
.....
  </global>
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top