自定义Magento元标题

时间:2014-12-23 18:12:37

标签: magento title meta product

我正在使用magento 1.9。在产品页面上,元标题就像

“产品名称类别”

我只想展示“PRODUCTNAME - Mysite.com”

如何仅在产品页面上进行此修复?

感谢。

1 个答案:

答案 0 :(得分:2)

Magento在两个不同的地方设置标题标签。首先在_prepareLayout()方法中的Mage_Catalog_Block_Breadcrumbs

    $title = array();
    $path  = Mage::helper('catalog')->getBreadcrumbPath();

    foreach ($path as $name => $breadcrumb) {
        $breadcrumbsBlock->addCrumb($name, $breadcrumb);
        $title[] = $breadcrumb['label'];
    }

    if ($headBlock = $this->getLayout()->getBlock('head')) {
        $headBlock->setTitle(join($this->getTitleSeparator(), array_reverse($title)));
    }

$ path变量的内容将根据您访问产品页面的方式而有所不同。例如:

指向产品的直接链接:

  • url:/aviator-sunglasses.html
  • 标题:飞行员太阳镜

使用类别菜单导航到产品:

  • url:/accessories/eyewear/aviator-sunglasses.html
  • 标题:飞行员太阳镜 - 眼镜 - 配饰

然后在Mage_Catalog_Block_Product_View里面_prepareLayout()方法

    $product = $this->getProduct();
    $title = $product->getMetaTitle();
    if ($title) {
        $headBlock->setTitle($title);
    }

这里只是检查是否设置了元标题产品属性,如果是,则覆盖先前设置的标题。所以,你有两个选择:

  1. 在每个产品上设置元标题
  2. 在Mage_Catalog_Block_Breadcrumbs类中重写_prepareLayout()方法

    if ($headBlock = $this->getLayout()->getBlock('head')) {
        if ($product = Mage::registry('current_product')) {
            $storeName = Mage::getStoreConfig('general/store_information/name');
            $pageTitle = $storeName ? $product->getName() . ' - ' . $storeName : $product->getName();
            $headBlock->setTitle($pageTitle);
        } else {
            $headBlock->setTitle(join($this->getTitleSeparator(), array_reverse($title)));
        }
    }