`
kirenenko04
  • 浏览: 152039 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Magento Ajax Rating Star

 
阅读更多

  1.in product view phtml, use fancy box to add a click for rating star (fancy ajax)

 

 <?php echo $this->getReviewsSummaryHtml($_product, 'star_ajax', true)?>

 

2. rewrite getReviewsSummaryHtml for choose ajax star phtml in config.xml:

   

<global>
    <blocks>
	  <myreview>
		<class>Bysoft_Myreview_Block</class>
	  </myreview>
	  <review>
		<rewrite>
		    <helper>Bysoft_Myreview_Block_Helper</helper>
		</rewrite>
	</review>
    </blocks>

 

3.write the block file:

    

<?php
class Bysoft_Myreview_Block_Helper extends Mage_Review_Block_Helper
{
	protected $_availableTemplates = array(
			'default' => 'review/helper/summary.phtml',
			'short'   => 'review/helper/summary_short.phtml',
			'star' => 'review/helper/summary_star.phtml',
			'star_ajax' => 'review/helper/summary_star_ajax.phtml',
	);
	
}

 4. write the summary_star_ajax.phtml file:

<?php if ($this->getReviewsCount()): ?>
    <div class="ratings">
        <?php if ($this->getRatingSummary()):?>
            <div class="rating-box">
                <div id="rating-<?php echo $this->getProduct()->getId();?>" class="rating" style="width:<?php echo $this->getRatingSummary() ?>%"             
                href="<?php echo $this->getUrl('review/product/list/id/'. $this->getProduct()->getId());?>"
                ><?php echo $this->getRatingSummary() ?></div>
            </div>
        <?php endif;?>
    </div>
<?php elseif ($this->getDisplayIfEmpty()): ?>
    <div class="rating-box">
                <div class="rating" style="width:0%"><?php echo '0'?></div>
            </div>
<?php endif; ?>

 5. add fancy jquery on view.phtml

	//fancy box for rating ajax
	$("#rating-<?php echo $_product->getId();?>").fancybox({
		ajax : {
		    type	: "POST",
		}
	});

 6. action for ajax post rating form config.xml:

<frontend>
    <routers>
        <review>
            <args>
                <modules>
                    <Bysoft_Myreview before="Mage_Review">Bysoft_Myreview</Bysoft_Myreview>
                </modules>
            </args>
        </review>
    </routers>
  </frontend>
</config> 

 

7. controller file for rewrite post review function

<?php 
require_once Mage::getModuleDir('controllers', 'Mage_Review').DS.'ProductController.php';
class Bysoft_Myreview_ProductController extends Mage_Review_ProductController {
	public function postAction()
	{	
		$data   = $this->getRequest()->getPost();		
		//$rating = array();
		$rating[$this->getRequest()->getParam('ratingId')]=$this->getRequest()->getParam('optionId');	
		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 {
					$review->setEntityId(
							$review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE)
			         )
					->setEntityPkValue($product->getId())
					->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
					//直接通过验证
					//->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();
					echo json_encode(array('status'=>1,'msg'=>$this->__('Your rating has been save, wait for approvement.')));
					return;
				}
				catch (Exception $e) {
					$session->setFormData($data);
					$session->addError($this->__('Unable to post the review.'));
					echo json_encode(array('status'=>2,'msg'=>$e->getMessage()));
					return;
				}
			}
			else {
				$session->setFormData($data);
				if (is_array($validate)) {
					foreach ($validate as $errorMessage) {
						echo json_encode(array('status'=>3,'msg'=>$errorMessage));
						return;
					}
				}
				else {
					echo json_encode(array('status'=>4,'msg'=>$this->__('Unable to post the review.')));
				}
			}
		}
	
		if ($redirectUrl = Mage::getSingleton('review/session')->getRedirectUrl(true)) {
			$this->_redirectUrl($redirectUrl);
			return;
		}
		$this->_redirectReferer();
	}
}
?>

 

分享到:
评论

相关推荐

    magento ajax购物车

    "Magento Ajax购物车"是指利用Ajax技术实现的无刷新购物车更新,使得用户在添加、修改或删除商品时无需跳转页面,提供更加流畅的购物体验。 一、Magento购物车的基本原理 购物车是电商网站的核心部分,Magento的...

    magento ajax search

    Magento AJAX 搜索是一种在 Magento 商城中实现的高级搜索功能,它通过利用 AJAX(异步JavaScript和XML)技术,提供用户友好的实时搜索体验。在传统的搜索方式中,用户输入查询后,页面需要完全刷新才能显示结果。而...

    Ajax-magento2-ajax-cart-quick.zip

    Ajax-magento2-ajax-cart-quick.zip,magento 2 ajax购物车扩展插件提供舒适的购物体验。客户可以很容易地选择可配置的选项并在弹出窗口中编辑项目,而不会浪费重新加载页面的时间。,ajax代表异步javascript和xml。它...

    Ajax-magento2-ajax-layered-navigation.zip

    Ajax-magento2-ajax-layered-navigation.zip,ajax分层导航magento 2提供了一个过滤器列表,帮助您的客户以最短的方式搜索和获得他们最喜欢的产品。这个扩展应用了现代ajax技术来增强过滤系统,以提高用户对页面上每...

    Ajax-Magento-ajax-add-to-cart.zip

    Ajax-Magento-ajax-add-to-cart.zip,[模块magento 1]magento ajax添加到购物车-ajoter vos produits au panier en ajax/感谢ajax将您的产品添加到购物车,ajax代表异步javascript和xml。它是多种web技术的集合,包括...

    Ajax-magento2-catalog-infinite-scroll.zip

    Ajax-magento2-catalog-infinite-scroll.zip,免费的Magento 2扩展,为目录添加无限滚动功能(通过AJAX实现)编码教程,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。...

    Ajax-magento2-module-ajax.zip

    Ajax-magento2-module-ajax.zip,用于ajax请求的magento 2模块,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页...

    Ajax-magento2-ajax-cart.zip

    Ajax-magento2-ajax-cart.zip,ajax add to cart for extension magento 2提供了通过ajax弹出窗口将产品添加到购物车的主要功能。它通过允许客户从产品列表页面将任何产品类型添加到购物车,显著改善了用户体验。,...

    magento 购物车预览

    前端通过AJAX请求向服务器发送请求,获取购物车数据;后端则处理请求,返回购物车信息,前端再根据这些信息更新购物车界面。整个过程中,涉及到的数据主要包括商品ID、数量、价格、图片等,这些数据在数据库中被存储...

    magento 新版ajax购物车插件

    在这个"magento新版ajax购物车插件"中,我们主要关注的是如何利用Ajax技术改进Magento购物车的用户体验。 首先,Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下更新部分网页的技术。...

    magento-quick-view-ajax:快速查看 Magento 的 AJAX 窗口

    Magento 快速查看 Ajax 加载程序 “Quick View Ajax Loader”是 Magento 在线商店中产品列表页面的扩展。 让您的客户无需离开类别页面即可查看您商店中产品的详细信息。 兼容 Magento 1.4、1.4.1.1、1.5、1.6、1.7...

    magento数据结构分析

    4. **REVIEW**和**RATING**:用于管理产品评论和评分,对于构建消费者信任和促进销售具有重要作用。 5. **CATALOGINDEX**和**CATALOGQUERY**:这两个表分别用于目录索引和查询,提高了产品搜索和浏览的效率。 6. *...

    magento快速复制网站_magento_magento快速复制站_

    在电商领域,经常会有需求将一个已经建立并运行良好的Magento站点快速复制到另一个服务器,用于测试、备份或者创建一个新的独立站点。这个过程涉及到数据库的备份与还原、文件系统的复制以及配置的调整等多个步骤。 ...

    Athlete Magento免费模板

    演示地址:http://olegnax.com/product/athlete-responsive-magento-theme/livepreview/ Athlete Magento主题,兼容...黑白2个版本,AJAX加入购物车,快速查看,高级幻灯片,博客,提供快速安装包演示数据和说明文档。

    Magento深入理解Magento

    ### Magento深入理解——强大配置系统解析 #### 一、引言 Magento是一款极其灵活且功能丰富的电子商务平台,其核心竞争力之一在于其强大的配置系统。这一系统不仅为开发者提供了极高的定制化能力,还确保了平台的...

    magento二次开发大全

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。在进行Magento的二次开发时,你需要理解并掌握以下几个核心概念和技术: 1. **MVC架构**:Magento基于Model-View-Controller(MVC)设计模式...

    Magento-SMTP-Email

    Magento是开源的电子商务平台,广泛用于在线商店的建设。SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的标准协议。在Magento中,SMTP插件扮演着关键角色,它允许商家通过更安全、可靠的SMTP服务器发送...

    magento入门学习资料

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。作为一款基于PHP开发的系统,它为商家提供了丰富的功能,包括商品管理、订单处理、客户管理、营销工具等。以下将详细介绍`magento入门学习资料...

    magento-java-master.zip_magento

    这个“magento-java-master.zip_magento”压缩包可能是为了提供一个Java连接Magento源码的示例或者库,帮助开发者实现Java与Magento系统的交互。 在Java中与Magento进行交互通常涉及到以下几个关键知识点: 1. **...

    magik shoes magento 模板, magento 1.7 模板

    Magento是一款开源的电子商务平台,专为在线商家设计,提供强大的购物车系统和丰富的功能。"Magik Shoes Magento 模板"是专为Magento 1.7版本设计的商店主题,旨在提升在线鞋类销售商店的用户体验和视觉吸引力。在这...

Global site tag (gtag.js) - Google Analytics