我正在尝试创建我的第一个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的前端和管理区域有很多了解,但我不确定我能否真正实现这一点,因为我只是从模块开发开始。
非常感谢任何建议。
此致 史蒂夫
答案 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');
}
}
你在这里。