好的,所以我制作了一个模块,并使用它来管理商店上的所有自定义布局。现在,我需要使用模板向某些页面添加一些块。我在自定义布局中添加了以下行:

<?php echo $this->getChildHtml('cms_left') ?>

在更新布局XML内部,我添加了以下内容:

<reference name="cms_left">
    <block type="cms/block" name="cms_left_test" before="-">
        <action method="setBlockId"><block_id>cms_left_test</block_id></action>
    </block>    
</reference>

并包含其相关性,这是我Modles Config.xml的相关部分,该部分处理此自定义布局:

<cms_pages module="page" translate="label">
    <label>cms pages</label>
    <template>page/cms_pages.phtml</template>
    <layout_handle>cms pages</layout_handle>
</cms_pages>

据我所知,现在应该在此页面上显示cms_left_test块,但是它不起作用。我错过了某个地方的一步吗?我尝试查找一些示例,但是因为我从各地绘制了零碎的碎片,所以我不确定我的方法是否完全正确。

有帮助吗?

解决方案

您的布局中如何定义块“ cms_left”?或者更好的是“定义?”。您正在称呼:

<reference name="cms_left">
    <block type="cms/block" name="cms_left_test" before="-">
        <action method="setBlockId"><block_id>cms_left_test</block_id></action>
    </block>    
</reference>

但是为了能够引用一个块,应该存在块。

我认为您在自定义布局文件中缺少这件XML。

<default>    
    <reference name="root">
        <block type="core/text_list" name="cms_left" as="cms_left" translate="label">
            <label>CMS left block</label>
        </block>
    </reference>
</default>

其他提示

从外观上看,块 cms_left 未在任何地方定义。为了使其工作,您应该将其定义为 core/text_list 布局定义中的某个地方。然后,您可以像您试图做的那样引用它并添加新块。假设 cms_left 是一个直接的孩子 root, ,您可以执行以下操作:

<reference name="root">
    <block name="cms_left" type="core/text_list" />
</reference>

确保将其添加到上面的代码之前。

许可以下: CC-BY-SA归因
scroll top