&引用;getLogoAlt";不适用于Magento中的内容部分

&引用;getLogoAlt";不适用于Magento中的内容部分,magento,Magento,在Magento CE 1.5.1中,为什么getLogoAlt虽然可用于标题部分,但却不可用于内容部分 在主页的内容部分,我的主题的home.phtml 哪个输出为 <h1 class="no-display"></h1> <h4><a href="http://mystore.com/" id="logo" style="background-image:url(http://mystore.com/skin/frontend/mytheme/

在Magento CE 1.5.1中,为什么getLogoAlt虽然可用于标题部分,但却不可用于内容部分

在主页的内容部分,我的主题的home.phtml


哪个输出为

<h1 class="no-display"></h1>
<h4><a href="http://mystore.com/" id="logo" style="background-image:url(http://mystore.com/skin/frontend/mytheme/orange/images/logo.png)"><strong>Buy widgets here!</strong></a></h4>

但是header.phtml


正确输出为

<h1 class="no-display"></h1>
<h4><a href="http://mystore.com/" id="logo" style="background-image:url(http://mystore.com/skin/frontend/mytheme/orange/images/logo.png)"><strong>Buy widgets here!</strong></a></h4>

“标题部分”是添加了以下布局更新XML的块

<block type="page/html_head" name="head" as="head">
当您从模板中使用
$this->someMethod()
时,您正在对模板的块类调用一个方法。每个模板“属于”一个块。如果我们再看一下header类

#File: app/code/core/Mage/Page/Block/Html/Header.php
public function getLogoAlt()
{
    if (empty($this->_data['logo_alt'])) {
        $this->_data['logo_alt'] = Mage::getStoreConfig('design/header/logo_alt');
    }
    return $this->_data['logo_alt'];
}
我们可以看到
getLogoAlt
的定义

您提到的另一个模板,
home.phtml
,添加了以下布局更新xml

<block type="core/template" name="default_home_page" template="cms/default/home.phtml"/>
即使块没有定义这些方法。因此,这意味着您可以调用任何块上的
getLogoAlt
,而不会抛出错误,但只有头块将返回值。如果您想在任何模板中使用该值,只需调用

$logo_alt = Mage::getStoreConfig('design/header/logo_alt');

在模板顶部,然后使用
$logo\u alt

非常感谢您完整的回答和解释!嗨,很好的解释。在除页眉以外的其他模板上使用此函数的最佳方式是什么?我认为将函数添加到
Mage\u Core\u Block\u Text\u列表中是不好的?
$this->setFooBar('setting a value for the foo_bar data property');
echo $this->getFooBar();
$logo_alt = Mage::getStoreConfig('design/header/logo_alt');