Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento-特定于产品属性集的自定义设计布局_Magento_Layout_Attributes_Product - Fatal编程技术网

Magento-特定于产品属性集的自定义设计布局

Magento-特定于产品属性集的自定义设计布局,magento,layout,attributes,product,Magento,Layout,Attributes,Product,对于我的简单产品,我的商店有两种不同类型的属性集: Default Custom 对于属性集名称为Custom的所有产品,我需要从页面布局中删除以下部分: <reference name="root"> <remove name="header" /> <remove name="breadcrumbs" /> <remove name="footer" /> </reference> 是否有一种方法可以

对于我的
简单产品
,我的商店有两种不同类型的
属性集

Default
Custom
对于属性集名称为
Custom
的所有产品,我需要从页面布局中删除以下部分:

<reference name="root">
    <remove name="header" />
    <remove name="breadcrumbs" />
    <remove name="footer" />
</reference>

是否有一种方法可以轻松分配此属性集中的所有产品以始终删除这3个部分


我知道我可以将上述内容放在“自定义设计布局”部分中,但我目前有超过100000个产品的属性集为“自定义”,因此无法逐个查看。

对于这种情况,我们可以在事件
controller\u action\u layout\u load\u之前的
属性集的基础上添加新的布局处理程序

事件:
控制器动作、布局、加载

条件:产品属性集

因此,我在这个条件的基础上启动了一个观察者,它是addnew
当前布局上的处理程序

处理程序格式:
产品属性集{productAttributeSetName}

观察员代码:

<?php
class [ModuleNameSpace]_[ModuleName]_Model_Observe{ 
/**
     * Before load layout event handler
     *
     * @param Varien_Event_Observer $observer
     */
    public function beforeLoadLayout($observer)
    {
        if($observer->getEvent()->getAction()->getFullActionName()=='catalog_product_view'){
        $product = Mage::registry('current_product');
        if($product):
        $layout = $observer->getEvent()->getLayout();
        $attributeSet = Mage::getModel('eav/entity_attribute_set')->load($product->getAttributeSetId());
        $handle = str_replace('-', '_', $product->formatUrlKey($attributeSet->getAttributeSetName()));

        $layout->getUpdate()->addHandle('PRODUCT_ATTRIBUTE_SET_'.$handle);
        // check all Handler 
        //Zend_Debug::dump($layout->getUpdate()->getHandles());
        endif;
        }
    return ;
    }


}
<global>
    <models>
        <[MyCustomModule_Model_Class_Groupname]>
            <class>[ModuleNameSpace]_[ModuleName]_Model</class>
        </[MyCustomModule_Model_Class_Groupname]>
    </models>
</global>
   <frontend>
        <events>
            <controller_action_layout_load_before>
                <observers>
                    <my_current_page_is_observer>
                        <class>[MyCustomModule_Model_Class_Groupname]/observer</class>
                        <method>beforeLoadLayout</method>
                    </my_current_page_is_observer>
                </observers>
            </controller_action_layout_load_before>
     </events>
   </frontend>
<PRODUCT_ATTRIBUTE_SET_Custom>
<reference name="root">
    <remove name="header" />
    <remove name="breadcrumbs" />
    <remove name="footer" />
</reference
</PRODUCT_ATTRIBUTE_SET_Custom>