【问题标题】:Issues with Drupal 7 main menu, JQuery & Superfish in upgraded theme升级主题中 Drupal 7 主菜单、JQuery 和 Superfish 的问题
【发布时间】:2011-01-08 15:09:21
【问题描述】:

我正在将 Drupal 6 主题更新为 Drupal 7。在 Drupal 6 版本中,我有一个不错的小菜单功能,它将 JQuery 注入主菜单以使其作为下拉菜单工作(+ 一个预处理功能来获取菜单树),效果很好。

在我的主题的 Drupal 7 版本中,我在我的信息文件中调用 JavaScript,就像在 Drupal 6 中所做的那样,查看渲染页面的源代码,它并没有注入菜单本身。我调用下面的脚本以及标准的 superfish.js(它在 Drupal 6 中再次运行良好。)

   Drupal.behaviors.skyBehavior = function(context) {
  /**
   * Superfish Menus
   * http://users.tpg.com.au/j_birch/plugins/superfish/
   * @see js/superfish.js
   */
  jQuery('#navigation ul').superfish({
    animation: { opacity: 'show', height:'show' },
    easing: 'swing',
    speed: 250,
    autoArrows:  false,
    dropShadows: false /* Needed for IE */
  });
};

我相信完成所有繁重工作的线路是:jQuery('#navigation ul').superfish({ (请注意,我的菜单周围的 div id 是“#navigation”,然后<ul> 标记在此之后开始。)

我正在我的 Drupal 7 版本中运行一个预处理函数来获取主菜单的菜单树,我可以看到在 Firebug 中查看的整个树,但我可以看到 Jquery 注入的代码丢失了。

在我的 Drupal 6 主题中,我会看到:

<ul class="menu sf-js-enabled" style="visibility: hidden; display: none;">...——当然,鼠标悬停会将“显示:无”更改为“可见”。

但在我的主题的 Drupal 7 版本中,我在 Firebug 中看到的只是: <ul class="menu">...

我对 JavaScript 知之甚少,所以我希望这可能会敲响某人关于如何找到修复程序的警钟。谢谢。

【问题讨论】:

    标签: javascript jquery drupal themes superfish


    【解决方案1】:

    您可以查看Managing js in Drupal 7 以帮助您入门。建议是创建一个闭包,但我不知道这会如何影响您的代码。

    如果没有帮助,您可以通过在代码中执行 alert('message') 或类似的操作来测试行为/js 文件是否正在运行。

    【讨论】:

    • 成功了,我将发布修复它的代码。非常感谢!
    • 实际上,我仍然需要重新添加缓动、速度和动画,并且仍在努力解决这部分问题。
    【解决方案2】:

    这是基于@googletorp 发送给我的页面链接的代码:

    (function ($) {
    
      Drupal.behaviors.MyTheme = {
        attach: function(context, settings) {
          $('#navigation ul', context).superfish(function () {
    
          });
        }
      };
    
    })(jQuery);
    

    下拉菜单现在可以在 Drupal 7 中使用,但我仍然需要弄清楚如何添加用于缓动、速度和动画的代码...

    【讨论】:

      【解决方案3】:

      刚刚意识到我从未发布过工作代码。这是有效的 Drupal 7 代码:

      (function ($) {
      
      Drupal.behaviors.MyTheme = {
      
      attach: function(context, settings) {
      $('#navigation ul', context).superfish({
      
      animation: { opacity: 'show', height:'show' },
      speed: 250,
      autoArrows: false,
      dropShadows: false /* Needed for IE */
      
      });
      }};
      
      })(jQuery);
      

      【讨论】:

        【解决方案4】:

        圣牛,

        用 2 天时间解决了 jquery 循环插件的类似问题。解决方法在这里:

        http://drupal.org/node/1043478#comment-4168166

        接缝是php代码的问题。您必须像

        一样保护

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多