Мета-заголовки по умолчанию для страниц категорий

magento.stackexchange https://magento.stackexchange.com//questions/73212

  •  13-12-2019
  •  | 
  •  

Вопрос

Как мне создать мета-заголовок категории по умолчанию для всех страниц категории?

Я бы хотел, чтобы это было что-то вроде этого:

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

Я хочу, чтобы это было по умолчанию только для страниц категорий.

Возможно ли это?

Это было полезно?

Решение

Добавьте следующий код в свой head.phtml

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

РЕДАКТИРОВАТЬ

насколько я знаю Mage::registry('current_category') может использоваться для проверки того, относимся ли мы к какой-либо категории.Видеть Ответ Алана Шторма.Важные части этого ответа добавляются ниже для справки

Текущие версии Magento регистрируют определенные глобальные переменные (не глобальные значения PHP, а глобальные для системы Magento) на определенных страницах.

Вызываю следующее

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

либо вернет значение null, если объекты не были установлены (т.е.вы находитесь на странице без категории или продукта), или верните объекты категории и продукта.

Если возвращается объект product, вы попадаете на страницу продукта.

Если объект product не возвращается, но возвращается объект category, вы находитесь на странице категории.

затем вы можете напечатать то, что хотите.

Другие советы

Самый чистый способ выполнить это - понаблюдать за событием controller_action_layout_generate_blocks_after.Итак, важные части вашего модуля (Namespace_Module) было бы

Файл : 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>

Здесь мы регистрируем наблюдателя на мероприятие controller_action_layout_generate_blocks_after.Это конкретное событие будет запущено после того, как каждый блок будет сгенерирован из макета.Таким образом, в данный конкретный момент мы можем получить доступ ко всем блокам в макете.Блок, который нас здесь интересует, - это head блок (т.е. Mage_Page_Block_Html_Head).Этот блок содержит title элемент.

Файл : 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;
    }
}

Это наш класс наблюдателей.Метод, который изменит название категории, заключается в следующем setCategoryPageTitle().То, что делает эта функция, очень просто.Это гарантирует, что мы находимся на странице категории.Тогда он захватит head заблокируйте и установите новый заголовок.Чтобы задать новый заголовок, мы используем защищенную функцию _prepareCategoryTitle().Я определил эту функцию в соответствии с потребностями этого вопроса.В настоящее время он вернется category name + blah blah blah.Таким образом, вы можете изменить этот метод и изменить заголовок в соответствии с вашими потребностями.

Примечание:Здесь НЕТ ОСНОВНЫХ ПРАВОК, НЕТ ЧЕРЕДОВАНИЯ ШАБЛОНОВ ПО УМОЛЧАНИЮ.Вот почему это самый чистый метод.

в основном, заголовок страниц из металогической области категории.

Для вашего требования необходимо переписать класс Mage_Catalog_Block_Category_View, вам нужно проверить текущее название, используя проверку заголовка getTitle() value и reset it value to default, когда у него есть какое-либо значение.

Переписать класс:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top