我在magento中创建了一个dropdown属性,其中显示了所有国家的列表。为此,我在后端创建了一个dropdown属性,然后使用SQLyog将其源模型更改为catalog/product_attribute_source_countryofmanufacture。现在它显示了国家/地区列表。我想创建一个新的dropdown属性,它将显示所有国家代码的列表(两个字母的格式)…
发布于 2013-01-29 17:59:44
您必须创建自定义源模型,并将其分配给您的新属性。要在模块中实现此目的,请创建一个安装/升级脚本。确保设置模型扩展Mage_Catalog_Model_Resource_Setup或Mage_Catalog_Model_Resource_Eav_Mysql4_Setup,例如:
<resources>
<yourpackage_yourmodule_setup>
<setup>
<module>YourPackage_YourModule</module>
<class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
</setup>
</yourpackage_yourmodule_setup>
</resources>在安装脚本中,创建一个属性,并将source model属性设置为您的自定义类:
$installer = $this;
/* @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */
$installer->startSetup();
$applyTo = array(
Mage_Catalog_Model_Product_Type::TYPE_SIMPLE,
Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
);
$installer->addAttribute(
'catalog_product',
'custom_countries',
array(
'group' => 'General',
'type' => 'int',
'backend' => '',
'frontend' => '',
'label' => 'Custom Countries',
'input' => 'select',
'source' => 'yourpackage_yourmodule/product_attribute_source_custom',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
'apply_to' => implode(',',$applyTo)
)
);
$installer->updateAttribute('catalog_product', 'custom_countries', 'backend_model', '');
$installer->endSetup();在您的模块的Model文件夹中,创建一个目录结构Product/Attribute/Source,并在其中放置一个文件Custom.php -这是您将放入自定义源模型的位置。
在文件YourPackage/YourModule/Model/Product/Attribute/Source/Custom.php中放置一个具有以下定义的类。
class YourPackage_YourModule_Model_Product_Attribute_Source_Custom
extends Mage_Catalog_Model_Product_Attribute_Source_Countryofmanufacture
{在其中添加一个函数override,它将选项标签的国家名称与国家代码互换:
public function getAllOptions()
{
$options = parent::getAllOptions();
foreach ($options as $key => $option) {
$options[$key] = array('value' => $option['value'], 'label' => $option['value']);
}
return $options;
}好了。
https://stackoverflow.com/questions/14578382
复制相似问题