Identyfikatory dla elementów menu
arturpl, ndz., 2008-08-31 22:15
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 :)

Objaśnij
archetwist, sob., 2008-09-06 17:07 moderatorNie rozumiem. Objaśnij :) .
design www drupal
Moze mi sie tylko wydaje,
arturpl, ndz., 2008-09-07 07:16Moze 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:
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
Menu Items Unique ID or
archetwist, ndz., 2008-09-07 18:08 moderatordesign www drupal
To już prawie osiągnąłem w
arturpl, pon., 2008-09-08 00:46To 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/menu/item/edit/83
i teraz chciałbym aby kod dla tego item wyglądał wtedy tak na stronie:
w tym przykładzie który podałeś arche, wygląda kod tak:
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
A nie wystarczy w Twoim
archetwist, śr., 2008-09-10 06:07 moderatorA nie wystarczy w Twoim kodzie za
$linkpodstawić$mid? Tej funkcjimenu_item_linknie znalazłem w Drupal API…design www drupal