我想更改 Magento 的属性集。我搜索了一下,大家都建议删除该产品并使用新的属性集重新导入它。
我做了同样的事情,但是在导入数据后我看不到产品评论和与产品相关的博客文章。
谁能告诉我在重新导入具有新属性集的产品后是否可以获得产品评论和相关的博客文章。
我想更改 Magento 的属性集。我搜索了一下,大家都建议删除该产品并使用新的属性集重新导入它。
我做了同样的事情,但是在导入数据后我看不到产品评论和与产品相关的博客文章。
谁能告诉我在重新导入具有新属性集的产品后是否可以获得产品评论和相关的博客文章。
一旦设置,您将无法更改产品的属性集。但是可以使用此模块,因此您不必重新导入数据 https://marketplace.magento.com/flagbit-magento-changeattributeset.html
也可以直接在数据库中更改属性集。
eav_attribute_set
catalog_product_entity
当然,以这种方式更改数据时要小心。
做起来很繁琐,有点乱:
或者做我所做的,从 Amasty http://amasty.com/mass-product-actions.html安装这个很棒的扩展- 它使更改变得轻而易举,并提供了更多的时间节省和增强选项。
删除产品后,您将无法获得旧评论。
您无需删除产品。您可以通过编辑和使用来更改属性集。否则创建一个新的属性集并创建新产品。
我使用这个扩展来改变属性集。
我曾经有你上面推荐的扩展,很酷。但前者的功能更多。
是的。我们可以以编程方式更改产品属性集。我更喜欢在目录产品网格中创建批量操作以多选产品,然后为产品选择批量操作。
在 grid.php 中创建 Massaction
$sets = Mage::getResourceModel('eav/entity_attribute_set_collection')
->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId())
->load()
->toOptionHash();
$this->getMassactionBlock()->addItem('changeattributeset', array(
'label'=> Mage::helper('catalog')->__('Change attribute set'),
'url' => $block->getUrl('*/*/changeattributeset', array('_current'=>true)),
'additional' => array(
'visibility' => array(
'name' => 'attribute_set',
'type' => 'select',
'class' => 'required-entry',
'label' => Mage::helper('catalog')->__('Attribute Set'),
'values' => $sets
)
)
));
为所选产品的更改属性集创建控制器操作。
public function changeattributesetAction()
{
$productIds = $this->getRequest()->getParam('product');
$storeId = (int)$this->getRequest()->getParam('store', 0);
if (!is_array($productIds)) {
$this->_getSession()->addError($this->__('Please select product(s)'));
} else {
try {
foreach ($productIds as $productId) {
$product = Mage::getSingleton('catalog/product')
->unsetData()
->setStoreId($storeId)
->load($productId)
->setAttributeSetId($this->getRequest()->getParam('attribute_set'))
->setIsMassupdate(true)
->save();
}
Mage::dispatchEvent('catalog_product_massupdate_after', array('products'=>$productIds));
$this->_getSession()->addSuccess(
$this->__('Total of %d record(s) were successfully updated', count($productIds))
);
}
catch (Exception $e) {
$this->_getSession()->addException($e, $e->getMessage());
}
}
$this->_redirect('adminhtml/catalog_product/index/', array());
}