Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Magento中,是否可以仅通过xml向标头添加静态块?_Magento - Fatal编程技术网

在Magento中,是否可以仅通过xml向标头添加静态块?

在Magento中,是否可以仅通过xml向标头添加静态块?,magento,Magento,我试图尽可能只使用local.xml自定义一个主题。我想在不修改header.phtml的情况下向标头添加一个静态块。此代码适用于内容区域,但不适用于标题: <default> <reference name="content"> <block type="cms/block" name="how-it-works-button"> <action method="setBlockId"><bl

我试图尽可能只使用local.xml自定义一个主题。我想在不修改header.phtml的情况下向标头添加一个静态块。此代码适用于内容区域,但不适用于标题:

<default>
    <reference name="content">
        <block type="cms/block" name="how-it-works-button">
            <action method="setBlockId"><block_id>how-it-works</block_id></action>
        </block>
    </reference>
</default>

工作原理
有人知道为什么吗?我以为我所需要的只是将“内容”改为“标题”,但当我这样做时,什么都没有显示


谢谢你的帮助

在块标记中添加output=“toHtml”。我认为只是这样。

内容块是一个特殊的块,称为
核心/文本列表
块(PHP类
Mage\u核心/文本列表
)。这些块将自动渲染添加到其中的所有子块

另一方面,
块是
页面/html\u头
块(PHP类
Mage\u页面\u块\u html\u头
)。此块类继承自
Mage\u Core\u block\u Template
,使其成为
Core/Template
块。如果相应的
phtml
Template请求块,则模板块将仅渲染子块。因此,通过将块添加到标题,您只完成了所需工作量的一半您需要创建一个自定义
phtml
模板

最简单的方法(post
1.4.1.1
是在您自己的主题中,在

template/page/html/header.phtml
然后在这个文件的末尾添加

<?php echo $this->getChildHtml('how-it-works-button'); ?>

假设您已通过布局xml将块添加到标题块,这将呈现您的模板。

请尝试此操作

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('how-it-works')->toHtml() ?>

header.phtml


这正是我一直在寻找的东西。然而,当我使用它时,静态块出现在页面底部,甚至在页脚下方。Alan Storm的评论向我解释了原因,但感谢您的有用实验!谢谢,我现在明白了。正如另一条评论所建议的,我尝试添加output=“toHtml”但这只会导致内容出现在页面的最底部。我现在看到这是因为Magento没有模板来锚定html。感谢您的详细解释。