其实自主导入评论加星属于作弊行为,但没办法,站点建立初期需要这玩意儿。
下面是完整的代码:

  1. function getCSVdata($filename) {
  2.     $row = 1; //第一行开始
  3.     if (($handle = fopen($filename, "r")) !== false) {
  4.         while (($dataSrc = fgetcsv($handle)) !== false) {
  5.             $num = count($dataSrc);
  6.             for ($c = 0; $c < $num; $c++) {//列 column 
  7.                 if ($row === 1) {//第一行作为字段 
  8.                     $dataName[] = $dataSrc[$c]; //字段名称
  9.                 } else {
  10.                     foreach ($dataName as $k => $v) {
  11.                         if ($k == $c) {//对应的字段
  12.                             $data[$v] = $dataSrc[$c];
  13.                         }
  14.                     }
  15.                 }
  16.             }
  17.             if (!empty($data)) {
  18.                 $dataRtn[] = $data;
  19.                 unset($data);
  20.             }
  21.             $row++;
  22.         }
  23.         fclose($handle);
  24.         return $dataRtn;
  25.     }
  26. }
  27.  
  28. $aData = getCSVdata('test.csv');//这里拿到csv里面的内容  此处使用的csv于上一篇文章使用的csv相同
  29. include '../app/Mage.php';//利用magento内部的类来做
  30. Mage::app();//主要为了自动加载需要的文件
  31. foreach ($aData as $csvData) {
  32.     $url = 'http://127.0.0.1/magento/index.php/review/product/post/id/' . rand(1, 10000) . '/';//这是对应产品评论的请求地址,rand是为了防止重复评论给同一个产品,这里假设有10000个产品,可根据自己的需求灵活变通
  33.     $client = new Varien_Http_Client($url);  //利用magento内部的http通讯类
  34.     $client->setMethod(Varien_Http_Client::POST);//设置请求方式为POST
  35.     $client->setParameterPost('nickname', $csvData['nickname']);//设置POST参数
  36.     $client->setParameterPost('detail', $csvData['detail']);
  37.     $client->setParameterPost('title', $csvData['title']);
  38.     $client->setParameterPost('ratings[1]', 5);
  39.     $client->setParameterPost('ratings[2]', 10);
  40.     $client->setParameterPost('ratings[3]', 15);
  41.     $client->setCookie('test');//设置cookie
  42.     $client->setCookieJar(true);
  43.     /** @var $response Zend_Http_Response */
  44.     $response = $client->request();//发送请求
  45.     echo $response;
  46. }

代码中使用的csv文件可参照“PHP读取CSV文件”中的csv建立
以上代码可直接运行,如果需要可根据自己的需求改动。

6 thoughts on “magento批量导入评论加星”

    1. 其实道理很简单的
      第一步 先读取csv
      第二步

      $client = new Varien_Http_Client($url); //利用magento内部的http通讯类
      $client->setMethod(Varien_Http_Client::POST);//设置请求方式为POST

      用这个类发送post请求
      但这个请求发送过去和普通浏览器发送的是一样的
      就相当于批量请求了这个url 发送了大批的数据过去

发表评论

电子邮件地址不会被公开。 必填项已用*标注