不,至少没那么容易。标题可以在任何地方设置,它被设置为本地化字符串,没有任何附加信息。
例子
类别页面
标题在Mage_Catalog_Block_Category_View
块内设置
if ($headBlock = $this->getLayout()->getBlock('head')) {
$category = $this->getCurrentCategory();
if ($title = $category->getMetaTitle()) {
$headBlock->setTitle($title);
}
产品页面
标题在Mage_Catalog_Block_Product_View
块内设置
$headBlock = $this->getLayout()->getBlock('head');
if ($headBlock) {
$product = $this->getProduct();
$title = $product->getMetaTitle();
if ($title) {
$headBlock->setTitle($title);
}
内容管理系统页面
标题在Mage_Cms_Block_Page
块内设置
$head = $this->getLayout()->getBlock('head');
if ($head) {
$head->setTitle($page->getTitle());
大车
标题设置在Mage_Checkout_CartController
(这次不是块!)
$this
->loadLayout()
->_initLayoutMessages('checkout/session')
->_initLayoutMessages('catalog/session')
->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));
等等等等
不幸的是,没有单点可以挂钩,您必须分别处理所有情况。
唯一常用的方法是Mage_Page_Block_Html_Head::setTitle()
,如前所述,这为时已晚,因为它已经获取了本地化字符串。
此外,正如您在示例中看到的那样,有时标题是翻译文本,__()
有时它是当前商店视图上下文中模型的属性。