Identyfikatory dla elementów menu

Szukałem szukałem i znalazłem sposób żeby każdy element listy w menu miał swój styl. Może komuś się to przyda.

W pliku template.tpl.php swojego stylu wrzucamy coś takiego:

function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
  $link = menu_item_link($mid);
  // zmieniamy na małe litery i robimy porządek z pl znakami
  $css_id = strtolower(str_replace(array("ą","ć","ę","ł","ń","ó","ś","ź","ż"," "),array("a","c","e","l","n","o","s","z","z","_"), strip_tags($link)));
  return '<li id="' . $css_id . '" class="' . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'">'. $link . $children ."</li>\n";
}

w ten sposób powstaje mi takie menu

<ul class="menu">
<li id="moj_blog" class="leaf"><a href="/blog/ak">Mój blog</a></li>
<li id="moje_konto" class="leaf"><a href="/u/ak">Moje konto</a></li>
<li id="skrzynka" class="leaf"><a href="/poczta/odebrane">Skrzynka</a></li>
<li id="dodaj_zawartosc" class="expanded"><a href="/node/add">Dodaj zawartość</a>
<ul class="menu">
<li id="ankieta" class="leaf"><a href="/node/add/poll">Ankieta</a></li>
<li id="artykul" class="leaf"><a href="/node/add/artykul">Artykuł</a></li>
<li id="grupa" class="leaf"><a href="/node/add/grupa">Grupa</a></li>
</ul>
</li>
<li id="zarzadzaj" class="collapsed"><a href="/admin">Zarządzaj</a></li>
<li id="wyloguj" class="leaf"><a href="/wyloguj">Wyloguj</a></li>
</ul>

Od teraz każdy element listy ul o klasie menu ma swój identyfikator id:) Możemy go zatem teraz dowolnie ostylować :)

może ktoś wie jak wyciągnąć id elementu listy menu żeby go potem wstawić jako

<li id="element-ID" class="leaf">

To jest kwestia zmiany tych paru linijek w kodzie.

$link = menu_item_link($mid);
 // zmieniamy na małe litery i robimy porządek z pl znakami
  $css_id = strtolower(str_replace(array("ą","ć","ę","ł","ń","ó","ś","ź","ż"," "),array("a","c","e","l","n","o","s","z","z","_"), strip_tags($link)));

w moim kodzie, tylko nie wiem co w nie wpisać. Jeśli gdzieś strzeliłem w kodzie babola przepraszam :)

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.
Portret użytkownika archetwist

Objaśnij

moderator

może ktoś wie jak wyciągnąć id elementu listy menu żeby go potem wstawić jako

Nie rozumiem. Objaśnij :) .

Moze mi sie tylko wydaje,

Moze mi sie tylko wydaje, ale chyba kazdy element menu ma jakis swoj identyfikator liczbowy? Zalozmy elementy ponizej maja identyfikatory 89 i 34, chcialbym aby kod tych elementow listy wygladal tak:

<li id="menu-89" class="leaf">aktualnosci</li>
<li id="menu-34" class="leaf">konkursy</li>

Moje pierwsze zaproponowane rozwiazanie bylo dobre, ale co jesli zmienie nazwe w menu? Wtedy musze tez grzebac w stylach, a id liczbowy jest chyba niezmienny, wiec jesli mozna to uproscic to czemu tego nie zrobic?

ak

To już prawie osiągnąłem w

To już prawie osiągnąłem w tym 1 przykładzie, mnie chodzi o inne ID.

To może tak:

Jak biorę edycję pozycji menu „Formularz kontaktowy” to mam adres:

/admin/build/me­nu/item/edit/83

i teraz chciałbym aby kod dla tego item wyglądał wtedy tak na stronie:

<li id="item-83" class="leaf"><a href="/kontakt"><span>Formularz kontaktowy</span></a></li>

w tym przykładzie który podałeś arche, wygląda kod tak:

<li id="item-formularz-kontaktowy" class="leaf"><a href="/kontakt"><span>Formularz kontaktowy</span></a></li>

wtedy, gdy mam te numery, mogę łatwiej tworzyć style css dla tych elementów bo łatwiej jest przewidzieć id, a jak jest id tekstowe to przy zmianie nazwy pozycji trzeba pamiętać o zmianie w stylach nazwy identyfikatora.

ak

Portret użytkownika archetwist

A nie wystarczy w Twoim

moderator

A nie wystarczy w Twoim kodzie za $link podstawić $mid? Tej funkcji menu_item_link nie znalazłem w Drupal API…