magento批量导入评论

本文详细介绍了如何在外贸网站后台批量导入评论和评分功能,包括配置、控制器、模板实现,以及上传CSV文件格式的具体处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个外贸网站时需要一些评论来撑下门面,后台一个个加又有些麻烦,咱还是自己动手写一个,目标是能批量导入,支持ratings.

adminhtml部分

<!-- lang: xml -->
<?xml version="1.0" encoding="UTF-8"?>
<config>
	<menu>
		<catalog>
			<children>
				<reviews_ratings>
					<children>
						<import translate="title" module="catalog">
							<title>Import Reviews</title>
							<action>adminhtml/catalog_product_review/import</action>
						</import>
					</children>
				</reviews_ratings>
			</children>
		</catalog>
	</menu>
</config>

入口我放在了Catalog->Reviews and Ratings下面,和现有的两个同级

后台的catalog.xml文件新加

<!-- lang: xml -->
<adminhtml_catalog_product_review_import>
    <reference name="content">
		<block type="adminhtml/template" name="review_import" template="review/import.phtml" />
	</reference>
</adminhtml_catalog_product_review_import>

控制器部分

<!-- lang: php -->
require_once 'Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php';

class SH_Catalog_Adminhtml_Catalog_Product_ReviewController extends Mage_Adminhtml_Catalog_Product_ReviewController
{
	public function exportCsvAction()
	{
		$fileName = 'reviews.csv';
		$grid = $this->getLayout()->createBlock('adminhtml/review_grid');
		$this->_prepareDownloadResponse($fileName, $grid->getCsvFile());
	}
	
	public function importAction()
	{
		$this->loadLayout();
		$this->renderLayout();
	}
	
	public function importPostAction()
	{
		$filePath = Mage::getConfig()->getVarDir('review/import');
		try {
			$uploader = new Varien_File_Uploader('file');
			$uploader->save($filePath);
			if($uploader->getUploadedFileName()){
				$csv = new Varien_File_Csv();
				$file = $filePath.DS.$uploader->getUploadedFileName();
				if(!file_exists($file) || !is_file($file)){
					$this->_getSession()->addError('请上传csv格式文件');
					$this->_redirect('*/*/import');
					return;
				}
		
				$extension = pathinfo($file, PATHINFO_EXTENSION);
		
				if($extension != 'csv')
				{
					$this->_getSession()->addError('请上传csv格式文件');
					$this->_redirect('*/*/import');
					return;
				}
		
				$csv->setLineLength(1024);
				$data = $csv->getData($file);
				array_shift($data);
				
				foreach ($data as $line) {
					$review = Mage::getModel('review/review');
					
					$review->setEntityPkValue($line[1]);
					$review->setNickname($line[2]);
					$review->setTitle($line[3]);
					$review->setDetail($line[4]);
					
					$review->setEntityId(1);
					$review->setStatusId(Mage_Review_Model_Review::STATUS_PENDING);
					$review->setStoreId($line[0]);
					$review->setStores(array($line[0]));
					$review->save();
					
					$rating = array(1=>$line[5],2=>$line[6]+5,3=>$line[7]+10);
					foreach ($rating as $ratingId => $optionId) {
						Mage::getModel('rating/rating')
							->setRatingId($ratingId)
							->setReviewId($review->getId())
							->addOptionVote($optionId, $line[1]);
					}
					
					$review->aggregate();
				}
		
				$this->_getSession()->addSuccess('评论批量导入成功');
				$this->_redirect('*/*/index');
				return;
			}
		} catch (Exception $e) {
			$this->_getSession()->addException($e, 'An error occurred while saving the data.');
		}
	}
	
}

参考了下前台评论的处理流程,这里对ratings的处理我偷了点懒,为了调用rating模型的addOptionVote()方法,我通过$rating = array(1=>$line[5],2=>$line[6]+5,3=>$line[7]+10);,将上传时的值简单的转换成option id,目前看来这个关系是固定的。

review/import.phtml文件,上传的表单页面模板,在上面catalog.xml中指定的

<!-- lang: php -->
<div class="content-header">
    <h3>Select review csv file and import</h3>
	<p class="form-buttons">
		<button onclick="editForm.submit()" class="scalable save" type="button">
			<span>Import</span>
		</button>
	</p>
</div>

