2013-03-06 3 views
0

Это то, что теперь имеет модуль для базового переключения окна входа.drupal 6 добавление модуля jQuery

Drupal.logintoboggan_toggleboggan = function() { 
    $("#toboggan-login-link").click(
    function() { 
     $("#toboggan-login").slideToggle("fast"); 
     this.blur(); 
     return false; 
    } 
); 
}; 

Это то, что у меня есть работы для того, что мне нужно, чтобы внутри модуля. я просто хочу переместить его вне без модификации самого модуля.

Drupal.logintoboggan_toggleboggan = function() { 
    $("#toboggan-login-link").click(
    function() { 
     $("#toboggan-login").slideToggle("slow", function() { 
     if($(this).css('display') == 'block'){ 
       $("#art-main").append('<div class="outer-login"></div>'); 
        $(".outer-login").click(function() { 
          $("#toboggan-login").slideToggle("fast"); 
          $(this).remove(); 
        }); 
     } else{ 
      $(".outer-login").remove(); 
     } 
     }); 


     this.blur(); 
     return false; 
    } 
); 

я попытался с помощью снята с охраны, чтобы удалить файл loggintoboggan.js, но с модулем обновления JQuery установлен, не работает.

ответ

0

Создайте собственный модуль с более высоким весом, чем модуль loggintoboggan. Этот модуль добавляет JS-файл, в котором он перезаписывает интересующую вас функцию JS. Ключ заключается в том, что ваш пользовательский JS-файл загружается после того, как loggintoboggan имеет возможность загрузить JS-файлы.

Вот как выглядит ваш файл .install. Он уверен, ваш модуль вызывается после loggintoboggan

/** 
* Implementation of hook_enable 
* @file your_module_name.install 
* @see http://drupal.org/node/110238 (http://drupal.org/node/110238) 
*/ 
function your_module_name_enable { 
    // Find out the weight of the logintoboggan module 
    $weight = db_result(db_query("SELECT weight FROM {system} WHERE name = '[logintoboggan]'")); 

    // Set our module to a weight 1 higher 
    db_query("UPDATE {system} SET weight = %d WHERE name = '[your_module_name]'", $weight + 1); 
} 

Ваш файл .module очень просто, добавляет файл JS.

/** 
* @file your_module_name.module 
* @see http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_init/6 
*/ 
function your_module_name_init() { 
    drupal_add_js(drupal_get_path('module', 'your_module_name') . '/your_module_name.js'); 
} 

В файле .js убедитесь, чтобы добавить перезаписаны функцию. Я не гуру JS, но это должно быть так.

// Make a backup, maybe we'll need the original implementation 
var orig_logintoboggan_toggleboggan = Drupal.logintoboggan_toggleboggan; 

// Overwrite the function 
Drupal.logintoboggan_toggleboggan = function() { 
    // ... new implementation ... 
}; 

Так вы пользовательский модуль должен иметь следующую структуру:

cd your_module_name/ 
.. your_module_name.install 
.. your_module_name.module 
.. your_module_name.js 

Очистить кэш Drupal и кэш браузера, чтобы убедиться, что все файлы JS загружаются правильно.

+0

Я пробовал эту настройку и проверял, чтобы пользовательский файл js-модуля загружался до logintoboggan.js, но это не превзошло файл санчага js, который он все еще читает, несмотря на это. Я даже дошел до того, что добавил функцию js_alter и отключил logintoboggan.js в модуле, но это также не работает. – PH83

+0

Ваш js-файл должен быть загружен ** после ** файла 'logintoboggan.js', а не _before_. это очень важно. Будет использовано последнее объявление функции. Поэтому, когда вы просматриваете источник, он должен выглядеть следующим образом: 'logintoboggan.js', а затем' your_module_name.js' – Max

+0

файл js для модуля, где изменения, в которые помещается, загружаются сначала перед любым другим js-файлом. – PH83

Смежные вопросы