hook_menu() dinamikus megvalósítása

crt képe

Sziasztok.

Fejlesztek egy modult, ahol szükség van a taxonomy listázó oldalakon elhelyezni két menu tab-ot, amik további szűrési feltételeket biztosítanak. Így néz ki a megvalósítás:

function modulom_menu() {
  $items = array();
  $items['taxonomy/term/%/parameter'] = array(
    'title' => t('Filter'),
    'page callback' => 'taxonomy_term_page',
    'page arguments' => array(2),
    'access arguments' => array('access content'),
    'type' => MENU_LOCAL_TASK,
   );

Azt szeretném megoldani, hogy csak bizonyos kategóriák esetén jelenjenek meg a menü tab-ok, viszont a menü cache-elése miatt hiába teszek feltételt a hook_menu()-be. Átnéztem a drupal.org-on és az api oldalon a menüvel foglalkozó részeket de elfogytak az ötleteim. Egy kis iránymutatást szívesen vennék.

EIK: Zoli

Drupal verzió: 
pp képe

Mi lenne, ha a %-kot lecserélnéd a megfelelő tid-re. Ekkor ugyan telefosod a menu táblát, de nem fogja keselni. (persze kérdés hány term-ed van, 50 felett lehet, nem kérne ;))

pp

0
0
crt képe

Szia.

Köszönöm a választ, mivel a term-eket a tulajdonos fogja feltölteni és bővíteni, így nem tudom előre felvinni őket.

Viszont sikerült megoldani amit szerettem volna, kigyűjtöttem a szükséges tid-eket egy tömbbe és egy ciklussal valósítottam meg a menu tab-ok hozzáadását az eredeti felállás helyett.
Ezt követően még meg kellett oldani, hogy egy új term felvitelekor a tömbbe bekerüljön a felvitt term tid-je és lefusson a menu_rebuild(). Ezekhez a hook_taxonomy() hurkot használtam.

Azt viszont nem értettem, hogy ha tele van a menü tábla, miért ne cache-elne, úgy is teszi azt szépen.

Üdv: Zoli

0
0
Tgr képe

Wildcard loader? Ha hamis értékkel tér vissza, akkor nemlétezőnek tekinti az adott oldalt, gondolom ilyenkor nem jelenik meg a fül.

Vagy írsz saját access callback-et, ami figyelembe veszi az aktuális URL-t.

0
0
crt képe

Szia.

Köszönöm a választ, próbáltam ezekkel a módszerekkel is, de nem hoztak eredményt. Fentebb megírtam, hogy hogy sikerült megoldani.

Üdv: Zoli

0
0
Sweetchuck képe

Esetleg Views-szal kéne csinálni a listázást.

Ha mégis a menüvel akarsz szórakozni.
Én 2 dolgot próbálnék meg elsőnek
Első.)
Az alapértelmezett 'access callback' felülírása egy saját függvénnyel ami megkapja a TID-et (index:2)

$terms = taxonomy_terms_parse_string($str_tids);
return ($terms == 'olyan tömb ami kell' AND user_access('access content'));

Ez esetben hozzáférési jog miatt nem fog megjelenni a tab.

Második.)
Közben rájöttem hogy ez hülyeség :)
-----------------------

Kérdés

//Miért ez a callback??
'page callback' => 'taxonomy_term_page',
 
//Miért nem kapja meg a harmadik indexen lévő értéket??
'page arguments' => array(2),
0
0
crt képe

Views-t nem használok, ha nem muszáj... :)

Első: tényleg nem működött.

Válaszok:
Mert egy taxonomy listázó oldalt hív meg a menu tab, de sajátot, csak rosszul írtam be ide: 'modulom_taxonomy_term_page'.
A második kérdésed sajnos nem értem, megkapja a tid értékét a callback függvény.

Üdv: Zoli

0
0