menu

Сниппет подменю для Drupal 6

by digital_sword from setegnom:

<?php
$menus = menu_tree_page_data('primary-links');
  $output='';
  foreach($menus as $data) {
      if(!empty($data['link']['in_active_trail'])){
        $link = theme('menu_item_link', $data['link']);
        $extra_class = NULL;
        if ($data['below']) {
          $output .= theme('menu_item', $link, $data['link']['has_children'], menu_tree_output($data['below']), $data['link']['in_active_trail'], $extra_class);
        }
        else {

Tags:

Убрать системные пункты из списка меню "Создать материал"

При создании ноды (материала) есть возможность добавить пункт в меню, чтобы нода отображалась в primary, secondary или созданном вами меню. В списке родителя нового элемента приходится все время пролистывать целую кучу, ненужных для ноды (пункты навигации) родителей.

Как убрать из этого списка, к примеру, все меню "Навигация", чтобы отображались только основные и дополнительные ссылки?

Темизация только Primary-links (span в li)

Задача вывести меню со следующими особенностями:

  • вставить span внутрь li, чтобы вставить иконку
  • переопределять hover определенным образом
  • разные стили в зависимости от языка сайта

Причем темизировать нужно было только $primary_links, но разные phptemplate_links и theme_links влияют на вывод ссылок всех меню, поэтому решил выводить отдельной функцией.

<ul id="navlist" class="links">
<li class="first">
  <span>
    <span class="cycles"><a href="#">Велосипеды</a></span>
  </span>
</li>
<li>
  <span>
    <span class="skates"><a href="#">Скейты</a></span>
  </span>
</li>
<li class="last">
  <span>
    <span class="ski"><a href="#">Коньки</a></span>
  </span>
</li>
</ul>

Подсветка родительского элемента меню (active-trail)

Добавить в template.php следующий код (взят с проекта menu_trail_by_path):

<?php
/**
* Generate the HTML output for a menu item and submenu.
*
* @ingroup themeable
*/
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
  $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
  if (!empty($extra_class)) {
    $class .= ' '. $extra_class;
  }
 
  $link_array = explode('href="', $link);
  $link_array = explode('"', $link_array[1]);
  $link_path = trim($link_array[0], '/');

Темизация Primary-links в template.php

<?php
 
function phptemplate_links($links, $attributes = array()) {
  if (!count($links)) {
    return '';
  }
 
	$tree = menu_tree_page_data('primary-links');
  foreach ($tree as $link_data) {
		if ($link_data['link']['in_active_trail']) {
			$m = array();
			$m = $link_data['below'];
			if (isset($m) and is_array($m) and count($m)) 
			$mm = menu_tree_output( $m );
		break;
	}
	}
 
	$mmm = "<div class='ul-wrapper'><div class='ul-top'></div><div class='ul-content'>\n";
	$mmm2 = "</div><div class='ul-bottom'></div></div>\n";
 

Tags:
RSS-материал