Magento プロジェクトには 4 つのカテゴリがあり、製品用の 2 つのテンプレート ファイルがあります。
お気に入り
1) catalog/product/view.phtml (オリジナル)
2) catalog/product/newview.phtml (新規ファイル)
カテゴリに基づいて商品レイアウトを表示したい
カテゴリ ID 1 と 2 のように、view.phtml に基づく製品表示ベース
およびカテゴリ 3 および 4、newview.phtml に基づく製品表示
このコードを使用して、local.xml ファイルのカテゴリ ID に従って表示します
<reference name="product_list">
<action method="setTemplate"><name>catalog/product/list_new.phtml</name></action>
</reference>
</CATEGORY_5>
これは、デザイン タブ セットのバックエンドの各製品で設定できます。
<reference name="product.info">
<action method="setTemplate"><template>catalog/product/newview.phtml</template></action>
</reference>
それ以外の場合は、オブザーバーを介してこれを実行し、カテゴリ 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');
}