2012-01-17 1 views
0

Drupal 6.22 Fivestar 6.x-1.19 Правила 6.x-1.4 Эти модули были самыми последними из этих публикаций.Как перенаправить на страницу после голосования в Fivestar в Drupal с Правилами?

Моя цель - перенаправить пользователя на страницу при голосовании на узле. Должно быть достаточно простым.

Я создал правило, когда пользователь голосует за узел. Нет состояния. Я добавил действие, чтобы добавить сообщение в журнал, чтобы проверить, что это правило запускается. Что это такое. Затем добавьте действие для перенаправления на домашнюю страницу (для тестирования). Переадресация никогда не происходит. Если я проверю опцию «Немедленно выпустить перенаправление страницы», голосование ajax никогда не будет экономить и просто зависает при «сохранении голоса ...».

Я не думаю, что я делаю что-то не так, и опубликую это на вопросы модуля fivestar. У кого-нибудь еще была эта проблема?

ответ

1

http://drupal.org/node/252859

А "перенаправление URL ...", безусловно, вызывает проблемы с AJAX механизма голосования FiveStar в. Вот что происходит:

Что обычно происходит: - Пользователь нажимает на виджет Fivestar для оценки. - Запрос AJAX производится на текущей странице. - VotingAPI сохраняет голосование. - Fivestar генерирует XML и печатает страницу. - Текущая страница получает XML, а затем обновляет виджет для голосования новыми значениями.

Что происходит с VotingActions: - пользователь нажимает на виджет FiveStar для оценивающих - AJAX запрос сделан - VotingAPI записывает голос - VotingActions крючки и говорит: «О, я перенаправлять этот URL» < - Где все пошло не так - Вместо того, чтобы возвращать XML на вызывающую страницу (которая обновляла бы голоса), исходная страница возвращает полную HTML-страницу везде, где VotingActions перенаправляет страницу. - Fivestar не может генерировать XML, потому что VotingActions завершил выполнение с помощью drupal_goto().

Поэтому я не думаю, что это ошибка в VotingActions или Fivestar, это всего лишь случай использования двух функций в несовместимых способах. Чтобы сделать эту работу, Fivestar должен был бы не быть управляемым AJAX, вместо этого перезагружать страницу, чтобы сохранить голосование.

Fivestar предлагает привлекательный JavaScript-крючок, который вы можете использовать для перехода на следующую страницу. Если вы добавите JavaScript на страницу, содержащую что-то вроде этого:

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