展开主链接

时间:2010-08-05 23:37:17

标签: drupal drupal-6 menu

如何在HTML中输出主要链接的子项?只有我的父级主链接正在生成LI。

我有一个非常简单的两级主链接菜单。网站上有5页:三个父母,第三个父母有两个孩子。在管理菜单设置中,我选中了父母和孩子的“扩展”复选框。

我尝试将stackoverflow(包括Drupal 6: Printing Unadulterated Primary Links and all children)和drupal以及其他地方的各种函数添加到template.php中,让孩子们输出......没有!

如何扩展主链接?这似乎是一个愚蠢的问题。为什么不检查'expand'复选框打印孩子?

5 个答案:

答案 0 :(得分:4)

直接解决您的问题。对于Drupal 6:

<?php 
  // gets whatever is set as the primary menu source, 
  // prints the whole tree, 
  // pays attention to expanded settings
  $menu_name = variable_get('menu_primary_links_source', 'primary-links');
  print menu_tree($menu_name);
?>

然后我将它包装在“primary”div id中,在我的page.tpl.php和page-front.tpl.php中

如果您希望它们开始布局而不是折叠,请记住设置要扩展子项的每个菜单项。 /管理/构建/菜单

此解决方案将在此页面上注意您的设置:/ admin / build / menu / settings

有关详细信息,请参阅此页面上的Drupal 6代码http://drupal.org/node/68578

问题是显示主菜单的所有子项,因此辅助菜单无关紧要,但可以将其设置为指向主菜单的第2级,如上面的链接所述。

答案 1 :(得分:2)

无论配置设置如何,在page.tpl.php中使用主题('links',$ primary_links)时,我无法获得主要链接来打印他们的孩子。

相反,经过数小时的搜索,我在drupal.org上找到了这个页面,其中提到主要链接的输出方式会有所不同,具体取决于它们是用作主题中的链接还是用作块:

http://drupal.org/node/187932

这是关于主要链接“扩展”选项在被用作主题选项而不是作为块时可能显示为“不工作”的讨论。当用作块时,主链接将显示您设置的列表的完整层次结构,包括子项。在主题中使用时,除非您覆盖主要链接显示主题的默认设置,否则它将仅列出顶级主链接。这就是Mark上面提到的默认行为,以及我遇到的情况。

为了解决我的问题,我只是简单地使用代码从页面模板中打印出菜单,然后在我的模板中为代码所在的区域分配主链接。

所以代替:

<div id="nav">          
     <?php if ($primary_links): ?>
        <div id="primary">
          <?php print theme('links', $primary_links); ?>
        </div> 
      <?php endif; ?>

      <?php if ($secondary_links): ?>
        <div id="secondary">
          <?php print theme('links', $secondary_links); ?>
        </div> 
      <?php endif; ?>
</div>

我现在有:

  <div id="nav">
  <?php if ($navigation): ?>
    <?php print $navigation ?>
  <?php endif ?>
 </div>

AND在我的.info文件中为“导航”指定了一个区域, 并转到块设置并将“主链接”分配给我的新导航区域。

为了摆脱输出到我的新导航区域的无关代码,我还为该区域创建了一个新的块模板,它只输出块的内容,而没有任何额外的包装div或标题标记。我最终得到了一个非常整洁的导航无序列表,我希望其他任何对drupal不熟悉并且在这个问题上挣扎的人都会发现我的个人工作有用。

答案 2 :(得分:0)

主要链接的显示方式取决于您的主题。如果不了解您的主题以及它如何实现主要链接,就不可能确定您的主要链接没有扩展的原因。

您可以检查的一件事是菜单设置;在许多主题中,第二级是一个名为辅助链接的单独菜单。您可以通过转到http://example.com/admin/build/menu/settings并将辅助链接的来源设置为主要链接来更改此功能:这将显示主要链接菜单的第二级(可能是空的)辅助链接菜单。

答案 3 :(得分:0)

我相信Menu block模块可以满足您的需求。有关此模块的更多详细信息(来自其项目页面):

  

那么......你有没有使用过你主题的主要和次要菜单链接功能,并想知道“我到底该如何显示比这更深的菜单项?”

     

嗯,这就是这个模块的作用。它提供可配置的菜单树块,从任何级别的菜单开始。还有更多!

     

因此,如果您只使用主题的主菜单链接功能,则可以添加和配置“主菜单(级别2+)”块。一旦您进入主菜单的某个页面,该块就会出现,并显示主菜单的第二级(和更深层)的菜单树,并在您遍历树时展开。您还可以限制菜单树的深度(例如“主菜单(级别2-3)”)和/或展开所有子子菜单(例如“主菜单(扩展级别2 +)”)。

答案 4 :(得分:0)

这篇精彩的博客文章将告诉您如何以编程方式获取主要链接(包括儿童)的整个树结构,甚至可以向您展示整理此结构以便于使用的方法。

http://jamesmorrish.co.uk/blog/get-a-clean-array-of-primary-links-in-drupal/