更改Magento产品的属性集,

gab6jxml  于 2022-11-12  发布在  其他
关注(0)|答案(6)|浏览(151)

我想更改Magento的属性设置,我搜索了一下,大家都建议删除产品,重新导入新的属性设置。
我做了同样的事情,但是在导入数据后,我看不到产品评论和与产品相关的博客文章。
有谁能告诉我,在重新导入具有新属性集的产品后,是否有可能获得产品评论和相关的博客文章。

tyu7yeag

tyu7yeag1#

一旦设置,您就不能更改产品的属性集。但可以使用此模块,这样您就不必重新导入数据https://marketplace.magento.com/flagbit-magento-changeattributeset.html

zrfyljdw

zrfyljdw2#

也可以直接在数据库中更改属性集。

  • 在表eav_attribute_set中查找属性集合ID
  • 更改catalog_product_entity中的属性集合ID

当然,以这种方式更改数据时要小心。

kq0g1dla

kq0g1dla3#

这件事做起来既费工又有点乱:

  • 请确保设置了新属性集
  • 导出要更改的产品
  • 删除您在站点上更改的产品
  • 更改已下载文件的属性集
  • 再次导入更改的文件
  • 打开每个更改的产品,设置其属性值,保存

或者做我所做的,安装这个伟大的扩展从Amasty http://amasty.com/mass-product-actions.html-它使改变变得轻而易举,并给出了更多的时间节省和增强选项。

kse8i1jr

kse8i1jr4#

一旦你删除了产品,你不能得到旧的审查。
您不需要删除产品,您可以通过编辑和使用来改变属性集,或者创建一个新的属性集并创建新的产品。

0s0u357o

0s0u357o5#

是的。我们可以通过编程方式更改产品属性集。我更喜欢在目录产品网格中创建massaction以多选产品,然后为产品选择massaction。
在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());
}
vshtjzan

vshtjzan6#

您可以向数据补丁应用函数中添加如下内容:

public function apply(): self
{
    $this->moduleDataSetup->getConnection()->startSetup();
    /**@var EavSetup $eavSetup */
    $eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);

    $eavSetup->addAttributeToSet(
        Product::ENTITY,
        'Default',
        'General',
        CustomAttributesInterface::ATTRIBUTE_CODE_MANUFACTURER
    );

    $this->moduleDataSetup->getConnection()->endSetup();

    return $this;
}

这会将制造商产品属性更改为默认属性集。(默认情况下,此属性没有属性集。)希望它能有所帮助:)

相关问题