Üdv!
Futáskor hogyan lehet megváltoztatni egy menüpont címét (title)?
Pontosabban csak hozzá szeretnék fűzni egy stringet.
Pl.:
# .module ... $item['main/messages'] = array( 'title' => 'Messages', // ... ); ...
A hook_menu_alter fv-t nézegetem, de lehet hogy nem ez kell.
Ezzel lehet ezt megoldani?
Drupal verzió:
Fórum:
title callback
Ez hasznos lehet:
http://drupal.stackexchange.com/questions/28642/change-menu-link-title-d...
Pont ezt boncolgatják.
Lényeg röviden: pl. hook_menu_alter()-rel title callback-et adsz a menüelemhez, ezzel dinamikusan tudod változtatni a címet. A title callback-kel kapcsolatban hasznos példa, ami pont a dinamikus címváltoztatásra mutat egy lehetséges módot (ha engedélyezve van a Theme developer modul, akkor a letiltás lesz a Devel menüelem linkjében, ha le van tiltva, akkor pedig az engedélyezés): https://drupal.org/node/749902#comment-2757074.
További ötleteket is a fenti linken olvashatsz.
alter
Kösz, ez működik is:
A mymodule_menu_alter() - ha jól látom - minden oldalhíváskor meghívódik automatice?
"A mymodule_menu_alter() - ha
"A mymodule_menu_alter() - ha jól látom - minden oldalhíváskor meghívódik automatice?"
Nem. A callbackek hívódnak meg, a hook_menu és hook_menu_alterekben definiált cuccok kesselődnek, nem is kicsit. Szóval menu_alterbe nem tehetsz semmilyen dinamikus dolgot.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
nem lehet?
Látom, "cache clear" estén fut csak le. Akkor ilyet nem lehet a Drupal-ban?
:(
title callback
Nekem most így működik:
Minden oldahíváskor lefut. :)
Most a korábbi megoldásodhoz
Most a korábbi megoldásodhoz képest nem változtattál túl sokat, csak annyit, hogy nem passzolsz át argumentumot a title callback-nek... Ez meg nem jelent érdemi módosítást, az említett problémák attól még felmerülhetnek. A korábbi megoldásban mondjuk amúgy is meglehetősen értelmetlen volt, hogy argumentumként passzoltad át az új címet, stringként, és aztán azt használtad fel egy az egyben... :) Ilyen alapon akkor minek a title callback?
vázlat
gondolom a posztolt kódok csak vázlatosan mutatják a megoldás miben létét.
-
clear: both;
remélhetőleg ja :)
Lehetséges, hogy így van, csak azért említettem meg, hogy ne rossz végéről fogja meg a kérdést, meg hogy a callback-re koncentráljon, ne a hook_menu_alter-ben lévő kódra (amire írta szantog is, hogy annak a tartalma cache-elődik, erre értettem, hogy az említett para felmerül, ha azzal foglalkozik), mert a "Látom, "cache clear" estén fut csak le. Akkor ilyet nem lehet a Drupal-ban? :(" megjegyzéséből úgy tűnt, még nem vágta, hogy maga a title callback hívódik meg mindig, a hook_menu_alter pedig nem - ne ott akarja átadni tehát a "dinamikusan változó" címet ;)
különbség
Az a különbség a kettő között, hogy az első esetben menu_alter()-ben használtam a 'title callback'-et, míg a második esetben a menu $items-ben.
Működik, minden oldalhíváskor lefut és szépen frissül a "title" mező.
A kód csak minta volt, a lényeget posztoltam, igen.
Köszönöm a segítséget!!
Ja, hogy a 'main/messages'
Ja, hogy a
'main/messages'
útvonalat saját modulból definiáltad? Mert akkor valóban értelmetlen a hook_menu_alter használata, amikor a hook_menu-implementációban, ugyanabban a modulban, Te magad hozod létre az egészet. :) Eddig számomra úgy tűnt, egy meglévő, más modul által definiált működést szeretnél felülbírálni (végül is az _alter-ek erre valók), de akkor valószínűleg én értettem félre. :)