4

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

最近我添加了一个模块,它为类别页面上的过滤导航带来了 AJAX 重新加载功能。即我选择“红色”作为过滤器,类别页面会刷新而无需重新加载适当的产品。当我关闭 Power Review 时,这可以正常工作。

当 Power Review 开启时,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到“文档”以外的内容,这样两个脚本就不会相互干扰?

4

1 回答 1

8

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

1) 将 JS 包含插入到该部分中的 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>
于 2012-08-20T16:46:35.553 回答