2010-12-04 8 views
1

Ich habe eine Website, die Abstimmung auf der Titelseite Knoten hat, und ich muss eine Ansicht auf dem gleichen Knoten nach jeder Abstimmung aktualisieren. Ich bin derzeit den folgenden Code in meinem page.tpl.php mitDrupal - Ich versuche, eine Ansicht nach der Abstimmung mit Fivestar-Modul zu aktualisieren

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

Gibt es eine Möglichkeit, um direkt die Ansicht zu aktualisieren, anstatt die ganze Seite an erfrischenden? Ich bin nicht sehr gut in Javascript, also bin ich ein wenig verloren.

Antwort

0

Eine Idee, die ich in einer solchen Situation machen kann, ist, dass Ajax die Ansicht erneut aufruft und sie über JQuery on click event wieder in die Seite rendert.

nehmen Sie dieses Beispiel, ich denke, das wird mehr

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

0

Dank Rabe klären,

Das klingt wie es funktionieren sollte. Ich probierte es ein paar verschiedene Möglichkeiten, aber konnte es nicht zu ...

Gibt es etwas offensichtlich, ich könnte von diesem Code (in page.tpl.php) fehlen?

<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> 

Vielen Dank für die Hilfe

+0

Ja, da ist etwas offensichtlich fehlt. Dieser PHP-Code wird erweitert, wenn sie die Seite vom Webserver anfordern, nicht wenn das Javascript ausgeführt wird, so dass es die Werte vor der Abstimmung enthält. Sie benötigen eine Möglichkeit, um nur die Ansicht über Javascript in die Seite einzubetten. – ZoFreX

0

Wie viele Dinge in Drupal, kann es ein Modul sein, bereits geschrieben, dies zu tun. Ajax views refresh klingt sehr vielversprechend!

+0

Danke ZoFreX - Ich habe dieses Modul ausprobiert, kann aber keine Verbindung herstellen, um es nach der Abstimmung zu aktualisieren ... Ich werde den vorgeschlagenen Codevorschlag ausprobieren. –

+0

Ich habe genau diese Sache mit AJAX Views Refresh gemacht. Es ist kein super straight-forward, aber es ist absolut der richtige Weg zu gehen. – doublejosh

0

Ich habe unzählige Stunden damit verbracht, eine Ansicht zu debuggen, nur um festzustellen, dass ich Caching aktiviert hatte und alte Ergebnisse betrachtete. Die Caches für verschiedene Benutzergruppen sind ebenfalls getrennt. Daher müssen Sie möglicherweise den Cache manuell leeren, um dies zu aktualisieren, was eine Herausforderung mit Ajax sein könnte.