Было бы здорово, если бы вы могли опубликовать полную функцию, которую вы пытаетесь отлаживать, или создать дубликаты продуктов и config.xml (где вы пытаетесь вызвать событие).
Ниже код работает у меня в CE 1.9.2.2 без каких-либо проблем. Эта функция выполняет следующие задачи:
- Создает дубликат исходного продукта
- Устанавливает для акции "In Stock", а для Qty - "100" (жестко задано на данный момент)
- Автоматизирует переиндексацию
public function indexAction() //change the function name
{
$productId = $observer->getEvent()->getProduct()->getId();
$productObject = Mage::getModel('catalog/product');
$_product = $productObject->load($productId);
$newProduct = $_product->duplicate();
//new product status is disabled - to view in the frontend you will need to set the status as enabled
$newProduct->setStatus(1);
$newProduct->setName('Duplicate-' . $_product->getName());
$newProduct->setSku('value-' . $productId);
$newProduct->setWebsiteIds($_product->getWebsiteIds());
//set the product stock and qty to display product in the frontend
//while creating duplicate product, it will update the new product to have qty 0 and out of stock
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($newProduct->getId());
if ($stockItem->getId() > 0 && $stockItem->getManageStock())
{
$qty = 100;
$stockItem->setQty($qty);
$stockItem->setIsInStock((int)($qty > 0));
$stockItem->save();
}
$newProduct->getResource()->save($newProduct);
//automate reindexing - to display the product in the frontend
$indexers = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($indexers as $indexer)
{
$indexer->reindexEverything();
}
}
Надеюсь, это поможет.
Счастливое кодирование ...