在 magento 项目中,我有四个类别,我有 2 个产品模板文件
喜欢
1)catalog/product/view.phtml(原文)
2)目录/产品/newview.phtml(新文件)
现在我想根据类别显示产品布局
像类别 id 1 和 2,产品展示基于 view.phtml
和类别3和4,基于newview.phtml的产品展示
您可以在设计选项卡集中在后端的每个产品上进行设置:
<reference name="product.info">
<action method="setTemplate"><template>catalog/product/newview.phtml</template></action>
</reference>
否则,您也可以通过 Observer 执行此操作,以一次性获取类别 X 中的所有产品。
使用如下函数创建您自己的模块来观察controller_action_layout_generate_blocks_after
事件:
public function generateBlocksAfter($event)
{
$controller = $event->getAction();
//limit to the product view page
if($controller->getFullActionName() != 'catalog_product_view')
{
return;
}
$layout = $controller->getLayout();
$product_info = $layout->getBlock('product.info');
if(!$product_info)
{
Mage::log('Could not find product.info block');
return;
}
$id = Mage::registry('current_product')->getId();
$prod = Mage::getModel('catalog/product')->load($id);
$category_ids = $prod->getCategoryIds();
if(in_array(3,$category_ids) || in_array(4,$category_ids))
$product_info->setTemplate('catalog/product/newview.phtml');
}
根据 local.xml 文件中的类别 ID 使用此代码进行显示
<reference name="product_list">
<action method="setTemplate"><name>catalog/product/list_new.phtml</name></action>
</reference>
</CATEGORY_5>