Drupal 6: печать первичных ссылок без изменений и всех дочерних элементов - PullRequest
4 голосов
/ 11 мая 2010

Как в МИРЕ возможно? Клянусь, я прочитал эквивалент 3 энциклопедий безрезультатно. Я пробовал решения внутри регионов, page.tpl.php и блоков. Никто из них не дает мне то, что мне нужно ... и я знаю, что так много других людей тоже нуждаются в этом!

Я пришел к выводу, что я хочу распечатать меню в моем page.tpl.php ... так что, пожалуйста, никаких блочных решений.

Я хочу иметь возможность циклически проходить по ссылкам основного меню (и дочерним элементам) и переписывать вывод, чтобы не было тегов по умолчанию для класса 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 ... это здорово! Однако детей не печатают. Как бы я расширил этот код, чтобы все дети были частью списка? ПРИМЕЧАНИЕ. Я не хочу, чтобы дети появлялись только на родительской странице, они должны присутствовать постоянно. В противном случае запланированное выпадающее меню бесполезно.

Искренне благодарю вас за то, что уменьшили мою колоссальную головную боль!

Ответы [ 2 ]

5 голосов
/ 11 мая 2010

Трудно повлиять на вывод, как только он достигнет 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;?> 
1 голос
/ 11 мая 2010

Мне пришлось добавить <span> к моим ссылкам для стиля, поэтому я переопределил theme_links () в include / theme.inc Вы можете скопировать функцию в ваш template.php, переименовать ее в yourthemename_links () и изменить ее при необходимости. Эта функция выводит теги ul, li, drupal_attributes, классы «first», «last», «active» и т. Д. И влияет на меню по всему сайту.

Вы также можете проверить функции в include / menu.inc, в том числе theme_menu_local_tasks () и menu_local_tasks (), если вам нужно вывести основной и дополнительный по-разному. MarkLNH

...