我有一个付款模块,该模块需要在启用其启用的商店的结帐页面上进行一些JavaScript。好消息是它正确地包括结帐页面上的链接。不幸的是,它还包括每个其他页面和每个商店中的链接。

您如何设置JavaScript Incluct,仅在某个部分中出现在启用其启用的商店中?

有帮助吗?

解决方案

如果您的模块具有每个商店范围的简单启用/禁用配置设置(似乎是),则可以使用 ifconfig, ,通过 Mage::getStoreConfigFlag():

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <checkout_onepage_index><!-- the onepage checkout "page" -->
        <reference name="head"><!-- The HTML head block -->
            <action method="addJs" ifconfig="your/checkout_module/enabled">
                <js>your/file.js</js><!-- i.e. js/your/file.js -->
            </action>
        </reference>
    </checkout_onepage_index>
</layout>

其他提示

我构建了一个观察者,该观察者添加了一个布局句柄,如果

<?xml version="1.0"?>
<config>
    <frontend>
        <events>
            <controller_action_layout_load_before>
                <observers>
                    <myobserver>
                        <type>singleton</type>
                        <class>Namespace_MyModule_Model_Observer</class>
                        <method>controllerActionLayoutLoadBefore</method>
                    </myobserver>
                </observers>
            </controller_action_layout_load_before>
        </events>
    </frontend>
</config>

和观察者:

<?php
class Namespace_MyModule_Model_Observer
{
    /**
     * add update handles
     *
     * @param Varien_Event_Observer $observer
     */
    public function controllerActionLayoutLoadBefore(Varien_Event_Observer $observer)
    {
        /* @var $controller Mage_Core_Controller_Front_Action */
        $controller = $observer->getAction();
        $request = $controller->getRequest();

        /* @var $layoutUpdate Mage_Core_Model_Layout_Update */
        $layoutUpdate = $observer->getLayout()->getUpdate();

        // check whether to add the handle or not

        $layoutUpdate->addHandle('my_layout_handle');
    }

}

然后,您可以将JS添加到手柄中,并决定是否添加它。

该JavaScript是否嵌入了布局文件中,并且商店具有适当的主题?如果是这种情况,您可以按照以下示例进行配置:无需定义观察者,超载,没有自定义:

想象一下您的模块来自A布局句柄myModuleLayout.xml

您应该拥有应用程序/design/frontend/base/default/layout/mymodulelayout.xml

仅在您要启用此模块的商店中移动此文件:

app/design/frontend/yourwebsite/yourtheme/layout/mymodulelayout.xml

仅当应用您的网站包装并应用主题时,才会使用此布局,因此,对于要在结帐中加载此元素的商店中。

问候

许可以下: CC-BY-SA归因
scroll top