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

时间:2012-02-27 08:55:46

标签: magento

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

是否有人设法在模块的设置脚本中创建新产品?

出现了一些问题,例如Mage_Core_Model_App::getStore()正在返回默认存储,因为updateMode设置为true。

4 个答案:

答案 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();

使用此代码了解它的作用。