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已经安装,则在运行脚本时不会出现。