在javascript中检索Magento商店的基本网址

Nic*_*rty 5 magento

从javascript中确定Magento商店的基本网址的最佳方法是什么?

我正在开发一个可重用的扩展,需要在javascript中知道商店的基本URL,以便进行一些Ajax调用.人们会认为这样的财产

Mage.baseUrl 
Run Code Online (Sandbox Code Playgroud)

会有,但我找不到.

另一种方法是将基本URL添加为一些内联javascript,但我无法找到有关如何以编程方式添加内联javascript(仅外部js文件)的任何信息,而无需更改模板.

Ala*_*orm 5

默认情况下,此信息不会(通过Javascript)(可靠,稳定地)公开.您将需要通过添加到布局的自定义块自己公开它.最简单的方法是

  1. 通过主题local.xml文件添加块

  2. 为上面的块添加模板到主题

要通过您的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>
Run Code Online (Sandbox Code Playgroud)

然后将以下文件夹和文件添加到您的主题

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
Run Code Online (Sandbox Code Playgroud)

此时,您将拥有一个phtml将在每个页面上呈现的模板文件.您可以添加所需的任何javascript变量.我喜欢这样的模式

#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>
Run Code Online (Sandbox Code Playgroud)

(未经测试,我的头顶代码,但应该工作)