3 votes

Définir l'approbation automatique des commentaires sur les produits dans Magento

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.

3voto

Roman Snitko Points 2653

Vous pouvez essayer cette approche .

MISE À JOUR : le lien n'est plus valide, j'ai donc posté celui de l'archive web.

1voto

Russell Albin Points 51

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();
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X