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, поэтому немного потерялся.


person Steve Klein    schedule 04.12.2010    source источник


Ответы (4)


Идея, которую я могу сделать в такой ситуации, - это снова вызвать представление Ajax и снова отобразить его внутри страницы с помощью JQuery при событии щелчка.

возьмите этот пример, я думаю, это прояснит больше

Drupal 6: визуализация представлений 2 данных на странице tpl файл

person Rabea    schedule 05.12.2010

Спасибо, Рабе,

Похоже, это должно сработать. Я пробовал несколько разных способов, но не смог ...

Есть ли что-то очевидное, чего мне не хватает в этом коде (в 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>

Большое спасибо за помощь

person Steve Klein    schedule 05.12.2010
comment
Да, чего-то явно не хватает. Этот PHP-код расширяется, когда они запрашивают страницу с веб-сервера, а не при выполнении Javascript, поэтому он будет хранить значения до того, как они проголосовали. Вам понадобится какой-то способ получить только представление через javascript для встраивания на страницу. - person ZoFreX; 06.12.2010

Как и многие другие вещи в Drupal, для этого может быть уже написан модуль. Обновление представлений Ajax звучит многообещающе!

person ZoFreX    schedule 06.12.2010
comment
Спасибо, ZoFreX - я попробовал этот модуль, но не могу найти способ подключить его для обновления после голосования ... Я попробую предложенный вами код. - person Steve Klein; 06.12.2010
comment
Я сделал именно это с помощью AJAX Views Refresh. Это не супер-прямолинейно, но это совершенно правильный путь. - person doublejosh; 24.02.2011

Я потратил бесчисленное количество часов на отладку представления только для того, чтобы понять, что у меня включено кеширование, и я смотрю на старые результаты. Кеши для разных групп пользователей тоже раздельные. Таким образом, вам может потребоваться вручную очистить кеш, чтобы обновить его, что может быть проблемой с Ajax.

person TelFiRE    schedule 05.06.2012