说明:在网站前台添加评论 review_store 表 要添加2条数据。对比发现 自己的代码 添加的 store_id自动 为0(正常应该有2条,还有一条 store_id为1的)
这里的 1和0 ,分表Magento前台和后台。
所以我 指定了 $StoreId =1; 默认 storeid 是通过
Mage::app()->getStore()->getId() 获取的。
在 \app\code\core\Mage\Review\controllers\ProductController.php
postAction() 方法是处理 前台用户的评论的。
在这个方法里 Mage::app()->getStore()->getId() 获取的值为 1。
所以,我这里 指定了 $storeid = 1。
具体实现代码如下:
这个是基础核心代码,批量添加评论功能或者去其他网站抓取同sku产品然后写入评论等功能。可在此基础上扩展。<?php define('MAGENTO', realpath(dirname(__FILE__))); require_once MAGENTO . '/app/Mage.php'; umask(0); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //数据 $data = array( "form_key" => "AGPcNKVldb5KkWBA", "ratings" => array(3=>'15',2=>'10',1=>'5'), "nickname" => "jack", "title" => "HB82429", "detail" => "good" ); $rating = array(3=>'15',2=>'10',1=>'5'); //产品模型对象 $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$data['title']); //StoreId手动设置 $StoreId = '1'; //review模型 $review = Mage::getModel('review/review')->setData($data); $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($StoreId) ->setStores(array($StoreId)) ->save(); //循环写入rating表 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();//集合处理