【问题标题】:Drupal 6: Printing Unadulterated Primary Links and all childrenDrupal 6:打印纯主链接和所有子链接
【发布时间】:2011-02-17 22:35:33
【问题描述】:

世界上怎么可能?我发誓,我已经阅读了相当于 3 部百科全书的内容,但无济于事。我已经尝试过区域、page.tpl.php 和块内的解决方案。他们都没有给我我需要的东西......而且我知道还有很多其他人也需要这个!

我得出的结论是,我想在 page.tpl.php 中打印出菜单……所以请不要阻止解决方案。

我希望能够遍历主菜单链接(AND 子项)并重写输出,以便没有默认的 Drupal 类标记。我找到的最接近的是这个例子:

<?php if (is_array($primary_links)) : ?>
<ul id="sliding-navigation">
<?php foreach ($primary_links as $link): ?>
<li class="sliding-element"><?php        
        $href = $link['href'] == "<front>" ? base_path() : base_path() . drupal_get_path_alias($link['href']);
        print "<a href='" . $href . "'>" . $link['title'] . "</a>";            
        ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

如您所见,链接正在重印,并带有自定义的 UL 和 LI 类……太棒了!但是,没有儿童被打印。我将如何扩展此代码以使所有孩子都成为列表的一部分?注意:我不希望孩子们只出现在他们的父页面上,他们必须一直在场。不然我规划的下拉菜单也没用。

在此先衷心感谢您减轻了我的巨大头痛!

【问题讨论】:

    标签: drupal menu drupal-6 submenu


    【解决方案1】:

    一旦输出到 page.tpl 就很难影响输出 - 你最好寻找 template.php 函数。

    这是我用来改变我的主要链接的类的:

    function primary_links_add_icons() {
      $links = menu_primary_links();
      $level_tmp = explode('-', key($links));
      $level = $level_tmp[0];
      $output = "<ul class=\"links-$level\">\n";   
      if ($links) {
        foreach ($links as $link) {
            $link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
            $output .= '<li class="sublevel">' . $link .'</li>';
        };
        $output .= '</ul>';
      }
      return $output;
    }
    

    然后在 page.tpl.php 我只是这样称呼它:

    <?php if ($primary_links) :?>
        <?php print '<div id="menu">'; ?>
        <?php print primary_links_add_icons(); ?>
        <?php print '</div>'; ?>
    <?php endif;?> 
    

    【讨论】:

    • 现在这会影响 Drupal 中的所有菜单吗?我在覆盖这样的链接时遇到的一个问题是,它甚至影响了我侧边栏中的链接……烦人。
    • 不,这只会影响您的主链接——因为 template.php 函数只处理这些。您是否使用了此代码并且是效果?
    • 我很抱歉...在过去的一周里,我看到了许多类似的功能,它们都在我的脑海中融合在一起。 “primary_links_add_icons”只影响主链接,是的。谢谢。
    • 没有问题 - 我在这个网站上收到了很多建议,所以很高兴能够回馈一些东西!
    【解决方案2】:

    我必须在我的链接中添加&lt;span&gt; 以进行样式设置,因此我在includes/theme.inc 中覆盖了theme_links() 您可以将该函数复制到您的 template.php,将其重命名为 yourthemename_links(),并根据需要进行修改。 此函数输出 ul、li 标签、drupal_attributes、'first'、'last'、'active' 等类别,并影响整个站点的菜单。

    如果您需要以不同的方式输出主要和次要,您可能还想查看includes/menu.inc 中的函数,包括theme_menu_local_tasks() 和menu_local_tasks()。 马克LNH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2013-10-07
      • 2015-03-07
      相关资源
      最近更新 更多