【问题标题】:How can I add the jQuery library to the Joomla administration?如何将 jQuery 库添加到 Joomla 管理?
【发布时间】:2011-05-05 09:03:19
【问题描述】:

我正在使用 Joomla 1.5,我想在 joomla 的后端添加 jQuery 库,以帮助我在组件视图的设计中添加交互。

我希望将 jQuery 添加到管理的某些页面的 HEAD 部分,当然不会与 Joomla 中已包含的 MooTools 库发生冲突。

有人知道怎么做吗?

【问题讨论】:

    标签: jquery joomla joomla1.5


    【解决方案1】:

    你想知道真正的坏消息吗?为 Joomla 的管理端制作的组件通常严重依赖 MooTools(直到最近,MooTools 的一个非常古老的版本)。想知道好消息吗?如果您在 MooTools 脚本之前插入 jQuery 脚本,MooTools 将覆盖 $ 变量,但您仍然可以访问 jQuery 变量。反过来说,jQuery 将拥有 $,一些插件和模板可能会对你大喊大叫。

    那么怎么样你说呢?最简单的方法是走这条路:

    /libraries/joomla/document/html/renderer/head.php
    

    在第 129 行附近进入该文件,其中显示“生成脚本文件链接”。在它对 $document->_scripts... 数组运行 foreach 之前,插入:

    if ($mainframe->isAdmin) {
        $strHtml .= $tab.'<script type="text/javascript" src="/media/system/js/jquery.js"></script>'.$lnEnd;
    }
    

    只需将该 src 替换为您的 jquery 脚本的路径即可。现在在您的管理工具中,您将能够使用全局 jQuery var 引用 jQuery 对象,如下所示:

    jQuery('#myElement').hide();
    

    这就是为什么 Joomla 让我发疯的原因。但是,嘿..它并不是真正为开发人员构建的,它是为用户构建的。

    【讨论】:

    • 感谢您的出色回答。我只需要更改您给我的代码以检查我们是否是管理员的一部分。它是这样的: global $mainframe; if ($mainframe instanceof JAdministrator) { $strHtml .= $tab.''.$lnEnd; }
    【解决方案2】:

    恕我直言,更好的方法是像这样执行您的文档就绪功能:

    var $jq = jQuery.noConflict();
    
    jQuery(document).ready(function($){
      // your doc ready code...
    });
    

    所以它做的第一件事就是让 jQuery 进入 noConflict 模式,这实际上将“$”重新分配给“$jq”。所以不要像这样调用 jQuery:$(x).y(),你必须这样做:$jq(x).y()。这一切都很好,花花公子。事实上,您甚至不必这样做,您也可以使用“jQuery”(即 jQuery(x).y() )。 "$" 只是一个别名。

    其次,上面的 doc ready 构造传入 '$' 作为参数,这又是 jQuery 的别名,并允许您在 doc ready 回调中使用 '$'。

    希望这会有所帮助。我本来会发表评论,但我没有足够的积分或任何评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多