Comment ajouter critique sur ce produit programme
-
16-10-2019 - |
Question
Je veux ajouter des commentaires produits programatically avec des champs personnalisés définis sur mon code ci-dessous
$review = Mage::getModel('review/review')
->setEntityPkValue(intval($pressquote->product_id)) //product id
->setStatusId(intval($pressquote->status))
->setDetail($pressquote->text)
->setTitle('')
->setEntityId(1)
->setStatusId(intval($pressquote->status)) //approved
->setCustomerId(null) //null is for administrator
->setNickname($pressquote->source)
->setLink($pressquote->link) //custom field
->setLinktext($pressquote->linktext) //custom field
->setYear($pressquote->year) //custom field
->setStoreId(1)
->setStores(array('base'))
->save();
mais il ne fonctionne pas pour moi .. J'ai vérifié mon code et il arrête sur save()
. Qu'est ce qui ne s'est pas bien passé?
J'ai essayé de supprimer déjà les champs personnalisés, mais rien ne se passe
La solution
// Invoque l'environnement Magento
require_once 'app/Mage.php';
Mage::app();
// Configurez votre propre boucle à passer par les commentaires du panier source.
// Logic pour rechercher le client qui a déjà été migré dans magento. // Vous avez donc $ _customer tenant un Mage_Customer_Model_Customer
// IMPORTANT: Mettre en place la session client. // cotation de l'indice / option vérifie les ressources de modèle de la session du client pour obtenir le numéro de client.
$_session = Mage::getSingleton('customer/session')->setCustomer($_customer)->setCustomerAsLoggedIn($_customer);
// Ajouter la revue
$_review = Mage::getModel('review/review');
->setEntityPkValue($_product->getId())
->setStatusId($sc_to_mage_review_status[$row_source_review['Status']])
->setTitle($row_source_review['Title'])
->setDetail($row_source_review['Review'])
->setEntityId(1)
->setStoreId($store)
->setStores(array($store))
->setCustomerId($_customer->getId())
->setNickname($_customer->getFirstname())
->save();
// Carte votre rating_id à votre option_id avec un tableau ou quelque chose
$rating_options = array(
1 => array(1,2,3,4,5), // <== Look at your database table `rating_option` for these vals
2 => array(6,7,8,9,10),
3 => array(11,12,13,14,15)
);
// maintenant enregistrer les notes
foreach($rating_options as $rating_id => $option_ids):
try {
$_rating = Mage::getModel('rating/rating')
->setRatingId($rating_id)
->setReviewId($_review->getId())
->addOptionVote($option_ids[$rating_value-1],$_product->getId());
} catch (Exception $e) {
die($e->getMessage());
}
endforeach;
Autres conseils
$review = Mage::getModel('review/review');
$review->setEntityPkValue(147);//product id
$review->setStatusId(1); // approved
$review->setTitle("title");
$review->setDetail("detail");
$review->setEntityId(1);
$review->setStoreId(Mage::app()->getStore()->getId());
$review->setCustomerId(273);//null is for administrator
$review->setNickname("Me");
$review->setReviewId($review->getId());
$review->setStores(array(Mage::app()->getStore()->getId()));
$review->save();
$review->aggregate();
Référence ::