5

イベント用のObserver.phpを作成しましたcatalog_product_new_action

<?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ます。

次の解決策が機能します。インベントリデータが正しく設定されている(RS回答を参照):

        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);
        }
4

2 に答える 2

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/をご覧ください。

于 2012-11-08T15:22:25.537 に答える
0

商品オブジェクトのプロパティとして設定されている実際の在庫アイテムオブジェクトを操作する必要があるようです。

在庫アイテムのプロパティのリファレンスについては、Mage_CatalogInventory_Model_Observer::copyInventoryData()[リンク]を参照してください。

于 2012-11-08T14:39:00.313 に答える