我目前正在尝试更好地了解块在 Magento 中的工作方式。我查看了一些文件以获得更好的想法,它有所帮助,但它们对于我目前有限的技能来说太复杂了,我仍然没有正确理解正在发生的事情以及如何将它们实施到我的网站中。我意识到它们对于与 Magento 合作是必不可少的,所以我想我会列出一个要尝试和实现的事情的列表:
显示一个块(完成)
显示一个块和子块
在 magento 布局中显示一个块
在 magento 布局的页面上放置一个块
学习最常用的“类型”属性以及何时使用它们
到目前为止,我已经把 _index_index 命名空间/模块/etc/config.xml
<frontend>
....
<layout>
<updates>
<learningblocks>
<file>Namespace/Module/childblocks.xml</file>
<file>Namespace/Module/blocks.xml</file>
</learningblocks>
</updates>
</layout>
</frontend>
命名空间/模块/控制器/IndexController.php
class Namespace_Module_IndexController
extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$this->loadLayout('learningblocks')->renderLayout();
}
public function blocksAction()
{
$this->loadLayout('blocknode')->renderLayout();
}
}
前端/基础/默认/布局/命名空间/模块/blocks.xml
<layout>
<blocknode>
<block type="core/text" name="blocktest" output="toHtml" >
<action method="setText">
<args>some text to display on screen</args>
</action>
</block>
</blocknode>
</layout>
以上按预期工作,并在白页上显示了字符串“要在屏幕上显示的一些文本”。但这就是我所能做的,我无法让子块渲染到屏幕上,也无法在主题中显示任何内容,更不用说尝试在该主题中移动它了
以下是我似乎无法开始工作的尝试之一。为什么这不起作用?
前端/基础/默认/布局/命名空间/模块/childblocks.xml
<layout>
<abcde>
<block type="core/template" name="childblocks" output="toHtml" template="namespace/module/childblocks.phtml">
<block type="core/text" name="anyname">
<action method="setText">
<args>Some text to add to this page</args>
</action>
</block>
</block>
</abcde>
<learningblocks_index_index>
<update handle="abcde" />
</learningblocks_index_index>
</layout>
前端/基础/默认/模板/命名空间/模块/childblocks.phtml
<p>from the childblock.phtml page</p><?php $this->getChildHtml(); ?>
注意:我已将命名空间和模块名称更改为更通用,希望它更易于阅读(它们的名称选择得不是很好)。