将我的所有EAV属性添加到产品中

时间:2013-04-05 01:35:57

标签: magento magento-1.7

所以我要通过Alan Storm的Magento教程,并完成了关于EAV属性的这个页面。 http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

它完美无瑕,但我有几个问题。我有一个XML feed我试图从DB中读取产品并存储。虽然这有效,但它们被添加到创建的新表中,当我在Manage - > Products下查看管理员时,没有列出产品。

当我进入目录时,我也注意到了管理员 - >管理属性,我没有看到所有新的EAV属性。根据他的解释,并查看新的数据库表,我看到实际的产品数据和位置。正在存储属性元数据;在我新创建的表格中。

但我想:

  1. 在管理
  2. 的管理产品中查看我保存到数据库的所有这些新产品
  3. 确保我添加的新EAV(基于XML字段名称)在放置在主管理产品视图中时与这些项目相关联
  4. 我完全按照他的代码,根据我的实验更改了名称:

    foreach ($xml as $c) {
            $car = Mage::getModel('vehicleimport/eavvehicle');
            ...
            ...
            ...
            $car->save();
    }
    

1 个答案:

答案 0 :(得分:1)

如果想使用Magento产品经理,那么你应该坚持使用Magento核心功能。 Catalog > Manage Products中没有产品,因为您不使用Mage_Catalog模块及其实体来存储这些产品。

相反,您正在使用自定义模块。这不是存储目录的正确方法。

您似乎想在产品上使用一些自定义属性。这很好,也很正确。但是您需要将它们添加到catalog_product实体,而不是自定义eavvehicle

要添加新产品属性,请转到管理面板Catalog > Manage Attributes并创建一个新面板。有一种方法可以动态创建它们。只需使用Mage_Catalog_Model_Resource_Setup对象,例如:


$catalogSetup = Mage::getResourceModel('catalog/setup','default_setup');
$catalogSetup->addAttribute('catalog_product', 'attribute_name', array $attributeDefinition);

或者您可以使用模块定义设置,然后使用升级脚本在需要时添加新属性。

您还可以将属性集定义为组属性。这允许您只在产品上添加必要的属性。

您希望使用Mage::getModel('catalog/product')添加您的产品。所以你的循环看起来像:


foreach ($xml as $c) {
        $car = Mage::getModel('catalog/product');
        ...
        ...
        ...
        $car->save();
}

如果您使用多个商店视图(可能是语言版本),则可以为同一产品设置不同的语言值。要将它们保存为正确的商店,您需要设置正确的商店视图,例如:


$car = Mage::getModel('catalog/product');
$car->setStoreId(Mage::app()->getStore('french')->getId());
$car->setName('French Name of the car');
$car->save();

如果您不使用多个商店视图,那么在保存之前在产品上设置admin商店ID是安全的。

在Magento中创建新产品的必填字段/属性:

  • attribute_set_id
  • type_id(即简单,可配置,分组等)
  • website_ids(作为数组)
  • IS_ACTIVE
  • 状态(不确定是否必须)
  • 知名度
  • 在属性集中按需要设置的所有属性(即sku,name,price,tax_class_id等)