Pergunta

Como faço para criar uma categoria padrão do meta título para todas as páginas da categoria?

Eu gostaria de ser algo como isto:

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

Eu quero ser o padrão apenas para páginas de categoria.

Isso é possível?

Foi útil?

Solução

Adicione o seguinte código na sua head.phtml

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

EDITAR

Tanto quanto eu sei Mage::registry('current_category') pode ser usado para verificar se estamos em uma categoria.Ver Alanstorm Resposta.As partes importantes de que a resposta é a adição abaixo para referência

As atuais versões do Magento registrar certas variáveis globais (e não o PHP as variáveis globais, mas as coisas globais para o sistema Magento) em determinadas páginas.

Chamar o seguinte

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

retorna null se os objetos ainda não foi definido (por exemplo,você está em uma página sem uma categoria ou um produto), ou retornam a categoria de produto e de objetos.

Se um objeto de produto é retornado você está em uma página de produto.

Se nenhum objeto de produto é devolvido, mas uma categoria de objeto é, você está em uma página de categoria.

em seguida, você pode imprimir o que você quiser.

Outras dicas

A maior forma de limpeza para executar este é observar para o evento controller_action_layout_generate_blocks_after.Para as partes importantes de seu módulo (Namespace_Module) seria

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

Aqui estamos registrando um observador para o evento controller_action_layout_generate_blocks_after.Este evento em particular terá disparado, depois de todos os blocos é gerado a partir do layout.Assim, neste momento em particular, podemos ter acesso a todos os blocos no Layout.O bloco que nos interessa aqui é head bloco (ie Mage_Page_Block_Html_Head).Este bloco contém o title elemento.

Arquivo : 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;
    }
}

Este é o nosso observador de classe.O método que irá alterar o título da categoria é setCategoryPageTitle().O que esta função faz é simples.Ele garante que estamos em uma página de categoria.Em seguida, ele vai pegar o head bloco e definir um novo título.Para definir um novo título, estamos usando uma função protegida _prepareCategoryTitle().Eu definida esta função de acordo com esta questão da necessidade.Atualmente ele vai voltar category name + blah blah blah.Assim você pode alterar esse método e alterar o título, de acordo com as suas necessidades.

Nota:Aqui no NÚCLEO de EDIÇÕES, SEM ALTERNÂNCIA NO PADRÃO de MODELOS.Que é por que este é o método de limpeza.

Basicamente, título das páginas, a partir do meta título do campo de categoria.

Para sua exigência,você precisa reescrever classe Mage_Catalog_Block_Category_View lá você precisar verificar o título atual usando de seleção de bloco de Cabeça getTitle() value e reset it value to default quando ele tem qualquer valor.

Reescrever classe:

<?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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top