我正在创建一个需要一个特殊产品的模块。
是否有人设法在模块的设置脚本中创建新产品?
出现了一些问题,例如Mage_Core_Model_App::getStore()
正在返回默认存储,因为updateMode设置为true。
答案 0 :(得分:3)
我解决了问题
在非对象中调用成员函数getStoreIds() 法师/目录/模型/资源/ Abstract.php在线...
在我创建产品的数据升级脚本的开头添加以下代码:
Mage::app()->getStore(Mage_Core_Model_App::DISTRO_STORE_ID)->setWebsiteId(1);
这是一种解决方法,但我找不到任何其他解决方案。
答案 1 :(得分:2)
我认为它应该适用于数据更新脚本(mysql4-data-upgrade-1.0.0-2.0.0.php)。在数据Mage_Core_Model_Resource_Setup::applyAllDataUpdates()
函数中,更新模式是 - 与正常更新脚本相反 - 未设置为true。更新模式会导致创建产品时出现问题。
答案 2 :(得分:1)
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();
答案 3 :(得分:0)
以下是一段以编程方式创建产品的代码:
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();
使用此代码了解它的作用。