Ich verwende die Magento 1.8-Version. Ich habe einen Beobachter geschrieben, der ausgeführt werden muss, wenn der Administrator eine Produktbewertung mit dem Status "Genehmigt" speichert. Und ich habe ein Bewertungsattribut für jedes Produkt mit Multiselect erstellt und es sollte jedes Mal automatisch aktualisiert werden, wenn der Administrator die Bewertung für ein Produkt speichert.
Hinweis: Bewertungen finden Sie unter Berichte / Bewertungen / Produktbewertungen.
etc / Config.xml Code:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
Modus / Beobachtercode
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();
}
}
Wenn der Administrator versucht, die Bewertung für ein Produkt zu speichern, wird der obige Beobachtercode ausgeführt und die Überprüfung wird korrekt aktualisiert, aber das Produkt erhält eher den vorherigen Überprüfungswert als die letzte aktualisierte Überprüfung.
Ich schrieb, <review_save_after>
aber es bekam vorherigen Wert. Wie heißt das Ereignis nach "Bewertung speichern" ? Ist das richtig oder nicht?
Bitte sag mir, wo ich falsch liege.
Danke im Voraus.
quelle