我已经成为Joomla开发人员近一年了。我每天都在努力将jQuery导入joomla。 Joomla带有mootools。当我导入jQuery时它崩溃了。此外,当我创建模块时,我必须将jQuery导入每个模块,这使得站点变慢。有时它会使整个网站崩溃。我希望mootools和jquery能够携手合作,所以我可以使用它们而不会发生任何崩溃。
将jQuery导入Joomla的最佳方法是什么?是否有特定的位置需要导入以在站点范围内使用一个jquery库(后端和前端)?
由于
答案 0 :(得分:18)
这是我们用来确保只导入1个jQuery副本的代码。它只是检查jQuery是否已经被导入,如果没有,那么我们导入它:)
Joomla 2.5
<?php
$app = JFactory::getApplication();
if (!$app->get('jquery'))
{
$app->set('jquery', true);
JFactory::getDocument()->addScript(JUri::root() . 'templates/template_name/js/jquery.js');
}
?>
Joomla 3.x(无冲突模式):
JHtml::_('jquery.framework');
Joomla 3.x(正常模式):
JHtml::_('jquery.framework', false);
您需要将此代码插入模板的 index.php ,最好是在顶部附近,以便记住它的位置。如果您不想覆盖模板的 index.php 文件,那么您还可以开发一个小的Plugin
<强>更新强>
正如鲍比所说。很多扩展包括他们自己的jQuery副本,其中很多都不使用这种方法,从而导致冲突。我所知道的是,任何优秀的开发人员都应该知道多个jQuery库会导致冲突,并且应该使用此代码。
答案 1 :(得分:2)
这是一个很棒的插件。
http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327
此插件旨在帮助清理和解决前端和后端 在Mootools中使用jQuery实例时出现问题 库。
什么是不可能的?
- 从谷歌CDN(有或没有协议)调用jQuery和jQuery UI库 - 但你也可以在本地进行,
- 在MooTools要求完美兼容性之后放置jQuery库,
- 在jQuery库调用
旁边添加了noConflict()代码- 删除额外的jQuery和jQuery UI库,包括由其他模块或插件添加的noConflict()调用,
- 允许您选择jQuery UI基本样式或自定义主题。
你能做什么
- 暂时在前端暂停MooTools库,
- 启用或停用网站特定部分的插件,从模板到单页,
- 使用报告获取有关插件引擎已完成内容的反馈,
- 添加或删除脚本和样式表,
- 剥离对页面进行的修改留下的空白行
- 阻止某些库被删除,
- 默认情况下修改引擎的工作方式(不添加或删除noConflict()代码...),
答案 2 :(得分:0)
使用Joomla! 3.0 - 如果你花了那么长时间的努力,你应该帮助解决这个问题所需的Joomla! JavaScript Working Group。
答案 3 :(得分:0)
在Joomla 3.x中JApplication不再从JObject扩展,这意味着当你想在扩展中为Joomla 2.5和Joomla 3.x使用相同的代码时,你必须编写if条件,如
if (!version_compare(JVERSION, '3', 'ge') && !JFactory::getApplication()->get('jquery', false)) {
否则会崩溃!可以在此处找到一个示例https://github.com/Digital-Peak/DPExtensions/blob/master/mod_dpslider/tmpl/default.php#L13