2013-04-05 58 views
0

因此,我要通過Alan Storm的Magento教程並完成關於EAV屬性的此頁面。 http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1將我所有的EAV屬性添加到產品

它工作無懈可擊,但我有幾個問題。我有一個XML Feed,我試圖從數據庫中讀取產品並將其存儲在數據庫中。雖然這有效,並且它們被添加到創建的新表中,但當我在管理 - >產品下查看管理時,沒有列出任何產品。

我也在管理員注意到,當我去目錄 - >管理屬性,我沒有看到所有新的EAV屬性。從他的解釋中,並查看新的數據庫表,我可以看到實際產品數據&屬性元數據的存儲位置;在我新創建的表格中。

但我想:

  1. 查看所有這些新產品,我在管理保存到數據庫中管理產品
  2. 確保新EAVS我加入(基於XML領域

    :放置在主管理產品視圖

我順着他的代碼什麼時候名字)與這些項目相關聯的,根據我的實驗只是改變了名稱

回答

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保存之前。

  • attribute_set_id
  • TYPE_ID(即簡單,可配置的,分組等)
  • website_ids(如陣列)
  • IS_ACTIVE
  • :用於在Magento創造新產品

    必填字段/屬性

  • 狀態(不確定是否強制)
  • 知名度
  • 根據需要設置屬性集中的所有屬性(即sku,名稱,價格,tax_class_id等)
+0

非常感謝您的支持。 Magento正在慢慢開始有意義。我從學習他們的佈局系統開始,現在嘗試轉向操縱產品數據以及如何顯示這些數據。這週末我會全力以赴。 – Nathan 2013-04-05 16:22:23

+0

嘿,我試圖保存時出現無效的外鍵約束錯誤。我所有的屬性都已添加。通過代碼,嘗試將一行添加到'catalog_product_entity'表時,它會死掉。 'attribute_set_id'字段丟失。我是否需要以某種方式分配默認屬性集?我看過這個方法' - > setAttributeSetId(4);'但是有一個默認屬性集的全局ENV類型?我猜測在這個例子中,4是一個PK,但我不想像這樣硬編碼。 – Nathan 2013-04-05 19:35:36

+1

是的,在創建新產品時,'attribute_set_id'是強制性的。所有屬性集存儲在'eav_attribute_set'表中,並且可以在目錄>屬性>管理屬性集中查看/編輯。您可以使用'Mage_Eav_Model_Entity_Attribute_Set'模型按名稱加載它們。 'Mage :: getModel('eav/entity_attribute_set') - > load('Default','name');'然後'$ car-> setAttributeSetId($ attributeSet-> getId());'我有更新的第一篇文章與其他強制性設置。 – Ventus 2013-04-06 14:29:55

相關問題