Magento:以编程方式从属性集中删除属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento:以编程方式从属性集中删除属性相关的知识,希望对你有一定的参考价值。
我需要一个函数或一些代码来从分配给它的集合中删除一个属性。我知道这个函数,分配一个属性:
$setup->addAttributeToSet($entityTypeId, $setId, $groupId, $attributeId, $sortOrder=null)
或删除属性:
$setup->removeAttribute($entityTypeId, $code)
但不应删除该属性。必须再也无法在AttributeSet中找到属性'Default'(组'General')。
我没有找到任何功能:
removeAttributeFromAttributeSet()
或某事像那样
答案
您可以在安装脚本中尝试此代码
<?php
/** @var $this Mage_Eav_Model_Entity_Setup */
$this->startSetup();
$this->deleteTableRow(
'eav/entity_attribute',
'attribute_id',
$this->getAttributeId('catalog_product', 'attribute_code_here'),
'attribute_set_id',
$this->getAttributeSetId('catalog_product', 'Default')
);
$this->endSetup();
另一答案
这是我使用的完整代码,它的工作原理如下:
$installer = $this;
$installer->startSetup();
$attributeType = 'catalog_product';
$attribute_set_name = 'Default';
$attributeCode='my_attribute';
$setId = $installer->getAttributeSetId('catalog_product', $attribute_set_name);
$attributeId=$installer->getAttributeId($attributeType, $attributeCode);
$installer->deleteTableRow('eav/entity_attribute', 'attribute_id', $attributeId, 'attribute_set_id', $setId);
$installer->endSetup();
另一答案
//它将永久删除您的属性。
$Attributes = array('accessories_size','accessories_type','apparel_type','author_artist','bag_luggage_type','bedding_pattern','bed_bath_type','books_music_type','camera_megapixels',
'camera_type','coater','color','colors','cost','decor_type','ebizmarts_mark_visited','electronic_type','featured','fit','format','frame_style','gender','gendered','genre','homeware_style',
'home_decor_type','impressions','is_sold','jewelry_type','length','lens_type','luggage_size','luggage_style','luggage_travel_style','make','manufacturer','material','model','necklace_length',
'occasion','perfector','sample_item_1','sheet_size','shoe_size','shoe_type','size','sleeve_length','style');
$entityType = 'catalog_product';
foreach($Attributes as $index => $attrCode){
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode($entityType,$attrCode); // it return false when attribute not exist.
if($attributeId){
Mage::getModel('catalog/product_attribute_api')->remove($attributeId);
}
}
另一答案
下面将从attributeset中删除属性
<?php
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId = $setup->getEntityTypeId('catalog_product');
$attributeId = $setup->getAttributeId('catalog_product', 'feature'); //feature is attribute code
$attributeSetId = $setup->getAttributeSetId($entityTypeId, 'Default');
$installer->deleteTableRow('eav/entity_attribute', 'attribute_id', $attributeId, 'attribute_set_id', $attributeSetId);
$installer->endSetup();
?>
以上是关于Magento:以编程方式从属性集中删除属性的主要内容,如果未能解决你的问题,请参考以下文章