2012-02-19 64 views
3

我正在爲分組產品開發一個小的Magento擴展。這個擴展需要另一個屬性,所以我想我可以寫一個設置腳本,爲分組產品添加一個新的屬性。但是,正如我在Magento中嘗試做的幾乎所有事情一樣,結果比我想象的要複雜得多。官方的Magento論壇沒有真正的幫助,所以我希望在這裏提供一些支持:)Magento:在安裝腳本中爲分組產品添加新屬性

新屬性應該只出現在分組產品的「常規」標籤中;簡單的產品,可配置的產品,捆綁產品等應該保持不變。屬性應該獨立於所選屬性集,就像它是一個系統屬性一樣。

爲此,我認爲我可以將屬性添加到分組產品的實體中,但正如我發現的那樣,對於分組產品沒有特殊的實體,只有產品的實體「catalog_product」。因此,我的下一個想法是,我需要將該屬性添加到「catalog_product」實體,然後將其分配給正確的屬性組,以便它僅適用於分組產品。

問題是我還沒有深入到Magento,我完全不知道我應該如何找到相應的屬性組,或者如果我的想法完全可以工作,也許我完全在錯誤的軌道上這裏:/

只是爲了讓你知道我到目前爲止: 我註冊了我的設置腳本在擴展的配置文件中,它正在執行,唯一的問題是安裝腳本本身,它看起來像下面的atm,因爲 - 我說 - 我不知道還:

$installer = $this; 
$installer->startSetup(); 
$installer->addAttribute("catalog_product", "my_attrib_name", array(/* just a placeholder */)); 
$installer->endSetup(); 

非常基本的...

回答

7

我想出瞭如何自己做到這一點。我的方法是正確的,我只需要找到相應的參數。

的的addAttribute() - 調用看起來像現在以下幾點:

// ... 
$installer->addAttribute(
    "catalog_product", // Entity the new attribute is supposed to be added to 
    "my_attrib_code", // attribute code 
    array(// Array containing all settings: 
     "type" => "varchar", 
     "label" => "My attribute", 
     "note" => "Insert additional information about the attribute here", 
     "input" => "text", 
     "global" => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 
     // Dont know if this is really necessary, but it makes sure 
     // the attribute is created as a system attribute: 
     "user_defined" => false, 
     // This makes sure the attribute only applies to grouped products 
     "apply_to" => Mage_Catalog_Model_Product_Type::TYPE_GROUPED 
    ) 
); 
// ... 

現在安裝程序添加的屬性是系統屬性,它就會自動添加到「常規」組的每個屬性的設置和不能改變/移動。正如我的意圖,它也只適用於分組產品。

+0

哇,這真的對我有效!我們可以使用它作爲addAttribute()的第一個參數: Mage :: getModel('catalog/product') - > getResource() - > getEntityType() - > getId() 或使用'Mage_Catalog_Model_Product :: ENTITY' – 7ochem 2013-05-08 12:42:14

相關問題