core funkció felülírása

Pál úr képe

Üdv,

azt hittem, értem, hogy ha egy ZEN-ből készített sminkben a template.php-ben definiálok egy változót

function zwibak_preprocess(&$vars, $hook) {
	$vars['primary_links_tree'] = zwibak_menu_tree(variable_get('menu_primary_links_source', 'primary-links'));
}

majd azt a page.tpl.php-ban használom, akkor a template.php-ban létre kell hoznom a hozzá tartozó függvényeket is.

function zwibak_menu_tree($menu_name = 'navigation') {
  static $menu_output = array();
 
  if (!isset($menu_output[$menu_name])) {
    $tree = menu_tree_page_data($menu_name);
    $menu_output[$menu_name] = zwibak_menu_tree_output($tree);
  }
  return $menu_output[$menu_name];
}
 
function zwibak_menu_tree_output($tree) {
  $output = '';
  $items = array();
 
  // Pull out just the menu items we are going to render so that we
  // get an accurate count for the first/last classes.
  foreach ($tree as $data) {
    if (!$data['link']['hidden']) {
      $items[] = $data;
    }
  }
 
  $num_items = count($items);
  foreach ($items as $i => $data) {
    $extra_class = NULL;
    if ($i == 0) {
      $extra_class = 'first';
    }
    if ($i == $num_items - 1) {
      $extra_class = 'last';
    }
    $link = theme('menu_item_link', $data['link']);
    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 {
      $output .= theme('menu_item', $link, $data['link']['has_children'], '', $data['link']['in_active_trail'], $extra_class);
    }
  }
  return $output ? theme('menu_tree', $output) : '';
}

A cél az lenne, hogy bele tudjak írni a menu_tree_output függvénybe, mert kellene bele még vagy 2 div, hogy normálisan sminkelni lehessen.

Ám ahelyett, hogy az így megjelenítendő elsődleges menük megjelennének, nem teszik ezt. Ha kikommentezem a két utolsó funkciót, és a változónál az eredeti,

	$vars['primary_links_tree'] = menu_tree(variable_get('menu_primary_links_source', 'primary-links'));

sor marad benn, akkor hibátlanul működik.

Mit rontok el?

Kösznöm,

Pál

Drupal verzió: 
Fórum: 
aboros képe

valószínűleg csak egy sminkfunkciót kell megvalósítanod majd, de kéne tudni, hogy pontosan hova akarod azt a plusz divet, mert majd attól függ melyik sminkhurkot kell használnod.
devel modul theme developer része egyébként kiváló segítség ilyenkor.

0
0

-
clear: both;

Pál úr képe

Szóval:

most így van a kimenet:

<li class="expanded"><a href="/mit-teszunk" title="Programjaink">Mit teszünk?</a>
<ul class="menu"><li class="leaf first"><a href="/hirek/helyi-termekekkel/helyi-termekekkel-egeszsegesen" title="Helyi termékekkel egészségesen">Helyi termékekkel</a></li>
[...]</ul></li>, vagyis az "expanded" tulajdonságú "főmenűpont" almenüpontjai egyetlen "menu" tulajdonságú számozatlan listában vannak, ez jó, de a számozatlan lista köré szükségem lenne két div-re, hogy változó szélességű kerettel tudjam körbevenni. (Valahogy így lenne jó, ha a végén kinézne:
 
<li class="expanded"> 
....
 
<div class="pri_sec_outer"><div class="pri_sec_inner"><ul class="menu"><li>
...
 </li></ul></div></div></li>
)

Ezalapján http://drupal.org/node/283723 gyanítom, hogy nem sminkelhető, és ezalapján http://drupal.org/node/640718 próbáltam eljárni...

P.

0
0
aboros képe

eredeti:

function theme_menu_tree($tree) {
  return '<ul class="menu">'. $tree .'</ul>';
}

http://api.drupal.org/api/function/theme_menu_tree/6
menu_tree_output is ezt hívogatja, ha megnézed.

neked egy ilyen változat kell:

function SMINKNEVE_menu_tree($tree) {
  return '<div class="menu-outer"><div class="menu-inner"><ul class="menu">'. $tree .'</ul></div></div>';
}

mondjuk ez minden menu lista köré pakol majd diveket, de az nem nagy baj. illetve ez nyilván a kerettől is függ, de én így hirtelen nem vagyok abban biztos, hogy egy változó magasággú kerethez kellenek plusz divek. ott az ul, a benne lévő első li is megvan meg az utolsó is, mindegyiknek van jól osztálya, azokhoz is kötheted a keret.
0
0

-
clear: both;

Pál úr képe

Valóban, elég volt. A többi már CSS kérdés, de az nem ide tartozik.

P.

0
0