2010-12-04 25 views
1

J'ai un site qui a voté sur le nœud de la première page, et je dois mettre à jour une vue sur le même nœud après chaque vote. J'utilise actuellement le code suivant dans mon page.tpl.phpDrupal - Je suis en train de rafraîchir une vue après avoir voté avec le module Fivestar

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

est-il un moyen de rafraîchir directement la vue au lieu de rafraîchir la page entière? Je ne suis pas très bon en javascript donc je suis un peu perdu.

Répondre

0

Une idée que je peux faire dans ce genre de situation est à l'Ajax appeler la vue à nouveau et de le rendre à nouveau dans la page via JQuery sur événement click.

prendre cet exemple, je suppose que cela clarifiera plus

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

0

Merci Rabe,

Cela sonne comme cela devrait fonctionner. Je l'ai essayé quelques façons différentes mais n'a pas pu le faire à ...

Y at-il quelque chose d'évident, je pourrais être absent de ce code (en 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> 

Merci beaucoup pour l'aide

+0

Oui, il y a quelque chose qui manque évident. Que le code PHP est développé quand ils demandent la page du serveur web, pas quand le Javascript est exécuté, ainsi il tiendra les valeurs avant qu'ils aient voté. Vous aurez besoin d'un moyen d'obtenir juste la vue via javascript à intégrer dans la page. – ZoFreX

0

Comme beaucoup de choses dans Drupal, il peut y avoir un module déjà écrit à le faire. Ajax views refresh semble très prometteur!

+0

Merci ZoFreX - j'ai essayé ce module sur, mais ne peut pas trouver un moyen de le connecter à rafraîchir après avoir voté ... Je vais essayer de la suggestion de code que vous suggérez. –

+0

J'ai fait exactement la même chose avec AJAX Views Refresh. Ce n'est pas un super simple, mais c'est tout à fait la bonne façon d'y aller. – doublejosh

0

J'ai passé d'innombrables heures de débogage vue seulement pour réaliser que je l'avais mise en cache activée et regardait les anciens résultats. Les caches pour différents groupes d'utilisateurs sont également séparés. Il se peut donc que vous ayez besoin de vider manuellement le cache pour que cela soit mis à jour, ce qui pourrait être un défi avec Ajax.