Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检索Magento store';javascript中的基本url_Magento - Fatal编程技术网

检索Magento store';javascript中的基本url

检索Magento store';javascript中的基本url,magento,Magento,从javascript内部确定Magento存储的基本url的最佳方法是什么 我正在开发一个可重用的扩展,它需要知道商店的基本url(javascript),以便进行一些Ajax调用。有人会认为像这样的房产 Mage.baseUrl 可能有,但我找不到 另一种选择是将基本url添加为一点内联javascript,但我找不到任何关于如何以编程方式添加内联javascript(仅外部js文件)而不更改模板的信息。默认情况下,此信息不会(可靠、稳定地)通过javascript公开。您需要通过添加到

从javascript内部确定Magento存储的基本url的最佳方法是什么

我正在开发一个可重用的扩展,它需要知道商店的基本url(javascript),以便进行一些Ajax调用。有人会认为像这样的房产

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>