<div class="entry-edit">
	<form id="edit_form" name="edit_form" method="post"
		action="<?php echo $this->getUrl('*/*/importPost')?>"
		enctype="multipart/form-data">
		<div>
			<input type="hidden" value="<?php echo $this->getFormKey() ?>" name="form_key">
		</div>
		<fieldset id="my-fieldset">
			<table cellspacing="0" class="form-list">
				<tr>
					<td class="label" style="width: 60px;">选择文件<span class="required">*</span></td>
					<td class="value"><input id="review_uploadfile" name="file" value="" title="file" type="file" class="input-file"></td>
				</tr>
			</table>
		</fieldset>

		<p>亲,请上传以下格式的csv文件,第一行为表头上传时将被去掉,状态自动为pending,时间为上传时的系统时间</p>
		<style type="text/css">
		th,td {
			padding: 3px 5px;
		}
		</style>
		<table border="0" cellpadding="0" cellspacing="1" bgcolor="#d6d6d6">
			<tr>
				<th scope="col" bgcolor="#FFFFFF">Store id</th>
				<th scope="col" bgcolor="#FFFFFF">Product_id</th>
				<th scope="col" bgcolor="#FFFFFF">Nickname</th>
				<th scope="col" bgcolor="#FFFFFF">Title</th>
				<th scope="col" bgcolor="#FFFFFF">Detail</th>
				<th scope="col" bgcolor="#FFFFFF">Quality</th>
				<th scope="col" bgcolor="#FFFFFF">Value</th>
				<th scope="col" bgcolor="#FFFFFF">Price</th>
			</tr>
			<tr>
				<td bgcolor="#FFFFFF">1</td>
				<td bgcolor="#FFFFFF">167</td>
				<td bgcolor="#FFFFFF">John Doe</td>
				<td bgcolor="#FFFFFF">Review title</td>
				<td bgcolor="#FFFFFF">Review details description</td>
				<td bgcolor="#FFFFFF">5</td>
				<td bgcolor="#FFFFFF">5</td>
				<td bgcolor="#FFFFFF">5</td>
			</tr>
			<tr>
				<td bgcolor="#FFFFFF">1</td>
				<td bgcolor="#FFFFFF">167</td>
				<td bgcolor="#FFFFFF">John Doe</td>
				<td bgcolor="#FFFFFF">Review title</td>
				<td bgcolor="#FFFFFF">Review details description</td>
				<td bgcolor="#FFFFFF">5</td>
				<td bgcolor="#FFFFFF">5</td>
				<td bgcolor="#FFFFFF">5</td>
			</tr>
		</table>
	</form>
</div>

<script type="text/javascript">
    editForm = new varienForm('edit_form', '');
</script>

上传的csv文件如下

<table> <tr> <td>Store id</td> <td>Product_id</td> <td>Nickname</td> <td>Title</td> <td>Detail</td> <td>Quality</td> <td>Value</td> <td>Price</td> </tr> <tr> <td>1</td> <td>167</td> <td>John Doe</td> <td>Review title</td> <td>Review details description</td> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>1</td> <td>167</td> <td>John Doe</td> <td>Review title</td> <td>Review details description</td> <td>1</td> <td>2</td> <td>3</td> </tr> </table>

来上两张效果图,有没有很高端大气 imageimage

转载于:https://my.oschina.net/pulading1988/blog/272636

Magento Reminder 2 Extension Review为您的商店提供了一个很好的解决方案,可以提高转化率并促进销售。 Magento Reminder 2 Extension Review为您的商店提供了一个很好的解决方案,可以提高转化率并促进销售。 通过启用自动发布到已从商店购买产品的客户的功能,您可以节省时间并从他们那里获得更多评论。 您获得的评论越多,商店越值得信赖,客户决定从商店购买什么就越重要。 ---如何购买和阅读更多扩展名https://www.mageplaza.com/magento-2-review-reminder/ ---审阅提醒如何扩展工作Magento 2审阅提醒可以自动通知已购买的客户商店中的产品。 提醒受规则和规则条件的控制。 因此,对于客户群,商店所有者可以使用商店和客户视图。 对于产品术语,有各种类型的产品,购物车条件和产品属性条件。 例如,可以指定一个针对主要商店视图的规则,并且一般组中的客户在两周前购买了新产品。 这将有助于获得新产品的评论。 如果客户留下了评论,则不会发送电子邮件以节省麻烦。 最终,越来越多的客户被认为更加活跃和值得信赖。 ---使用评论提醒的好处***建立信任获得更多评论有助于在商店和品牌中建立新的客户信任***改进SEO评论有助于建立搜索引擎的页面权重,提高SEO ***节省时间一旦建立,评论评论会自动发送---功能亮点*灵活的电子邮件链配置*预制的电子邮件模板*轻松个性化电子邮件*支持Google Analytics(分析)UTM *电子邮件日志*报告:已发送电子邮件,错误,再次发送,预览*与SMTP兼容-精确的定位屏幕商店视图,客户组,购物车和产品属性条件可用于通过单独的电子邮件吸引客户。 -安排电子邮件发送具有任何便利延迟的电子邮件提醒-连续提示如果设置了等级,请确保自动取消连续的提醒以联系客户-丰富的文本丰富的电子邮件布局,并借助WYSIWYG编辑器进行查找。 不需要HMTL知识-邮件字母跟踪所有已发送和计划的电子邮件,并在需要时采取措施-大量操作屏幕随时发送,取消或删除邮件日志中的多封电子邮件-可配置的电子邮件链灵活性提醒扩展,用于管理员存储灵活的电子邮件字符串配置。 时间模板,特定的发件人和电子邮件可以轻松地放置在后端。 电子邮件日志--magento 2电子邮件提醒提醒存储和跟踪所有已发送和计划发送的电子邮件,并在需要时采取措施。 存储管理员可以删除电子邮件,通过电子邮件发送电子邮件或预览电子邮件-报告–使用此功能,在线商店可以跟踪指标,例如已发送的电子邮件和错误。 可以显示特定时间段的报告。 -Google Analytics(分析)支持Magento 2复查google Analytics(分析)提醒与Google Analytics(分析)集成后,此功能可帮助管理员跟踪和识别购物者在何处获得指向产品页面的链接。 其他功能个性化电子邮件-电子邮件提醒显示为个人电子邮件-删除记录批量删除所有记录的审阅电子邮件。 -与SMTP评论兼容提醒实用程序与SMTP完美配合--Google Analytics(分析)检测点击了产品评论的链接的位置–跟踪电子邮件跟踪带有电子邮件日志的电子邮件传递–SKU商店管理员可以选择需要的特定项目需要评审 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值