2015-09-05 197 views
0

我试图做一个重写块的例子。我以为我正确地按照说明操作,但没有任何反应。某处有错误吗?Magento - 覆盖块

要覆盖的块是Mage_Page_Block_Html_Head。 我做块的重写config.xml中:

<config> 
    <blocks> 
     <html> 
      <rewrite> 
       <head>Hello_Mymodule_Block_Head</head> 
      </rewrite> 
     </html> 
    </blocks>  
</config> 

然后,我在创建Head.php:应用程序 - 代码 - 本地 - 你好 - Mymodule中 - 块 - Head.php。

我从原来的Head.php的方法的getTitle复制到我的新Head.php,然后我只是把“模()”,看看它的工作原理:

class Hello_Mymodule_Block_Head extends Mage_Page_Block_Html_Head { 
public function getTitle() 
{ 
    die(); 
    if (empty($this->_data['title'])) { 
     $this->_data['title'] = $this->getDefaultTitle(); 
    } 
    return strtoupper(htmlspecialchars(html_entity_decode(trim($this->_data['title']), ENT_QUOTES, 'UTF-8'))); 
}}  

什么也没有发生,我不知道如何搜索错误。我的模块是活动和工作(它显示在管理员)

回答

1

你必须重写块Mage_Page_Block_Html_Head,但你要重写的是Mage_Block_Html_Head根本不存在。 将您的confix xml更改为

<config> 
    <blocks> 
     <page> 
      <rewrite> 
       <html_head>Hello_Mymodule_Block_Head</html_head> 
      </rewrite> 
     </page> 
    </blocks>  
</config> 
+0

太棒了,谢谢!我不认为“页面”是一个块,因为它包含“块”文件夹。你知道这背后的逻辑吗?是否“页面”是一个块,即使它在块文件夹之外? – Galivan

+1

Page是模块名称,您正在重写位于html文件夹下的块头。 – rajatsaurastri