Magento为不同的产品视图创建模块

时间:2013-01-25 21:43:57

标签: magento view module

我正在尝试创建我的第一个Magento模块,该模块允许产品页面上的属性(是/否)改变产品视图页面上分组产品选项的样式。

我可能在这里开始有点太深了,但这是我对如何做到这一点的理解:

  • 创建属性并分配到默认属性集(备用组视图alt_group_view)。

  • 在/ template / catalog / product / view / type中创建一个替代的groups.phtml文件 - groupedAlt.phtml

  • 创建一个初始化模块的基本模块结构。我应该让模块创建属性,但我还没有关于它的线索!!!

然后这就是我被卡住的地方。基本上我需要纠正模块文件中寻找产品属性的逻辑 - 如果它的集合我需要编码告诉布局块可能是扩展它的东西:

<PRODUCT_TYPE_grouped translate="label" module="catalog">
<reference name="product.info">
<block type="catalog/product_view_type_grouped" name="product.info.grouped" as="product_type_data" template="catalog/product/view/type/grouped.phtml">
</reference>
</PRODUCT_TYPE_grouped translate="label" module="catalog">

希望这对某人有意义吗?

虽然我对Magento的前端和管理区域有很多了解,但我不确定我能否真正实现这一点,因为我只是从模块开发开始。

非常感谢任何建议。

此致 史蒂夫

1 个答案:

答案 0 :(得分:0)

你应该通过观​​察者来处理这个问题。要观察的事件是: controller_action_layout_generate_blocks_after

1°)在您的模块中,在etc / config.xml中,添加您的事件处理程序:

<frontend>
    <events>
        <controller_action_layout_generate_blocks_after>
            <observers>
                <yourmodule_generate_blocks_after>
                    <type>singleton</type>
                    <class>mymodule/observer</class> 
                    <method>generateBlocksAfter</method>
                </yourmodule_generate_blocks_after>                    
            </observers>                
        </controller_action_layout_generate_blocks_after>
    </events>
</frontend>

然后在Model目录中创建一个名为Observer.php的模型(MyCompany / MyModule / Model / Observer.php)

在此模型中,添加generateBlocksAfter()方法,如下所示:

public function generateBlocksAfter($event)
{                      
$controller   = $event->getAction();
    //limit to the product view page 
    if($controller->getFullActionName() != 'catalog_product_view')
    {
        return;
    }
    $layout       = $controller->getLayout();
    $myblock = $layout->getBlock('product.info.grouped');

    $_product = Mage::registry('current_product');

    if ($_product->getAltGroupView()) {
        $myblock->setTemplate('catalog/product/view/type/groupedalt.phtml');
    }
}

你在这里。