3

我在 Magento 中为产品创建了一个自定义 Yes/No 属性,在升级文件中使用此代码:

$model = Mage::getModel('catalog/resource_eav_attribute');

$attributeData = array(
    'attribute_code' => 'custom_attribute',
    'frontend_label' => 'My custom attribute',
    'is_global' => '1',
    'frontend_input' => 'boolean',
    'backend_type' => 'int',
    'default_value' => null,
    'is_unique' => '0',
    'is_required' => '0',
    'is_configurable' => '1',
    'is_searchable' => '1',
    'is_visible_in_advanced_search' => '1',
    'is_comparable' => '1',
    'is_used_for_price_rules' => '0',
    'is_wysiwyg_enabled' => '1',
    'is_html_allowed_on_front' => '1',
    'is_visible_on_front' => '1',
    'used_in_product_listing' => '1',
    'used_for_sort_by' => '1',
    'is_filterable_in_search' => 1,
    'is_filterable' => 1,
    'source_model' => null,
    'option' => array(),
    'apply_to' => 'simple,configurable,bundle,grouped',
    'is_user_defined' => true,
    'global' => true,
);

$model->addData($attributeData);
$model->setEntityTypeId(
    Mage::getModel('eav/entity')->setType(Mage_Catalog_Model_Product::ENTITY)->getTypeId()
);
$model->save();

该代码有效。但是我希望在创建新产品或尝试编辑产品时默认选择是选项。现在,只有 No 首先显示。我尝试将 defult_value 更改为 true 或 1,但它不起作用。

4

3 回答 3

1

我发现 default_value 是用于创建新产品时的选项值,而不是用于没有设置属性的产品。所以我认为为了在所有产品上显示“是”,我应该制作一个脚本来更新所有具有此属性的产品。

于 2012-08-14T06:08:26.270 回答
0

为了添加一个属性,你应该去文件夹:

/var/www/html/<YOUR APP>/app/code/core/Mage/Catalog/etc

并编辑文件:config.xml,转到部分:

<product> 
<collection> 
<attributes>

并添加所需的属性。接下来,转到文件夹:

/var/www/html/<YOUR APP>/app/design/frontend/base/<YOUR THEME>/template/catalog/product

new.phtml并在需要使用属性调用时编辑文件:

<?php echo $_product→getAttributeName();?>

例如,如果您的属性称为size,请使用:

<?php echo $_product→getSize();?>
于 2012-08-14T05:19:09.693 回答
0

我认为您需要更新属性。假设“custom_attribute”是您的新属性的属性代码,“默认值”是您要更改/更新的代码,然后您将以下代码添加为新的升级脚本。

    $installer = new Mage_Eav_Model_Entity_Setup('core_setup');
    $installer->startSetup();

    $aAttribute = $installer->getAttribute('catalog_product', 'custom_attribute');
    $aAttribute['default_value'] = '1';

    $installer->updateAttribute('catalog_product', 'custom_attribute', $aAttribute);
    $installer->endSetup();

我希望这行得通。

于 2012-08-14T05:52:00.267 回答