1. 程式人生 > >Magento 用程式碼批量 新增產品的評論review(通過SKU)

Magento 用程式碼批量 新增產品的評論review(通過SKU)

說明:在網站前臺新增評論 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。

具體實現程式碼如下:

<?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();//集合處理
這個是基礎核心程式碼,批量新增評論功能或者去其他網站抓取同sku產品然後寫入評論等功能。可在此基礎上擴充套件。