我想将正常标签“stock available”替换为客户可以通过控制面板为每个产品设置的属性值。这样简单,只适用于简单的产品。
现在,我想建立一个特定的模块,在需要的时候“关闭”此功能。 为何选择模块?
所以,我想要一个完全延迟的负载扩展。唯一认为我无法做到的事情是:在我的模块的布局文件中,我该怎么做:
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="product.info.availability">
<block type="disponibilita/catalog_product_view_type_semplice" name="product.info.disponibilita" as="product_disponibilita" template="itserv/disponibilita/catalog/product/view/type/default.phtml"/>
</reference>
</catalog_product_view>
</layout>
我知道它本身不能输出任何东西,但正如我所说,我不想用getChildHtml调用编辑或替换product / view.phtml文件。
所以:我知道可以通过xml删除product.info.availability块,但是如何在不编辑任何核心或原始包/主题文件的情况下将其替换为我的自定义模板(和块)?
注意:如果我在块声明中使用output =“toHtml”,它似乎无法识别参考product.info.availability
答案 0 :(得分:2)
我假设您正在扩展块catalog/product_view_type_simple
in the usual way的类,这意味着您的类现在处理布局中的现有调用,您不必替换它们。然后,您可以重新定义该块的模板:
<reference name="product.info.availability">
<action method="setTemplate"><template>itserv/disponibilita/catalog/product/view/type/default.phtml</template></action>
</reference>
答案 1 :(得分:1)
您应该能够按名称删除原始块,然后插入具有相同名称和别名的新块。由于默认模板文件使用块的别名输出(<?php echo $this->getChildHtml('product_type_availability'); ?>
),因此只需输出块代替原始块。
类似的东西:
<reference name="product.info">
<!-- remove original availability block -->
<remove name="product.info.availability" />
<!-- replace with your own availability block, keeping the same name and alias -->
<block type="disponibilita/catalog_product_view_type_semplice" name="product.info.availability" as="product_type_availability" template="itserv/disponibilita/catalog/product/view/type/default.phtml" />
</reference>