我正在创建一个自定义模块来显示 VirtueMart 类别,但需要禁用 VirtueMart 加载 MooTools,因为它使用的 MooTools 版本比我需要的要旧。我到处搜索,但似乎找不到允许我禁用它的文件或功能。任何帮助将不胜感激。
5 回答
至少在 1.5 到 components/com_virtuemart/themes/YOURTHEME/theme.php 找到第 37 行左右,有一个函数:
function vmTheme() {
parent::vmTemplate();
vmCommonHTML::loadMooTools();
}
只是评论
vmCommonHTML::loadMooTools();
整个项目中对它的唯一引用是在 mod_virtuemart_currencies.xml 中。我对 Joomla 不是 100% 熟悉,但这看起来像是特定货币模块的安装程序文件。
我建议删除该模块,或更新对它在该 XML 文件中使用的 MooTools 库的引用(当前可用版本中的第 30 行, inside modules/mod_virtuemart_currencies_1.14.j15/mod_virtuemart_currencies.xml
)。
我能够解决我的问题。我的自定义模块使用 JHTML::script() 来加载我的 JavaScript 文件。该特定函数具有默认为 true 的第三个参数,它将自动加载 MooTools。您可以在此处查看文档:http: //docs.joomla.org/Adding_JavaScript
如果不这样做,请将其放入您的模板中,它将删除 Joomla 尝试使用的任何默认脚本。显然,这可能会消除 Virtuemart 正常工作所必需的东西,但它也可能会解决您的问题。
<?php
$user =& JFactory::getUser();
if ($user->get('guest') == 1) {
$headers = $this->getHeadData();
$headers['scripts'] = array();
$this->setHeadData($headers);
}
?>
我为前端和后端创建了一个自定义组件,但我无法(终生)禁用 mootools。我尝试取消设置 headers 数组和所有这些,但它没有工作!它适用于组件是常规文章的常规页面,但不适用于我的自定义组件。
我在我的模板中使用了 JHTML::script() 函数,在阅读了此处的其中一条评论后,我尝试向该函数添加第二个参数(FALSE)并且它起作用了!
谢谢!!!
任何想法为什么从 $document 变量的 _scripts 数组中取消设置 mootools 不适用于自定义组件?