在Magento 1.7中添加新产品时设置默认产品值

时间:2012-11-08 12:46:46

标签: magento magento-1.7

我为事件catalog_product_new_action

创建了一个Observer.php
<?php
class Starmall_Productobserver_Model_Observer
{

    public function initProduct(Varien_Event_Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();
            $product->setWeight(1);
            $product->setStatus(1);
            $product->setTaxClassId(1);
            $product->setPrice(1);

            $product->setStockData(array(
                    'is_in_stock' => 1,
                    'qty' => 99999
            ));
    }

}

当我添加新产品时,重量,状态,税级和价格已正确设置为我的默认值。 库存数量和库存可用性未设置。

如何在观察者中设置这些股票价值?

注意:点击Add Product按钮后,我正在使用现有的“管理产品”屏幕。

以下解决方案有效。库存数据设置正确(参见R.S.答案):

        public function initProduct(Varien_Event_Observer $observer)
        {
            $product = $observer->getEvent()->getProduct();
            $product->setWeight(1);
            $product->setStatus(1);
            $product->setTaxClassId(1);
            $product->setPrice(1);
            $product->setWebsiteIDs(array(1));

            $stockItem = Mage::getModel('cataloginventory/stock_item');
            $stockItem->assignProduct($product);
            $stockItem->setData('is_in_stock', 1);
            $stockItem->setData('qty', 1);

            $product->setStockItem($stockItem);
        }

2 个答案:

答案 0 :(得分:5)

....

//$product->save();

$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->assignProduct($product);
$stockItem->setData('is_in_stock', 1);
$stockItem->setData('stock_id', 1);
$stockItem->setData('store_id', 1);
$stockItem->setData('manage_stock', 0);
$stockItem->setData('use_config_manage_stock', 0);
$stockItem->setData('min_sale_qty', 0);
$stockItem->setData('use_config_min_sale_qty', 0);
$stockItem->setData('max_sale_qty', 1000);
$stockItem->setData('use_config_max_sale_qty', 0);

//$stockItem->save();

http://blog.magentoconnect.us/creating-magento-products-on-the-fly/

了解详情

答案 1 :(得分:0)

看起来您需要使用在产品对象上设置为属性的实际库存商品对象。

有关库存商品属性的参考,请参阅Mage_CatalogInventory_Model_Observer::copyInventoryData()[link]