我们商店中的所有产品类别页面是两列(NAV左)格式。我们的一个类别需要在左侧列中删除一个元素。每个左侧列的每个其他页面都具有此元素,并且需要继续这样做,但对于这几个小子类别。

上一个开发人员已设置,以便该元素在横幅中,并通过CMS定位了小部件。它设置为出现在一吨不同的页面上(例如:类别被设置为全部),我们希望保持类似,以便我们不必将新类别添加到特定列表中,因为新的列表由产品经理和Whatnot。

我找不到从特定类别中删除横幅和小部件的方法,因此我将横幅作为静态块重新创建,打算使用自定义布局更新来删除它的名称。

<reference name="left">
<remove name="my_static_block_id"></remove>
</reference> 
.

这不起作用!

我还尝试了Untchildren:

<action method="unsetChildren"/>
.

从左栏(不可取)中删除了所有内容

有些方法要这样做吗?也许在某个地方我没有看?谢谢你。

有帮助吗?

解决方案

因此,由于将窗口小部件添加到页面的方式,您的尝试实现是困难的,因此保存小部件时,它的布局XML更新会自动生成,但生成的名称只是在下面的文件中生成的随机哈希值。

mage_widget_model_widget_instance :: generatelayoutupdatexml

$hash = Mage::helper('core')->uniqHash();
$xml .= '<block type="' . $this->getType() . '" name="' . $hash . '"' . $template . '>';
.

然后后来保存到数据库中,例如在我的情况下,随机名称是9d10a0d6931d18586a907b201633d878,你可以看到的是下面的图像。

所以在理论上这样做可能不是很实际的,但有一种方法可以在不触摸任何代码的情况下做到这一点,你可以在数据库表生成icotagcode中创建窗口小部件搜索的更新记录获取新块名称,然后执行例如,如果您对窗口小部件进行任何更改,则XML和名称将刷新,并且您需要再次更新名称引用。我尝试了UNSECHILD,似乎没有工作,我怀疑是由于XML为小部件处理的顺序。

我认为你有两个真实的选择:

1)向左列,右列或其他任何地方添加新text_list,您需要添加小部件,然后mabey将它们删除在页面上。您可以在您的主题中执行此操作。

    <reference name="left">
<block type="core/text_list" name="widgets_left" as="widgets_left" translate="label">
                        <label>Widgets Left</label>
                    </block>
</reference>
.

这将在后端中添加一个新选项,如映像中,您也可以添加窗口小部件实例,或者只需删除,如果您需要作为引用作为引用的Widgets_left名称。

e.g

然后您可以在下面的特定类别中执行,您希望它们从以下方式删除:

<reference name="left">
<action method="unsetChild"><name>widgets_left</name></action>
</reference>

<remove name="widgets_left"/>
.

2)可选地,您可以通过下面的XML添加它们,但它听起来像你想要通过CMS尽可能多的控制,为什么不为我的小部件被申请。< / p>

<reference name="left">
            <block type="cms/block" name="cms_left_block_name">
                <action method="setBlockId"><block_id>my_block_identifier_from_magento_backend</block_id></action>
            </block>
        </reference>
.

然后,您将有一个作为“CMS_LEFT_BLOCK_NAME”固定的引用,您可以使用它来执行删除或unsetchild。

其他提示

您关闭,您需要知道添加的块的名称,以及它的名称是父级。 例如,如下所示,添加到父块“左”的块:

<reference name="left">
    <block type="cms/block" name="my_block_name">
         <action method="setBlockId"><block_id>some_static_block_identifier</block_id></action>
    </block>
</reference>
.

将如下删除:

<reference name="left">
    <action method="unsetChild"><child>my_block_name</child></action>
</reference>
.

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