【问题标题】:Importing jQuery into Joomla将 jQuery 导入 Joomla
【发布时间】:2012-09-18 05:47:11
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: jquery joomla joomla2.5 joomla3.0 joomla3.1


    【解决方案1】:

    这是我们用来确保只导入 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 库会导致冲突,并且应该使用这段代码。

    【讨论】:

    • 我喜欢这个 - 您将它包含在哪个文件中?还值得注意的是,相当多的 joomla 扩展包含他们自己的 jQuery 版本。
    • 问题是不是每个开发人员都知道 if(!JFactory::getApplication()->get('jquery'))。joomla 网站上有没有关于这个的官方文档?如果不是 joomla 应该放它。
    【解决方案2】:

    这是一个很棒的插件。

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

    这个插件旨在帮助清理和解决前端和后端 将 jQuery 实例与 Mootools 一起使用时的问题 图书馆。

    开箱即用的功能

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

    你可以调整什么

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

    【讨论】:

    • 感谢您回来指出这一点。你对这个插件有什么体验?好吃吗?
    【解决方案3】:

    使用 Joomla! 3.0 — 如果您已经尝试了这么长时间,您应该使用专为解决此问题而构建的 Joomla! JavaScript Working Group 提供帮助。

    【讨论】:

    • “使用 X”从来都不是“我如何使用 Y 来...”问题的很好答案。而且即使 3.0 确实神奇地解决了这个问题,最好有一些关于如何解决的细节。
    • 那么@BobbyJack 你读过链接了吗?像大多数人一样,我们发现这个问题在 3.0 之前的版本中并不能真正解决,因为没有框架支持并且用户安装“自定义”扩展/插件/模板/模块来加载各种糟糕的过时 JS 库(包括 jQuery ) 并且没有办法阻止它们或检查是否加载了库。还没有“正确的方法”来做到这一点。指向专门处理该主题的链接是我的坏事。
    • @cppl:很公平。诚然,我没有阅读该链接的全文 - 我只是对基本上反驳原始问题的答案感到沮丧。而且,是的 - 根据我的其他评论 - 我知道包含他们自己版本的 jQuery 的编程不当的扩展,并且对这种行为更加沮丧......
    • @BobbyJack 我理解挫败感,每次我在 SO 上看到这个问题时都会感到沮丧(大约每隔一周......)干杯 - Craig
    【解决方案4】:

    在 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

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 2010-11-06
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2013-09-11
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多