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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top