我正在使用magento 1.9。在产品页面上,元标题就像
“产品名称类别”
我只想展示“PRODUCTNAME - Mysite.com”
如何仅在产品页面上进行此修复?
感谢。
答案 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变量的内容将根据您访问产品页面的方式而有所不同。例如:
指向产品的直接链接:
使用类别菜单导航到产品:
然后在Mage_Catalog_Block_Product_View里面_prepareLayout()方法
$product = $this->getProduct();
$title = $product->getMetaTitle();
if ($title) {
$headBlock->setTitle($title);
}
这里只是检查是否设置了元标题产品属性,如果是,则覆盖先前设置的标题。所以,你有两个选择:
在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)));
}
}