Saya menggunakan versi Magento 1.8. Saya telah menulis pengamat yang harus dijalankan ketika admin menyimpan ulasan produk dengan status "Disetujui". Dan saya telah membuat atribut peringkat untuk setiap produk dengan multiselect dan harus secara otomatis memperbarui setiap kali ketika admin menyimpan ulasan untuk suatu produk.
Catatan: Ulasan ada di Laporan / Ulasan / Ulasan Produk.
etc / Config.xml Code:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
mode / Kode Pengamat
public function ratingsUpdate(Varien_Event_Observer $observer)
{
$object = $observer->getEvent()->getObject();
$statusId = $object->getStatusId();
if($statusId == 1) {
$common = Mage::getSingleton('catalog/common');
$attribute = $common->getAttribute('ratings');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$productId = $object->getEntityPkValue();
$product = Mage::getModel('catalog/product')->load($productId);
$avgRating = Mage::getBlockSingleton('efkreports/product_allReviews')->getAvgReview($product->getId());
Mage::log($avgRating);
Mage::log($attribute->getOptionId(round($avgRating)));
$product->setRatings($attribute->getOptionId(round($avgRating)));
//$product->setRatings(round($avgRating));
$product->save();
}
}
Ketika admin berusaha menyimpan ulasan untuk suatu produk, kode pengamat di atas sedang dijalankan dan ulasan diperbarui dengan benar, tetapi produk mendapatkan nilai ulasan sebelumnya daripada ulasan terbaru yang diperbarui.
Saya menulis <review_save_after>
tetapi mendapatkan nilai sebelumnya. Apa yang disebut dengan acara setelah "Simpan Ulasan" Apakah itu benar atau tidak?
Tolong beritahu saya di mana saya salah.
Terima kasih sebelumnya.
sumber