2012-10-17 28 views
7

Tôi đang sử dụng tập lệnh thiết lập mô đun để thêm nhóm thuộc tính mới, thuộc tính và thuộc tính. Tôi có thể tạo thuộc tính, nhóm thuộc tính và thêm sản phẩm vào nhóm/nhóm. Nhưng tôi đang gặp khó khăn thiết is_filterable, is_visible, is_visible_on_frontis_html_allowed_on_front tham số.Thêm thuộc tính sản phẩm tùy chỉnh trong Magento bằng cách sử dụng tập lệnh thiết lập

$installer->addAttribute('catalog_product', 'offer_type', array(
     'backend'  => '', 
     'frontend'  => '', 
     'class' => '', 
     'default'  => '', 
     'label' => 'Offer type', 
     'input' => 'text', 
     'type' => 'int', 
     'source'  => '', 
     'global'  => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 
     'visible'  => 1, 
     'required'  => 1, 
     'searchable' => 0, 
     'filterable' => 1, 
     'unique'  => 0, 
     'comparable' => 0, 
     'visible_on_front' => 1, 
     'is_html_allowed_on_front' => 1, 
     'user_defined' => 1, 
)); 

$installer->addAttributeToSet('catalog_product', $sSetId, $groupName, 'offer_type'); 

Tôi thấy offer_type được thêm vào Magento và thuộc tính set ($ sSetID) và vào nhóm ($ groupname). Mặc dù khi tôi nhìn vào thuộc tính từ giao diện người dùng quản trị Magento (Catalog-> attributes-> Manage Attributes), tôi thấy các tham số is_filterable, is_visible, is_visible_on_front và is_html_allowed_on_front được đặt thành No. Tôi đã thử các kết hợp khác nhau nhưng không may mắn. Tôi đang sử dụng Magento CE 1.7.0.2. Tôi không chắc chắn những gì còn thiếu trong kịch bản thiết lập của tôi. Tôi đã trả lại http://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/ cho việc này. Tôi có thiếu gì không? Cảm ơn trước.

Trả lời

7

Bạn đã định cấu hình đúng trình cài đặt của mình trong tệp config.xml chưa? Lớp chuẩn cho trình cài đặt Magento là Mage_Eav_Model_Entity_Setup nhưng khi giao dịch với các sản phẩm, bạn sẽ cần sử dụng Mage_Catalog_Model_Resource_Setup để thay thế. Tại sao? nhìn vào phương pháp của họ _prepareValues() và bạn sẽ hiểu các thuộc tính được uỷ quyền là gì (sản phẩm có nhiều lựa chọn hơn so với eav_objects tiêu chuẩn, bạn có thể thấy rằng khi so sánh các bảng eav_attributecatalog_eav_attribute)

Để trỏ đến lớp cài đặt tốt, mất một cái nhìn tại các tiêu chuẩn Mage_Catalogconfig.xml và thích ứng với nó cho module của bạn:

<resources> 
    <catalog_setup> 
     <setup> 
      <module>Mage_Catalog</module> 
      <class>Mage_Catalog_Model_Resource_Setup</class><!-- that line !--> 
     </setup> 
    </catalog_setup> 
</resources> 

ps: lưu ý rằng phương pháp _prepareValues() được gọi là chỉ khi thêm một thuộc tính ... nếu bạn muốn cập nhật một thuộc tính bạn sẽ cần phải sử dụng tên tùy chọn đầy đủ ("is_visible" và không chỉ "hiển thị") ...

Hack Một sẽ có thêm những thuộc tính này sau đó, nhưng nó không phải là rất đẹp:

// adding atribute : 
// [...] 

//getting the new attribute with full informations 
$eavConfig = Mage::getSingleton('eav/config'); 
$installer->cleanCache(); 
$attribute = $eavConfig->getAttribute('catalog_product', $attributeCode); 
$attribute->addData(array(
    'is_visible' => 1 
)); 
$attribute->save() 
+2

Cảm ơn! Vấn đề đã được giải quyết. – sukkad

+0

Bất kỳ ý tưởng nào về cách đặt is_visible_on_front? Mặc dù tôi đang đặt nó thành 1 trong lời gọi addAttribute ('is_visible_on_front' => 1, tôi không thấy nó bị thay đổi trong DB/admin. – sukkad

-2

Sử dụng 'visible_on_front' => 1, trong addAttribute gọi.

Các vấn đề liên quan