从javascript内部确定Magento商店的基本网址的最佳方法是什么?
我正在开发一个可重用的扩展,需要在javascript中知道商店的基本URL才能进行一些Ajax调用。人们会认为像
这样的财产Mage.baseUrl
可用,但我找不到。
另一种方法是将基本网址添加为内联javascript,但我无法找到有关如何以编程方式添加内联javascript(仅限外部js文件)的任何信息,而无需更改模板。
答案 0 :(得分:5)
默认情况下,此信息不会通过Javascript公开(可靠,稳定)。您需要通过添加到布局的自定义块自行公开它。最简单的方法是
通过主题local.xml
档案
为上述块的主题添加模板
要通过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>
然后将以下文件夹和文件添加到主题
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
此时您有一个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>
(未经测试,我的头顶代码,但应该有效)