2011-12-05 2 views
2

私はmagento webstoreを開発しています。そこには、顧客が注文を受けたいルートを選択できるページがあります。選択は2つあり、現時点では2つの異なるボタンセットがあり、チェックボックスやラジオボタンはありません。最初に、ユーザーは日付を選択してから場所を選択します。ユーザーの選択肢をマゼンタでリアルタイムに表示する必要があります

今、私はボタンプレスでクッキーをロードし、ページをリロードしてアンカーリンクに戻すようなjavascript関数を呼び出しています。そのため、最初の選択時にユーザーが混乱することはありません。ページがリロードされると、サイドバーには、Cookieの内容を読み込むphpが含まれます。これは非常に直感的ではないと私は確かにこれを行うためのより良い方法があります。ユーザーが選択したものは、サイドバーのショッピングカート(.phtmlファイル)に表示されます。シンプルな「あなたがルートxを選んだ」だけで十分ですが、今はエコーがありますが、ページを最初にリロードする必要があります。

要するにユーザーが選択すると、サイドバーは、ページを再読み込みしてアンカーリンクを使用して元の位置に戻ることなく、選択に関する情報で更新する必要があります。通知は、好ましくは左側のサイドバーにあるべきです。私はポップアップや一時的な通知を使用したいとは思わないが、それは追加の機能かもしれない。

私はこれが非常に単純な質問だと確信していますが、何らかの理由で私は正しいキーワードを見つけることができないと思われ、それからmagento自体があります。

+0

"リアルタイム"を "ajax"に変更しました。これは、あなたが思っていることだと思うからです。また、「jquery」タグを使用することを意味しますか? MagentoにはPrototypeが標準で同梱されていますが、テーマにはjQueryもあります。 – clockworkgeek

+0

OKこれを部分的に解決しました。私は1週間以内にこれ以上の情報でこれを更新します。私はリアルタイムで更新するためのデータを取得しましたが、Magentoの構造はそれを少し難しくしました。 – kartaju

答えて

0

これまで私がこれまでに出てきた最高のものです。私はまだそれが部分的にしか解決されていないと考え、私はマゼンタのコミュニティからより多くの助けを得ることができると思うが、今は十分に機能する。

はcustom.phtmlヘッダにこのスクリプトを含める:

<script type="text/javascript"> 
function AJAX(){ 
    try{ 
     xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari 
     return xmlHttp; 
    } 
    catch (e){ 
     try{ 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer 
     return xmlHttp; 
     } 
     catch (e){ 
     try{ 
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      return xmlHttp; 
     } 
     catch (e){ 
      alert("Your browser does not support AJAX."); 
      return false; 
     } 
     } 
    } 
} 


// Timestamp for preventing IE caching the GET request (common function) 

function fetch_unix_timestamp() 
{ 
    return parseInt(new Date().getTime().toString().substring(0, 10)) 
} 

// Reload div with php 

function refreshdiv_timediv(){ 

    var seconds = '3'; 
    var divid = "ajax"; 
    var url = "routes/customer_needs_to_see_this.php"; 

    var xmlHttp_one = AJAX(); 

    // No cache 

    var timestamp = fetch_unix_timestamp(); 
    var nocacheurl = url+"?t="+timestamp; 


    // The code... 

    xmlHttp_one.onreadystatechange=function(){ 
     if(xmlHttp_one.readyState==4){ 
     document.getElementById(divid).innerHTML=xmlHttp_one.responseText; 
     setTimeout('refreshdiv_timediv()',seconds*1000); 
     } 
    } 
    xmlHttp_one.open("GET",nocacheurl,true); 
    xmlHttp_one.send(null); 
} 

// Start the refreshing process 

window.onload = function startrefresh(){ 
    setTimeout('refreshdiv_timediv()',seconds*1000); 
} 
</script> 

それから私は、WWWのルートディレクトリにフォルダのルートにcustomer_needs_to_see_this.phpを置きます。上記のスクリプトは自動的にdiv "ajax"をリフレッシュし、ajax-divの中にはPHPがありますroutes/user_needs_to_see_this.phpが含まれています。インクルード付きのdivはcart_sidebar.phtml

のように配置されています。私はmagentoのテンプレートファイルの外にファイルを置く必要がありました。../template/checkout/customer_needs_to_see_this.phpのようなものは含まれていませんでした。彼らはビュー(phtmlファイル)と同じフォルダにいるときの作業を含むが、それ以外の場合は動作しないようです。また、magentoのテンプレートファイルからuser_needs_to_see_this.phpを取得するスクリプトを取得できませんでした。

お客様がcustom.phtmlページにアクセスすると、現在は3秒ごとに更新されます。私はその大丈夫だと思うのは、そのクッキーを読んで作るだけなので、何も重くないからです。私は将来それをonclickに変更するかもしれない。

コードhereがあります。

このような他の例もたくさんありますが、上記の例はほとんどのベースをカバーしているようです。

関連する問題