加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Magento布局用另一个块替换块

发布时间:2021-08-28 03:45:25 所属栏目:大数据 来源: https://www.jb51.cc
导读:我想用一个自定义类型块替换标准布局catalog.xml中的块. block type="catalog/product_view_attributes" name="product.attributes" as="additional" template="catalog/product/view/attributes.phtml" action method="addToParentGroup"groupdetailed_info

我想用一个自定义类型块替换标准布局catalog.xml中的块.

<block type="catalog/product_view_attributes" name="product.attributes" as="additional" template="catalog/product/view/attributes.phtml">
    <action method="addToParentGroup"><group>detailed_info</group></action>
    <action method="setTitle" translate="value"><value>Additional Information</value></action>
</block>

我想用下面我自己的自定义块类型替换上面的标准,但使用相同的“名称”.

<block type="attributesasgroup/groupview" name="product.attributes" as="additional" template="webguys/attributesasgroup/groupview.phtml">
    <action method="addToParentGroup"><group>detailed_info</group></action>
    <action method="setTitle" translate="value"><value>Additional Information</value></action>
</block>

有人可以告诉我最好的方法吗?我不知道要使用的XML操作和方法.我需要删除上一个块吗? unsetChild?如果我添加一个具有相同“名称”和相同父级的块,将覆盖现有的具有相同名称的块吗?

解决方法:

我会在这里经历你们的每一个疑问.

1.我是否可以用我的自定义块替换默认块,如上所示?

当然可以.您可以使用自己的块而不是默认块与上面的代码

2.最好的方法是什么?

为此,我更喜欢使用local.xml. local.xml是一个特殊的布局文件,最终将由Magento处理.也就是说,在查询了所有其他布局更新文件之后,通过此文件指定的布局更新将最终考虑并应用.所以这是改变任何布局变化的简单方法.因此,请在主题的布局目录中包含此文件,并指定布局更改.

文件:app / design / frontend /< package> /< theme> /layout/local.xml

<catalog_product_view>

    <remove name="product.attributes" />

    <reference name="content">
        <block type="attributesasgroup/groupview" name="product.attributes" as="additional" template="webguys/attributesasgroup/groupview.phtml">
            <action method="addToParentGroup"><group>detailed_info</group></action>
            <action method="setTitle" translate="value"><value>Additional Information</value></action>
        </block>
    </reference>

</catalog_product_view>

我们的local.xml保存的布局非常简单.首先,它从布局结构中删除默认块.为了使用它,我们使用了删除节点.然后我们将自己的块添加到内容部分.

这里重要的是你的块应该在后端定义.如果没有定义,Magento将不会理解你引用它的哪个块,因此,magneto不会渲染块内的内容.所以确保它在后端定义.在上面的例子中,为了正确处理你的块,Magento需要在app / code / local / Namespace / Modulename / Block / Groupview.PHP(其中Namespace_Modulename代表你的自定义模块名称)中定义Namespace_Modulename_Block_Groupview.

3.如果我添加一个具有相同“名称”和相同父级的块,将覆盖现有的具有相同名称的块吗?

当然,您可以给出块默认块的名称.在magento中,每个块都应该有一个唯一的名称.为了遵守此规则,我们需要先删除默认块.这将允许我们在我们自己的块中使用该块名称.否则Magento会表现得很糟糕.

注意:有两个操作适用于您的块.它们是addToParentGroup和setTitle.第一个将您的块设置为detailed_info组,第二个用于设置块的标题.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读