有谁知道如何使用窗口小部件渲染器添加自定义产品属性? 你可以在促销规则中看到这个,如果你选择SKU,你会得到一个带有产品选择的Ajax弹出窗口。
那我该怎么办呢? 在:
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY...
换句话说,我如何使用窗口小部件来选择自定义属性值?
编辑: 方案如下:
我想创建一个产品属性,在按下按钮后,将打开产品选择小部件。
选择后,所选SKU将以逗号分隔格式进入。
此行为可在目录和购物车价格规则中看到。 如果您按SKU过滤规则(必须启用SKU属性以“应用于规则”),您将获得一个字段和一个按钮,用于打开产品选择小部件。
答案 0 :(得分:1)
以下是一些可以让您走上正确轨道的想法:
首先,在设置脚本中,创建您的实体:
$installer->addAttribute('catalog_product', 'frontend_display', array(
'label' => 'Display Test',
'type' => 'varchar',
'frontend_model' => 'Test_Module/Entity_Attribute_Frontend_CsvExport',
'input' => 'select',
'required' => 0,
'user_defined' => false,
'group' => 'General'
));
确保将frontend_model设置为您要使用的模型。前端模型影响属性的显示(在前端和adminhtml部分)。
接下来,创建自己的类,并覆盖以下一个或两个函数:
public function getInputType()
{
return parent::getInputType();
}
public function getInputRendererClass()
{
return "Test_Module_Block_Adminhtml_Entity_Renderer_CsvExport";
}
第一个(getInputType()
)用于将输入类型更改为烘焙输入类型(有关选项,请参阅Varien_Data_Form_Element_*
)。但是,要设置自己的渲染器类,请使用后一个函数 - getInputRendererClass()
。这就是我将在下面演示的内容:
public function getElementHtml()
{
return Mage::app()->getLayout()->createBlock('Test_Module/Adminhtml_ExportCsv', 'export')->toHtml();
}
在这里,为了清理,我正在实例化另一个块,因为元素本身没有额外的功能来显示按钮等。
最后,创建此文件:
class Test_Module_Block_Adminhtml_ExportCsv extends Mage_Adminhtml_Block_Widget
{
protected function _prepareLayout()
{
$button = $this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => $this->__('Generate CSV'),
'onclick' => '',
'class' => 'ajax',
));
$this->setChild('generate', $button);
}
protected function _toHtml()
{
return $this->getChildHtml();
}
}
这并不涵盖AJAX部分,但会让你非常接近让其他部分工作。