Magento 1.7 の保存時にいくつかのカスタム配送値属性を更新する拡張機能を作成しました。製品を保存すると、すべて正常に機能し、すべてが更新されます。ただし、ボード全体で送料を変更する必要がある場合に備えて、cronjob で毎晩更新する必要もあります。
すべてが機能しており、属性値を正しく更新していますが、フロントエンドでは構成可能なすべての製品が として表示されていOut of Stock
ます。単純な製品は問題ありません。
管理者に行くと、マスター プロダクトをクリックして、何もせずに保存するだけIn Stock
で、フロントエンドに表示されます。また、インデックスに移動してインデックスを再作成Product Attributes
すると、フロントエンドで在庫ありとして再び表示されます。その場合、cronjob は、各製品を保存するときにインデクサーを更新する必要があると思います。
周りを見回して、次のコードを使用しましたが、製品を更新していないようで、誰かが助けてくれるかどうか疑問に思いました. Mage_Catalog_Model_Product
andの周りでさまざまなバリエーションを試しましTYPE_SAVE
たが、使用するはずのものを見つけることができません!
$updateProduct = Mage::getModel('catalog/product')->load($_product->getId());
$updateProduct->setShippingLabel($shippData['delivery_type']);
$updateProduct->setShippingPrice($shippData['price']);
$updateProduct->setShippingNote($shippData['notes']);
try {
$updateProduct->save();
$updateProduct->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction(
$updateProduct,
Mage_Catalog_Model_Product::ENTITY,
Mage_Index_Model_Event::TYPE_SAVE
);
echo $updateProduct->getId()." Successfully Updated \n";
} catch(Exception $e){
echo $e->getMessage().$updateProduct->getId()."\n";
}
更新 17/5/2013 20:28
コードをいじっていて、この修正が機能しているようです。もしそれがまったく役に立たず、愚かな方法である場合は、私に知らせてください
$updateProduct = Mage::getModel('catalog/product')->load($_product->getId());
$updateProduct->setShippingLabel($shippData['delivery_type']);
$updateProduct->setShippingPrice($shippData['price']);
$updateProduct->setShippingNote($shippData['notes']);
try {
$updateProduct->save();
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product->getId());
$stockItem->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction(
$stockItem,
Mage_CatalogInventory_Model_Stock_Item::ENTITY,
Mage_Index_Model_Event::TYPE_SAVE
);
echo $updateProduct->getId()." Successfully Updated \n";
} catch(Exception $e){
echo $e->getMessage().$updateProduct->getId()."\n";
}