menüpontok egyéni azonosítója

nevergone képe

Sziasztok!

A Drupal által generált menüben szeretnék a menüpontokat közrefogó <li>...</li> tagoknak egyéni azonosítót adni, ami akkor is megmaradna, ha a menüben átrendezik a sorrendjüket.
Milyen módon lehetne ez korrekten megcsinálni? Néztem a theme_menu_item függvényt, de abban nem igazán tudok értelmes azonosítót hozzárendelni, ami akkor is megmarad, ha más címre kerül az oldal.
Mivel a CSS formázást szeretnék a menüelemeken, jobb lenne listaelemet azonosítani, mint a benne szereplő linket.

Köszönöm a válaszokat! :)

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

ha jol emlekszem zenben default benne van ez az opcio.
amugy talaltam ket linket talan erdekes lehet:
http://drupal.org/node/249598
http://drupal.org/node/256863

0
0

---
Tévedni mindenkinek szabad, csak a mérnöknek észre kell vennie.

sgabe képe

A link vizsgálata nélkül nem tudsz úgy azonosítót hozzárendelni a listaelemhez, hogy az a sorrendtől függetlenül állandó legyen...akkor mi alapján döntenéd el, hogy melyik milyen azonosítót kapjon?

0
0
nevergone képe

Igen, ez igaz. De a linket érdemben nem tudom vizsgálni abban a függvényben... hogyan lehet _jól_ adatot cserélni két smink-függvény között? :)

Szerk: Globális változóval megoldottam. :)

0
0
nevergone képe

Volt egy ötletem, meglehetőst egyszerű. Arról letettem, hogy az adott menüpontokhoz tartozó felsorolás-elemek állandó azonosítót kapjanak, így arra gondoltam, hogy egyszerűen csak besorszámozom őket, hiszen a CSS -ben már így is fel tudom használni.
Egy static változó, és a sorszámozás már meg is van, viszont a bejelentkezett és a bejelentkezés nélküli felhasználóknak más menüpontok jelennek meg (Navigáció), így a számozás is eltér.
Tudnátok mutatni egy megoldást? A Zen smink nem játszik (abban sem találtam megoldást), a feladat az lenne, hogy egyes menüpontokat más (és lehetőleg állandó) CSS kiválasztókkal tudjam elérni.

0
0
Sweetchuck képe

Itt készülnek a linkek http://api.drupal.org/api/function/theme_menu_item_link/6
és rendelkezésre áll az mlid (menu link id) - Nem tudom hogy menu_rebuild után is megmarad-e.

CSS-ben valahogy ki lehet választani a szülő elemet
talán így, de itt vannak példák http://exscale.se/archives/2007/07/24/why-cant-we-select-parent-elements...
li < a#mlid-50 {

}

0
0
nevergone képe

... és megkeseríti az életed. Mi az?
IE6

(ez a css kiválasztó, ami egyébként > jel lenne, sajnos nem működik IE 6 alatt)

Az általam használt megoldás pedig az lett, hogy a theme_menu_item_link -ben kihalásztam a link címét egy globális változóba, amit a theme_menu_item -ben felhasználtam az azonosító gyártására.
Nem valószínű, hogy a legszebb megoldás, de működni látszik. És talán a link címe a legstabilabb dolog, ami felhasználható azonosító gyártására.

0
0
pp képe

ez se szép, de működik.

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;
  }
  if ($in_active_trail) {
    $class .= ' active-trail';
  }
  if (preg_match('/menu_link_\\d+/', $link,$match)) {
    return '<li class="'. $class .'" id="li_'. $match[0] .'">'. $link . $menu ."</li>\n";
  } else {
    return '<li class="'. $class .'">'. $link . $menu ."</li>\n";
  }
}
 
function phptemplate_menu_item_link($link) {
  if (empty($link['localized_options'])) {
    $link['localized_options'] = array();
  }
  $link['localized_options']['attributes']['id'] = 'menu_link_'. $link['mlid'];
  return l($link['title'], $link['href'], $link['localized_options']);
}

Érdemes lenne megvárni aboros-t is mert neki biztos lesz egy jó kis preprocessoros megoldása is.

pp

0
0
aboros képe

de sajnos nem. :(
preprocessor csak olyan dolgokhoz tartozik, amikhez van tpl file is, a preprocessor ennek készíti elő a változókat. amihez nincs tpl (pl egy menü-elem) ahhoz nincs preprocessor se.

egyébként a menüelemek li-jeinek se a zen, se a framework, se a garland nem ad egyedi azonosítót, megnéztem, pedig elég logikus lenne és sminkeléskor gyakran hasznos is. ez van.

0
0

-
clear: both;

Paal képe

Volt már hasonló téma. Az a probléma, hogy ez csak első-, és másodlagos menüre működik:
http://drupal.hu/forum/grafikus-men%C3%BCh%C3%B6z-id
http://drupal.hu/forum/grafikus-men%C3%BCh%C3%B6z-id#comment-10479

Az elsődleges menüvel meg ugye az a gond, hogy a gyermekei nem jelennek meg.

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

aboros képe

ha az elsődleges menüd menüpontjainak vannak almenüi, akkor az első- és másoldagos linkek forrását is ugyan arra a menüre állítva megjelennek. amikor kell.

0
0

-
clear: both;

Paal képe

Jó, de ha blokkba szeretnéd tenni a menüt, akkor már nem fog működni. Arra kellene valami általános megoldás szerintem a menu.module-ban.

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan