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



所以我正在浏览Alan Storm的Magento教程,并完成了关于EAV属性的这一页。http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

它工作完美无缺,但我有几个问题。我有一个XML提要,我试图从和存储在数据库中读取产品。虽然这可以工作,并且它们被添加到创建的新表中,但当我查看Manage->Products下的管理时,没有列出任何产品。

我还注意到在管理中,当我去目录->管理属性时,我没有看到所有新的EAV属性。从他的解释和新的数据库表中,我看到了实际的产品数据& &;正在存储属性元数据;

但是我想:

  1. 查看我在管理
  2. 中的管理产品中保存到DB的所有这些新产品
  3. 确保我添加的新eav(基于XML字段名)在放置在主管理产品视图
  4. 时与这些项目相关联。

我完全按照他的代码,只是根据我的实验改变了名字:

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

如果你想使用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 (as array)
  • is_active
  • 状态(不确定是否强制)
  • 能见度
  • 按要求设置的属性集中的所有属性(即sku,名称,价格,tax_class_id等)

最新更新