0

这就是模块现在用于登录框的基本切换的内容。

   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;
    }
  ); 

我曾尝试使用 unset 删除 loggintoboggan.js 文件,但安装的 jquery 更新模块无法正常工作。

4

1 回答 1

1

创建一个比模块具有更高权重的自定义loggintoboggan模块。这个模块添加了一个 JS 文件,它覆盖了您感兴趣的 JS 函数。关键是确保loggintoboggan在更改加载它的 JS 文件之后加载您的自定义 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 文件。

于 2013-03-06T23:20:45.493 回答