Magento:为所有产品添加新属性

时间:2012-03-07 09:59:19

标签: magento attributes entity-attribute-value

我想为所有产品添加新属性。我已经通过安装脚本来完成了

$installer = $this;
$installer->startSetup();

$this->addAttribute('catalog_product','test2',array(
    'label'     => 'test2',
    'type'      => 'varchar',
    'visible'   => true,
    'required'  => false,
    'required'  => 0
));

但是如何通过

为此属性添加值
$entityTypeId     = $installer->getEntityTypeId('catalog_product');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttributeGroup($entityTypeId, 'Default', 'test2', 0);
$installer->endSetup();

3 个答案:

答案 0 :(得分:10)

这是我用来创建自己的自定义产品属性的示例代码之一: -

$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */

$installer->startSetup();

$attrCode = 'test2';
$attrGroupName = 'Test Group';
$attrLabel = 'Test 2';
$attrNote = 'Test Note';

$objCatalogEavSetup = Mage::getResourceModel('catalog/eav_mysql4_setup', 'core_setup');
$attrIdTest = $objCatalogEavSetup->getAttributeId(Mage_Catalog_Model_Product::ENTITY, $attrCode);

if ($attrIdTest === false) {
    $objCatalogEavSetup->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attrCode, array(
        'group' => $attrGroupName,
        'sort_order' => 7,
        'type' => 'varchar',
        'backend' => '',
        'frontend' => '',
        'label' => $attrLabel,
        'note' => $attrNote,
        'input' => 'text',
        'class' => '',
        'source' => '',
        'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible' => true,
        'required' => false,
        'user_defined' => true,
        'default' => '0',
        'visible_on_front' => false,
        'unique' => false,
        'is_configurable' => false,
        'used_for_promo_rules' => true
    ));
}

$installer->endSetup();

这与这两篇文章的引用一起使用: -

此外,您会发现我已使用数组键“group”来提及属性组名称,此新的自定义属性将驻留在该属性组名称中。具有讽刺意味的是,在上面的代码示例中,提到此键会自动在此Magento中找到的每个属性集中创建此属性。

因此,您无需调用任何方法(如“addAttributeToSet()”)将此属性添加到所有属性集。

希望它有所帮助。

答案 1 :(得分:0)

在magento根目录中运行此脚本。(更改您需要的配置)

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

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

$installer->addAttribute('catalog_product', 'snum', array(
             'label'             => 'Serial No',
             'type'              => 'int',
             'input'             => 'text',
             'backend'           => '',
             'frontend'          => '',
             'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
             'visible'           => true,
             'required'          => false,
             'user_defined'      => false,
             'searchable'        => false,
             'filterable'        => false,
             'comparable'        => false,
             'visible_on_front'  => true,
             'visible_in_advanced_search' => false,
             'unique'            => false
));

$installer->endSetup();

?>

删除产品属性

<?php  

require_once('app/Mage.php');
 Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
 $installer = new Mage_Sales_Model_Mysql4_Setup;
 $installer->startSetup();
 $installer->removeAttribute('catalog_product', 'snum');
 $installer->endSetup();

?>

答案 2 :(得分:0)

如图所示,您可以将自定义属性添加到magento后端。如果您将产品属性创建为模块,则可以轻松地从一个数据库移动到另一个数据库。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/background_menu"
  tools:context="com.example.caca_a_frase.Menu" >  
  <TextView
    android:id="@+id/fullscreen_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:keepScreenOn="true"
    android:textColor="#33b5e5"
    android:textSize="50sp"
    android:textStyle="bold" />

  <!--
     This FrameLayout insets its children based on system windows using
     android:fitsSystemWindows.
  -->

  <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" >

    <LinearLayout
        android:id="@+id/fullscreen_content_controls"
        style="?metaButtonBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:background="@color/black_overlay"
        android:orientation="horizontal"
        tools:ignore="UselessParent" >

    </LinearLayout>
    <ImageView
        android:id="@+id/loading"
        android:layout_width="141dp"
        android:layout_height="145dp"
        android:layout_gravity="top"
        android:rotation="350"
        android:src="@drawable/titulo_menu" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="230dp"
        android:layout_gravity="center"
        android:orientation="vertical" >

        <Button
            android:id="@+id/botaoJogar"
            android:layout_width="152dp"
            android:layout_height="59dp"
            android:layout_gravity="center"
            android:background="@drawable/botao_jogar" />

        <Button
            android:id="@+id/botaoOpcoes"
            android:layout_width="152dp"
            android:layout_height="59dp"
            android:layout_gravity="center"
            android:layout_margin="20dp"
            android:background="@drawable/botao_opcoes" />

        <Button
            android:id="@+id/botaoSair"
            android:layout_width="152dp"
            android:layout_height="59dp"
            android:layout_gravity="center"
            android:background="@drawable/botao_sair" />

    </LinearLayout>

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_gravity="right"
        android:layout_margin="7dp"
        android:background="@drawable/botao_info"
        android:text="" />

    <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:theme="?attr/actionBarTheme"
        android:minHeight="?attr/actionBarSize"
        android:id="@+id/toolbar" />

  </FrameLayout>

</FrameLayout>

请参阅我的教程,了解分步说明和文件结构http://www.pearlbells.co.uk/adding-custom-product-attributes-in-magento/