如何在Drupal中使用规则进行五星投票后重定向到页面?

时间:2012-01-17 03:41:45

标签: drupal drupal-6 drupal-fivestar

Drupal 6.22 五星6.x-1.19 规则6.x-1.4 这些模块是本次发布的最新版本。

我的目标是在用户对节点进行投票时将用户重定向到页面。应该够简单。

我为用户在节点上投票时创建了一条规则。没有条件。我添加了一个操作来向日志添加消息以验证是否正在触发规则。它是什么。然后添加一个动作以重定向到主页(用于测试)。重定向永远不会发生。如果我选中“立即发布页面重定向”选项,则ajax投票永远不会保存,只会挂起“保存投票...”。

我认为我没有做错什么,并将其发布到五星模块问题。还有其他人有这个问题吗?

1 个答案:

答案 0 :(得分:1)

http://drupal.org/node/252859

“重定向到网址...”肯定会导致Fivestar的AJAX投票机制出现问题。这是正在发生的事情:

通常会发生什么: - 用户点击Fivestar小部件进行评分。 - AJAX请求由当前页面发出。 - VotingAPI保存投票。 - Fivestar生成XML并打印页面。 - 当前页面接收XML,然后使用新值更新投票窗口小部件。

VotingActions会发生什么: - 用户点击Fivestar小部件进行评分 - AJAX请求 - VotingAPI记录投票 - VotingActions挂钩并说“哦,我正在重定向此URL”< - 出了问题 - 不是将XML返回到调用页面(这将更新投票),原始页面将返回VotingActions重定向页面的完整HTML页面。 - Fivestar无法生成它的XML,因为VotingActions已经使用drupal_goto()结束了执行。

所以我认为这不是VotingActions或Fivestar中的错误,只是以不兼容的方式使用两个功能的情况。为了使这项工作,Fivestar必须被AJAX驱动,而是重新加载页面以保存投票。

Fivestar提供了一个很好的JavaScript钩子,您可以使用它来转到下一页。如果您将JavaScript添加到包含以下内容的页面:

function fivestarResult(voteResult) {
    window.location.href = 'http://google.com';
}