0

すべての国のリストを表示するドロップダウン属性を magento に作成しました。バックエンドでドロップダウン属性を作成してこれを行い、SQLyog を使用してそのソース モデルを に変更しましたcatalog/product_attribute_source_countryofmanufacture。これで、国のリストが表示されます。すべての国コードのリストを (2 文字形式で) 表示する新しいドロップダウン属性を作成したいと思います...

4

1 に答える 1

3

カスタムソースモデルを作成し、それを新しい属性に割り当てる必要があります。モジュールでこれを実現するには、インストール/アップグレードスクリプトを作成します。セットアップモデルがまたはのいずれ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;
    }

終わり。

于 2013-01-29T09:59:43.940 に答える