Drupal - 我正在尝试使用Fivestar模块投票后刷新视图

时间:2010-12-04 03:12:42

标签: php javascript drupal drupal-views drupal-fivestar

我有一个在首页节点上投票的网站,我需要在每次投票后更新同一节点上的视图。我目前在page.tpl.php中使用以下代码

<script type="text/javascript">
 function fivestarResult(voteResult) {
      $('div#fivestar-summary-'+voteResult.vote.id).html(voteResult.result.summary);
      window.location = "http://www.mydomain.com/";
 };
</script>

有没有办法直接刷新视图而不是刷新整个页面?我在javascript方面不是很好,所以我有点失落。

4 个答案:

答案 0 :(得分:0)

我可能在这种情况下做的一个想法是Ajax再次调用视图并在点击事件中通过JQuery再次在页面内呈现它。

举个例子,我想这会澄清更多

Drupal 6: Render Views 2 data in a page tpl file

答案 1 :(得分:0)

谢谢拉贝,

这听起来应该有效。我尝试了几种不同的方法,但无法得到它......

这段代码中是否有明显的遗漏(在page.tpl.php中)?

<script type="text/javascript">
    function fivestarResult(voteResult) {
    $('div#fivestar-summary-'+voteResult.vote.id).html(voteResult.result.summary);
    <?php
        $name = "comparison_view";
        print views_embed_view($name, $display_id = 'default');
    ?>
    };
</script>

非常感谢您的帮助

答案 2 :(得分:0)

与Drupal中的许多内容一样,可能已经编写了一个模块来执行此操作。 Ajax views refresh听起来很有希望!

答案 3 :(得分:0)

我花了无数个小时调试视图,但发现我已经启用了缓存,并且正在查看旧结果。不同用户组的缓存也是分开的。因此,您可能需要手动刷新缓存以使其更新,这可能是Ajax的挑战。