创建包含国家/地区代码的下拉属性,洋红色



我在magento中创建了一个下拉列表属性,其中显示了所有国家/地区的列表。我通过在后端创建一个下拉列表属性来做到这一点,然后我使用 SQLyog 将其源模型更改为 catalog/product_attribute_source_countryofmanufacture 。现在它显示国家/地区列表。我想创建一个新的下拉属性,它将显示所有国家/地区代码的列表(以两个字母格式)...

您必须创建自定义源模型并将其分配给新属性。要在模块中实现此目的,请创建安装/升级脚本。确保设置模型扩展Mage_Catalog_Model_Resource_SetupMage_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>

在安装脚本中,创建一个属性,并将源模型属性设置为自定义类:

$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
{

在其中添加一个函数覆盖,将选项标签的国家/地区名称与国家/地区代码交换:

public function getAllOptions()
    {
        $options = parent::getAllOptions();
        foreach ($options as $key => $option) {
            $options[$key] = array('value' => $option['value'], 'label' => $option['value']);
        }
        return $options;
    }

做。

最新更新