使用AJAX正确加载PowerReviews

时间:2012-08-08 19:12:46

标签: javascript ajax magento

我们在Magento商店内使用PowerReviews作为对标准Magento评论系统的重视。我们已经为类别,产品和评论页面设置了它,并且已经有一段时间了。

最近我添加了一个模块,它将AJAX重新加载功能带到了类别页面上的过滤导航。即我选择“红色”作为过滤器,类别页面刷新,无需重新加载适当的产品。当我关闭电源评论时,这很好用。

启用Power Reviews后,AJAX开始加载,但页面变为白色,只显示PowerReviews <div>标记。当我查看PowerReviews代码时,我想我可以看到原因:

<script type="text/javascript">
  POWERREVIEWS.display.snippet(document, {
       pr_page_id : '49DAF4', 
       pr_write_review :    '/review/product/list/id/1907/category/111/#review-form',
       pr_read_review : txt, pr_snippet_min_reviews : 1});
</script>

由于POWERREVIEWS.display.snippet被称为'文档'我认为正在发生的是AJAX加载正在发生,写入'文档'然后PowerReviews正在发生,并且也被写入'文档'。由于这发生在最后,它劫持页面而不是像正常负载那样正确放置。

如果我将“文档”更改为document.getelementbyid('PWR')并添加<div id="PWR">,则该代码段不会显示在页面上。有没有办法可以将POWERREVIEWS.display.snippet的输出定位到“文档”以外的其他内容,这样两个脚本就不会相互干扰?

1 个答案:

答案 0 :(得分:8)

PowerReviews实际上提供了一个有效的答案。他们建议直接使用JQuery交付方法到DIV。将它发布在这里以帮助他人。

  

1)将JS include插入到该节中的jquery库中   (如果你还没有):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
     

2)对代码段功能使用write:function(content)语法   拨打:

<div id="pr_snippet_category_12345"> <script type="text/javascript">
POWERREVIEWS.display.snippet({ write : function(content) {
$('div#pr_snippet_category_12345').append(content); } }, { pr_page_id
: '12345', pr_snippet_min_reviews : '1' }) </script> </div>