0

因此,我将通过 Alan Storm 的 Magento 教程并完成有关 EAV 属性的此页面。http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

它完美无瑕,但我有几个问题。我有一个 XML 提要,我正在尝试从数据库中读取产品并将其存储在数据库中。虽然这有效,并且它们被添加到创建的新表中,但当我在管理 - > 产品下查看管理员时,没有列出任何产品。

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

但我想:

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

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

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

1 回答 1

1

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

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

您似乎想在您的产品上使用一些自定义属性。这很好而且正确。但是您需要将它们添加到catalog_product实体中,而不是您的 custom 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 中创建新产品的必填字段/属性:

  • 属性集ID
  • type_id(即简单、可配置、分组等)
  • website_ids(作为数组)
  • 活跃
  • 状态(不确定是否是强制性的)
  • 能见度
  • 根据需要设置的属性集中分组的所有属性(即 sku、名称、价格、tax_class_id 等)
于 2013-04-05T08:29:00.060 回答