Xml Magento插入现有块的不同示例
我想了解我在不同资源中找到的通过Magento local.xml文件插入块的示例代码的差异Xml Magento插入现有块的不同示例,xml,magento,block,Xml,Magento,Block,我想了解我在不同资源中找到的通过Magento local.xml文件插入块的示例代码的差异 <action method="insert"><name>catalog.compare.sidebar</name></action> <action method="insert"><block>catalog.compare.sidebar</block></action> <action
<action method="insert"><name>catalog.compare.sidebar</name></action>
<action method="insert"><block>catalog.compare.sidebar</block></action>
<action method="insert"><blockName>catalog.compare.sidebar</blockName></action>
catalog.compare.sidebar
catalog.compare.sidebar
catalog.compare.sidebar
每个方法的操作方法相同,但参数的名称不同。
每个例子似乎都很好,那么在这个上下文中使用“name”、“block”或“blockName”有什么区别呢
提前感谢。通过这种方式,您基本上告诉Magento调用由动作节点的父节点指定的块的“插入”方法。 (或在app/code/core/Mage/core/Block/Abstract.php中) Magento不关心子节点的名称,只关心它们的值 您可以在app/code/core/Mage/core/Model/Layout.php中观看
public function generateBlocks($parent=null)
{
if (empty($parent)) {
$parent = $this->getNode();
}
foreach ($parent as $node) {
$attributes = $node->attributes();
if ((bool)$attributes->ignore) {
continue;
}
switch ($node->getName()) {
case 'block':
$this->_generateBlock($node, $parent);
$this->generateBlocks($node);
break;
case 'reference':
$this->generateBlocks($node);
break;
case 'action':
// WE GO HERE WHEN WE HAVE AN ACTION NODE
$this->_generateAction($node, $parent);
break;
}
}
}
然后,当您查看_generateAction()时,我不会粘贴所有方法:
....
$args = (array)$node->children();
....
call_user_func_array(array($block, $method), $args);
因此,无论参数标记名是什么,结果都是相同的
干杯