Magento -Bewertungen - Wann werden sie aggregiert?
-
16-10-2019 - |
Frage
Kann jemand einen Einblick geben, wenn Bewertungen in die gestellt werden? rating_option_vote_aggregated
Tisch? Ich versuche, meine Bewertungen zu filtern, die auf vier Sternen oder höher basieren, und ich wollte die verwenden percent_approved
Spalte für den Beitritt zur Überprüfungstabelle, jedoch sind nicht alle neuesten zugelassenen Bewertungen in der rating_option_vote_aggregated
Tisch.
Müssen wir eine Art Post-Review-Zulassungscode installieren, der aufruft? $review->aggregate()
?
Danke im Voraus!
Lösung
Es gibt keinen magischen Code, der die Überprüfungsdaten für einen Client -Programmierer automatisch aggregiert. Sie müssen diese Methode nach dem Erstellen eines Überprüfungsobjekts manuell aufrufen. Sie können dies am Frontend in der sehen postAction
Methode in
app/code/core/Mage/Review/controllers/ProductController.php
und in verschiedenen Methoden auf dem Backend
app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
Meine Vermutung wäre, dass eines von zwei Dingen passieren würde. Das erste ist, dass Sie einen benutzerdefinierten Code haben, der manuell Bewertungen erstellt und nicht angerufen wird aggregate
korrekt.
Der zweite ist, dass es einen bestimmten Prozentsatz von Personen gibt, die versuchen, ein Produkt zu überprüfen, aber aufgrund der Serverlast oder eines anderen Problems fällt die Anfrage in der Mitte der Mitte des Schreibens der Hälfte des
$review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
->setEntityPkValue($product->getId())
->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
->setStoreId(Mage::app()->getStore()->getId())
->setStores(array(Mage::app()->getStore()->getId()))
->save();
foreach ($rating as $ratingId => $optionId) {
Mage::getModel('rating/rating')
->setRatingId($ratingId)
->setReviewId($review->getId())
->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
->addOptionVote($optionId, $product->getId());
}
wird genannt, aber
$review->aggregate();
ist nicht. Wenn ich mich daran nähern würde, dies zu reparieren, würde ich einen Cron-Job hinzufügen, der eine Liste nicht-aggregierter Bewertungen erstellt und sie dann aggregiert hat.