Magento:如何在安装脚本期间创建产品?

Magento:如何在安装脚本期间创建产品?,magento,Magento,我正在创建一个模块,它需要一个特殊的产品 是否有人在模块的安装脚本期间创建了新产品 出现了几个问题,例如,当updateMode设置为true时,Mage_Core_Model_App::getStore返回默认存储。以下是一段代码,用于以编程方式创建产品: require_once 'app/Mage.php'; Varien_Profiler::enable(); Mage::setIsDeveloperMode(true); ini_set('display_errors', 1);

我正在创建一个模块,它需要一个特殊的产品

是否有人在模块的安装脚本期间创建了新产品


出现了几个问题,例如,当updateMode设置为true时,Mage_Core_Model_App::getStore返回默认存储。

以下是一段代码,用于以编程方式创建产品:

require_once 'app/Mage.php';

Varien_Profiler::enable();
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);

umask(0);
Mage::app();

$product = new Mage_Catalog_Model_Product();

// Build the product
$product->setSku('some-sku-value-here');
$product->setAttributeSetId('some_int_value_of_some_attribute');
$product->setTypeId('simple');
$product->setName('Some cool product name');
$product->setCategoryIds(array(7)); # some cat id's, my is 7
$product->setWebsiteIDs(array(1)); # Website id, my is 1 (default frontend)
$product->setDescription('Full description here');
$product->setShortDescription('Short description here');
$product->setPrice(39.99); # Set some price   

# Custom created and assigned attributes
$product->setHeight('my_custom_attribute1_val');
$product->setWidth('my_custom_attribute2_val');
$product->setDepth('my_custom_attribute3_val');
$product->setType('my_custom_attribute4_val');

//Default Magento attribute
$product->setWeight(4.0000);

$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$product->setStatus(1);
$product->setTaxClassId(0); # My default tax class
$product->setStockData(array(
    'is_in_stock' => 1,
    'qty' => 99999
));

Mage::helper('core')->p($product->getData());
然后使用$product->save保存


使用此代码可以了解它的功能。

我认为它应该与数据更新脚本mysql4-data-upgrade-1.0.0-2.0.0.php配合使用。在data Mage_Core_Model_Resource_Setup::applyAllDataUpdates函数中,与正常更新脚本不同,更新模式未设置为true。更新模式导致创建产品时出现问题。

我修复了该问题

Try the below script for creating a product using SQL setup resource file

// Create Default Products
$product = Mage::getModel('catalog/product');
$data = array(
 'attribute_set_id'  => $attributeSetId,
 'type_id'      =>  'simple',
 'store_id'   => 0,
 'category_ids' => array($category->getId()),
 'website_ids'  => array(0),
 'sku'    => 'sample-product',
 'name'    => 'Sample Product',
 'description'  => 'Sample Product',
 'short_description' => 'Sample Product',
 'status'   => 1,
 'visibility'  => 4,
 'weight'   => 1,
 'price'    => 100.00,
 'setcustomdefault' => 1,
 'tax_class_id'  => 0,
 'rearimage' => 'rear.png',
 'frontimage' => 'front.png',
 'defaultimage' => 'thumb.jpg',
 'stock_data'  => array('is_in_stock' => 1,'qty' => 20),
 'created_at' =>    strtotime('now')
);
$product->addData($data)
    ->setInitialSetupFlag(true)
    ->save();
对中的非对象调用成员函数GetStoreId Mage/Catalog/Model/Resource/Abstract.php联机

通过在我创建产品的数据升级脚本的开头添加以下代码:

Mage::app()->getStore(Mage_Core_Model_App::DISTRO_STORE_ID)->setWebsiteId(1);

这是一个解决方案,但我找不到任何其他解决方案。

我使用了类似的代码,但在安装脚本中不起作用!你真的在使用数据更新脚本吗?不是正常的吗?是的,我使用数据升级脚本,问题只在Magento安装期间出现,如果Magento已经安装,则在运行脚本时不会出现。