11

我已经成为 Joomla 开发人员将近一年了。我每天都在努力将 jQuery 导入 joomla。Joomla 带有 mootools。当我导入 jQuery 时它崩溃了。此外,当我创建模块时,我必须将 jQuery 导入到每个模块中,这会使网站变慢。有时它会使整个网站崩溃。我希望 mootools 和 jquery 携手合作,这样我就可以同时使用它们而不会出现任何崩溃。

将 jQuery 导入 Joomla 的最佳方法是什么?是否有一个特定的地方应该进行导入以在整个站点范围内使用一个 jquery 库(后端和前端)?

谢谢

4

4 回答 4

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文件,那么您也可以开发一个小插件

更新:

正如鲍比所说。很多扩展都包含他们自己的 jQuery 副本,其中很多不使用这种方法,因此会导致冲突。我所知道的是,任何优秀的开发人员都应该知道多个 jQuery 库会导致冲突,并且应该使用此代码。

于 2012-09-18T09:16:46.150 回答
2

这是一个很棒的插件。

http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327

该插件旨在帮助清理和解决在 Mootools 库旁边使用 jQuery 实例时的前端和后端问题。

开箱即用的功能

  • 从 Google CDN 调用 jQuery 和 jQuery UI 库(有或没有协议)——但你也可以在本地进行,
  • 在 MooTools 调用完美兼容性之后放置 jQuery 库,
  • 在 jQuery 库调用旁边添加 noConflict() 代码,
  • 去除额外的 jQuery 和 jQuery UI 库,包括其他模块或插件添加的 noConflict() 调用,
  • 让您选择 jQuery UI 基本样式或自定义主题。

你可以调整什么

  • 在前端暂时禁用 MooTools 库,
  • 在网站的特定部分启用或禁用插件,从模板到单页,
  • 使用报告来获取有关插件引擎所做工作的反馈,
  • 添加或删除脚本和样式表,
  • 去除对页面进行修改留下的空白行,
  • 防止一些库被剥离,
  • 修改引擎默认的工作方式(不要添加或删除 noConflict() 代码...),
于 2013-08-13T15:31:20.397 回答
0

使用 Joomla!3.0 — 如果您已经尝试了那么长时间,您应该帮助使用Joomla!JavaScript 工作组就是为解决这个问题而建立的。

于 2012-09-18T06:33:14.420 回答
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

于 2013-07-09T19:00:15.907 回答