我使用CE 1.9对magento来说相当新。
我知道如何通过local.xml删除/添加产品页面上的标签 但是,我试图根据产品属性的值隐藏/显示标签。
我已成功创建自定义标签。另外我创建的customTab.phtml文件能够让if语句成功运行... ... ...
这是我在phtml文件中的代码:
<?php
$staticBlockId = 'block_product_tab2';
$product = Mage::registry('current_product'); ?>
<?php if($product->getRepairservice()): ?>
<div class="std"><?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($staticBlockId)->toHtml(); ?></div>
<?php endif; ?>
这将成功隐藏或显示内容&#34;选项卡的基于属性的布尔值。但是它仍然显示标签,它只是空的。
所以我认为我需要去local.xml创建的地方,但我不确定如何构造if语句或获取属性的访问权限。任何帮助将不胜感激。
答案 0 :(得分:0)
我认为最明确的方法是创建自己的布局句柄,请参阅:http://inchoo.net/magento/custom-layout-update-handles/。您可以检查自己是否在产品页面上检查getRepairservice()
,例如:
// Inside the controllerActionLayoutLoadBefore() function of Inchoo's example
$layout = $observer->getEvent()->getLayout();
$product = Mage::registry('current_product');
if($product && $product->getRepairservice())
{
$layout->getUpdate()->addHandle('REPAIR_SERVICE')
}
之后,您可以使用XML很好地添加选项卡。
<REPAIR_SERVICE>
<reference name="product.info">
<block type="catalog/product_view_description" name="product.new.tab" as="new.tab" template="catalog/product/view/mynewcustomtab.phtml">
<action method="addToParentGroup"><group>detailed_info</group></action>
<action method="setTitle" translate="value"><value>Custom Tab</value></action>
</block>
</reference>
</REPAIR_SERVICE>