php - Magento:如何对以编程方式通过扩展添加的 js 文件使用 removeItem

标签 php xml magento layout themes

我有一个通过观察者添加 JS 的第 3 方扩展:

<?php
class Anowave_Owl_Model_Observer extends Mage_Core_Model_Abstract
{
    public function dispatch(Varien_Event_Observer $observer)
    {
        if (Mage::app()->getLayout()->getBlock('owl') && Mage::app()->getLayout()->getBlock('owl')->getSlider())
        {
            $format = Mage::app()->getLayout()->getBlock('owl')->getFormat();

            if ($format instanceof Anowave_Owl_Block_Format)
            {
                $format->addCss()->addJs();
            }
        }

        return $this;
    }
}

其中 addJs 在 block 类中定义为:

public function addJs()
{
    $script = 'js/jquery-1.11.0.min.js';
    Mage::app()->getLayout()->getBlock('head')->addItem('skin_js', $script);
 }

我不是破解模块,而是尝试通过 removeItem 删除加载的 jquery,即

   <default>
     <reference name="head">
        <action method="removeItem">
            <type>skin_js</type>
            <name>js/jquery-1.11.0.min.js</name>
        </action>
    </reference>
   </default>  

在 local.xml 中。但它不起作用。 (该 JS 文件仍然打印到头部的脚本标记中)。 即

<script type="text/javascript" src="http://mydomain.local/skin/frontend/base/default/js/jquery-1.11.0.min.js"></script>

我知道我的语法和路径是正确的,因为我可以通过这种方式在同一文件夹中卸载/删除其他 JS 文件(那些由其扩展的布局 XML 指定的文件)。 我认为 local.xml 是在所有其他布局注册步骤之后处理的,但我猜不是(?) 所以我不认为布局中的 removeItem 是一个选项。 我愿意使用

        Mage::app()->getLayout()->getBlock('head')->removeItem('skin_js', $script);

在自定义模块中,但我怎么知道前面所有的 addJS() 处理都已执行完毕?

感谢任何想法或解决方案!

最佳答案

如果此第 3 方扩展在 community 代码池中,您可以在 local 代码池中重新创建此观察者的相同路径,Magento 将检查是否存在首先在本地代码池中类。

您必须创建路径 app/code/local/Anowave/Owl/Model/ 并将 Observer.php 文件放入其中,以便您可以安全地修改它在不破解原始扩展的情况下为您的业务逻辑类。

关于php - Magento:如何对以编程方式通过扩展添加的 js 文件使用 removeItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468306/

相关文章:

c# - 如何从 XML 文件中删除空格

java - Android应用程序备份和恢复?

Magento 1.7 : "Place Order" disabled by default in PayPal Express Review

javascript - 隐藏值的 Magento 表单验证

php - 如何在 php 中反转

PHP 错误报告 - 使用 "^"字符和 "~"字符

php - 如何将 Apache Solr 与 mysql 连接

php - 如何在 WooCommerce "My account"订单表中插入订单的前 3 个产品图像

java - Log4j 日志附加到取决于日期的文件名 - 配置

php - Magento 管理页面完全空白,任何地方都找不到错误