2010-12-04 7 views
1

フロントページノードで投票しているサイトがあり、投票後に同じノードのビューを更新する必要があります。私は現在、私のpage.tpl.phpDrupal - 私は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> 

に次のコードを使用していなく、直接ページ全体をリフレッシュの表示を更新する方法はありますか?私はJavaScriptがあまりよくないので、少し失われています。

答えて

0

このような状況では、Ajaxが再びビューを呼び出して、JQuery on clickイベントを介して再びページ内にレンダリングするという考えがあります。

この例を取る、私はこれがより

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

0

おかげラーベ、それが動作するはずのように聞こえる

を明確にしますね。私はいくつかの方法で試しましたが、それを得ることができませんでした。

このコード(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> 

多くのDrupalで多くの事のように助け

+0

はい、明白でないものがあります。そのPHPコードは、Javascriptが実行されたときではなく、Webサーバーからページをリクエストするときに展開されるため、投票前の値が保持されます。あなたはページに埋め込むためにjavascriptを介してちょうどビューを取得するいくつかの方法が必要になります。 – ZoFreX

0

ためのおかげで、すでにこれを実行するために書かれたモジュールがあるかもしれません。 Ajax views refreshは非常に有望ですね!

+0

ありがとうZoFreX - 私はこのモジュールを試しましたが、投票後にリフレッシュするための方法を見つけることができません...提案したコード提案を試してみましょう。 –

+0

私はこの正確なことをAJAX Views Refreshで行っています。スーパーストレートフォワードではありませんが、それはまさに正しい方法です。 – doublejosh

0

私はキャッシングが有効になっていて、古い結果を見ていることを認識するためにのみ、ビューのデバッグに無駄な時間を費やしました。異なるユーザーグループのキャッシュも別々です。このため、キャッシュを手動でフラッシュして更新する必要があるかもしれません。これはAjaxの課題です。

関連する問題