Magento layout replace block with another block
我想用一个自定义类型的块替换标准布局catalog.xml中的一个块。
1 2 3 4 | <block type="catalog/product_view_attributes" name="product.attributes" as="additional" template="catalog/product/view/attributes.phtml"> <group>detailed_info</group></action> <value>Additional Information</value></action> </block> |
我想用下面的自定义块类型替换上述标准,但要使用相同的"名称"。
1 2 3 4 | <block type="attributesasgroup/groupview" name="product.attributes" as="additional" template="webguys/attributesasgroup/groupview.phtml"> <group>detailed_info</group></action> <value>Additional Information</value></action> </block> |
有人可以建议我这样做的最好方法吗?我不知道要使用的XML操作和方法。我需要删除上一个方块吗? unsetChild?如果我添加一个具有相同"名称"和相同父代的块,是否将覆盖具有相同名称的现有块?
在这里,我将解答您的每一个疑问。
1。是否可以用我的自定义块替换默认块,如上所示?
当然可以。您可以在上面的代码中使用自己的块而不是默认块
2。最好的方法是什么?
为此,我更喜欢使用
文件:
1 2 3 4 5 6 7 8 9 10 11 12 | <catalog_product_view> <remove name="product.attributes" /> <reference name="content"> <block type="attributesasgroup/groupview" name="product.attributes" as="additional" template="webguys/attributesasgroup/groupview.phtml"> <group>detailed_info</group></action> <value>Additional Information</value></action> </block> </reference> </catalog_product_view> |
在这里重要的是,应在后端定义块。如果未定义,Magento将无法理解您所引用的块,因此,Magneto将不会在块内渲染内容。因此,请确保在后端中对其进行了定义。在上述情况下,为了正确处理您的块,Magento需要在
3。如果我添加一个具有相同"名称"和相同父代的块,是否将覆盖具有相同名称的现有块?
当然,您可以为块指定默认块的名称。在magento中,每个块都应具有唯一的名称。为了遵守此规则,我们需要先删除默认块。这将使我们能够在自己的块中使用该块名称。否则,Magento的行为将不正确。
注意:有两个操作将应用于您的块。它们是
你的意思是这样吗?
1 2 3 4 5 6 7 8 9 10 11 12 | <reference name="product.attributes"> <template>webguys/attributesasgroup/groupview.phtml</template> </action> <group>detailed_info</group></action> <value>Additional Information</value> </reference> |
我们只是为该块实例替换一个新模板,使所有内容保持相同的属性值,例如
来源:http://www.magentocommerce.com/design_guide/articles/intro-to-layouts#head-anatomy-of-a-layout