检索Magento store';javascript中的基本url
从javascript内部确定Magento存储的基本url的最佳方法是什么 我正在开发一个可重用的扩展,它需要知道商店的基本url(javascript),以便进行一些Ajax调用。有人会认为像这样的房产检索Magento store';javascript中的基本url,magento,Magento,从javascript内部确定Magento存储的基本url的最佳方法是什么 我正在开发一个可重用的扩展,它需要知道商店的基本url(javascript),以便进行一些Ajax调用。有人会认为像这样的房产 Mage.baseUrl 可能有,但我找不到 另一种选择是将基本url添加为一点内联javascript,但我找不到任何关于如何以编程方式添加内联javascript(仅外部js文件)而不更改模板的信息。默认情况下,此信息不会(可靠、稳定地)通过javascript公开。您需要通过添加到
Mage.baseUrl
可能有,但我找不到
另一种选择是将基本url添加为一点内联javascript,但我找不到任何关于如何以编程方式添加内联javascript(仅外部js文件)而不更改模板的信息。默认情况下,此信息不会(可靠、稳定地)通过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>
此时,您有一个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>
#文件:app/design/frontend/default/your_theme/template/my_custom_js_block/extra-js.phtml
var my_custom_js_block_info=;
(未经测试,我的头号代码,但应该有效)谢谢您的详细回答。如何从模块的config.xml文件而不是local.xml文件中添加此块?我正在制作一个可重用的模块,不能依靠用户修改local.xml.Google来在模块的config.xml中添加自定义布局xml文件。就像Mage_Catalog添加了Catalog.xml一样,您可以让您的模块包含一个自定义xml文件。在几个小时的搜索和尝试了许多相互矛盾和不同的方法之后,我失败了。有没有办法知道我的自定义xml文件是否在运行时包含?请确保您处于开发人员模式,然后在xml文件中引入并出错。如果PHP无法包含该文件,您就知道它正在加载。另见:好吧,终于拿到了。关键是您的自定义布局文件必须位于
/app/design/frontend/[package]/[theme]/layout
目录下,而不是模块的etc
目录下。所以我把我的放在/app/design/frontend/base/default/layout/mymodule.xml
上,让它工作起来。
#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>