2012-01-20 4 views
5

MagentoストアのベースURLをjavascriptの中から判断する最良の方法は何ですか?MagentoストアのベースURLをJavaScriptで取得する

私はいくつかのAjax呼び出しを行うために、JavaScriptのストアのベースURLを知る必要がある再利用可能な拡張機能に取り組んでいます。 1つは、

Mage.baseUrl 

のようなプロパティが利用可能であると思うでしょうが、私はそれを見つけることができません。

代わりに、ベースURLをインラインJavaScriptのビットとして追加することもできますが、テンプレートを変更せずにインラインJavaScriptをプログラムで(外部jsファイルのみ)追加する方法に関する情報は見つかりません。

答えて

5

デフォルトでは、この情報はJavascriptで(信頼できるほど安定して)公開されていません。あなたはレイアウトに追加されたカスタムブロックを使って自分自身を公開する必要があります。これを行う最も簡単な方法は、ブロックを追加するには上記のブロック

のためにあなたのテーマにテンプレートを追加するあなたのテーマのlocal.xmlファイル

  • を経由してブロックを追加

    1. になりますlocal.xmlファイルを使用したレイアウトの場合は、このようなもので十分です。

      <default> 
          <reference name="root"> 
           <block name="my_custom_js_block"> 
            <action method="setTemplate"> 
             <template>my_custom_js_block/extra-js.phtml</template> 
            </action> 
           </block> 
          </reference> 
      </default> 
      

      は、その後、あなたがすべてのページに表示されますphtmlテンプレートファイルを持っている。この時点で、あなたのテーマ

      app/design/frontend/default/your_theme/template/my_custom_js_block/ 
      app/design/frontend/default/your_theme/template/my_custom_js_block/extra-js.phtml 
      

      に以下のフォルダとファイルを追加します。必要なJavaScript変数を追加できます。私は(未テスト、トップ・オブ・私の頭のコードが、動作するはずです)詳細な回答のため

  • +0

    おかげ

    #File: app/design/frontend/default/your_theme/template/my_custom_js_block/extra-js.phtml <?php $h = Mage::helper('core'); $info = new stdClass(); $info->base_dir = Mage::getBaseDir(); ?> <script type="text/javascript"> var my_custom_js_block_info = <?php echo $h->jsonEncode($info); ?>; </script> 

    のようなパターンなものが好きです。どうすればこのブロックをlocal.xmlではなくモジュールのconfig.xmlファイルから追加できますか?私は再利用可能なモジュールを作成しており、local.xmlを変更しているユーザーに頼ることはできません。 –

    +0

    あなたのモジュールのconfig.xmlにカスタムレイアウトのXMLファイルを追加してください。 Mage_Catalogがcatalog.xmlを追加するのと同じように、モジュールにカスタムXMLファイルを含めることができます。 –

    +1

    これを達成するために何時間もの矛盾した方法を試してみて、私は失敗しました。私のカスタムXMLファイルが実行時にインクルードされているかどうかを知る方法はありますか? –

    関連する問題