Как добавить библиотеку jQuery в администрацию Joomla? - PullRequest
1 голос
/ 05 ноября 2010

Я использую Joomla 1.5, и я хотел бы добавить библиотеку jQuery в бэкэнд joomla, чтобы помочь мне добавить взаимодействие при проектировании представлений моих компонентов.

Я бы хотел, чтобы jQuery был добавлен в раздел HEAD на некоторых страницах администрирования и, конечно, не конфликтовал с библиотекой MooTools, которая уже включена в Joomla.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Хотите узнать действительно плохие новости? Компоненты, созданные для админской стороны Joomla, часто сильно зависят от MooTools (до недавнего времени очень древняя версия MooTools). Хотите узнать хорошие новости? Если вы вставите сценарий jQuery перед сценарием MooTools, MooTools переопределит переменную $, но у вас все равно будет доступ к переменной jQuery. Делая это наоборот, jQuery будет владеть $, и некоторые плагины и шаблоны, вероятно, будут кричать на вас.

Так как говорите? Самый простой способ - пойти по этому пути:

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

Перейдите в этот файл прямо вокруг строки 129, где написано «Создать ссылки на файлы скриптов». Прежде чем запустить foreach над этим массивом $document->_scripts..., вставьте:

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

И просто замените этот src на путь к вашему скрипту jquery. Теперь в вашем админ-инструменте вы сможете ссылаться на объект jQuery с помощью глобальной jQuery var, например:

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

И именно поэтому Joomla стремится сводить меня с ума. Но эй .. на самом деле он не был создан для разработчиков, он был создан для пользователей.

1 голос
/ 05 ноября 2010

Лучший способ, IMHO, это сделать функцию готовности документа следующим образом:

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.

Надеюсь, это поможет.Я бы написал как комментарий, но у меня недостаточно очков или что-то еще, чтобы комментировать.

...