Lorsqu'un client soumet un avis sur un produit, l'avis doit être automatiquement approuvé. Il n'est pas nécessaire que l'administrateur l'approuve.
Réponses
Trop de publicités?Vous pouvez essayer cette approche .
MISE À JOUR : le lien n'est plus valide, j'ai donc posté celui de l'archive web.
La création d'un nouveau module est la meilleure approche, elle est simple et facile à réaliser. Étape 1 : créer un fichier de déclaration de module dans app/etc/modules appelé Dpc_Review.xml
<?xml version="1.0"?>
<config>
<modules>
<Dpc_Review>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Review/>
</depends>
</Dpc_Review>
</modules>
</config>
Étape 2 : Dans app/etc/local, créez un dossier appelé Dpc. Etape 3 : Dans app/etc/local/Dpc/ créer un nouveau dossier Review Etape 3 : dans app/etc/local/Dpc/Review créer 3 dossiers controllers, etc et Helper Etape 4 : dans app/etc/local/Dpc/Review/etc/ créer un fichier appelé config.xml
<?xml version="1.0"?>
<config>
<modules>
<Dpc_Review>
<version>0.0.1</version>
</Dpc_Review>
</modules>
<frontend>
<routers>
<review>
<args>
<modules>
<Dpc_Review before="Mage_Review">Dpc_Review</Dpc_Review>
</modules>
</args>
</review>
</routers>
</frontend>
<global>
<helpers>
<dpc_review>
<class>Dpc_Review_Helper</class>
</dpc_review>
<review>
<rewrite>
<data>Dpc_Review_Helper_Data</data>
</rewrite>
</review>
</helpers>
</global>
</config>
Étape 5 : dans app/code/local/Dpc/Review/Helper, créez un fichier appelé Data.php.
<?php
/**
* Class Dpc_Review_Helper_Data
*/
class Dpc_Review_Helper_Data extends Mage_Review_Helper_Data
{
}
Étape 6 : dans app/code/local/Dpc/Review/controllers/ créer un fichier appelé ProductController.php
<?php
require_once 'Mage' . DS . 'Review' . DS . 'controllers' . DS . 'ProductController.php';
/**
* Class Dpc_Review_ProductController
*/
class Dpc_Review_ProductController extends Mage_Review_ProductController
{
/**
* Submit new review action
*
*/
public function postAction()
{
if (!$this->_validateFormKey()) {
// returns to the product item page
$this->_redirectReferer();
return;
}
if ($data = Mage::getSingleton('review/session')->getFormData(true)) {
$rating = array();
if (isset($data['ratings']) && is_array($data['ratings'])) {
$rating = $data['ratings'];
}
} else {
$data = $this->getRequest()->getPost();
$rating = $this->getRequest()->getParam('ratings', array());
}
if (($product = $this->_initProduct()) && !empty($data)) {
$session = Mage::getSingleton('core/session');
/* @var $session Mage_Core_Model_Session */
$review = Mage::getModel('review/review')->setData($data);
/* @var $review Mage_Review_Model_Review */
$validate = $review->validate();
if ($validate === true) {
try {
/****** This is the spot where we are now setting the value to STATUS_APPROVED *******/
$review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
->setEntityPkValue($product->getId())
->setStatusId(Mage_Review_Model_Review::STATUS_APPROVED)
->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());
}
$review->aggregate();
$session->addSuccess($this->__('Your review has been accepted'));
}
catch (Exception $e) {
$session->setFormData($data);
$session->addError($this->__('Unable to post the review.'));
}
}
else {
$session->setFormData($data);
if (is_array($validate)) {
foreach ($validate as $errorMessage) {
$session->addError($errorMessage);
}
}
else {
$session->addError($this->__('Unable to post the review.'));
}
}
}
// this is my own custom need, feel free to do whatever you want here
$product_url = $product->getUrlPath();
if ($product_url) {
$this->_redirect($product_url);
return;
}
$this->_redirectReferer();
}
}