node/add/tartalomtípus MENU_LOCAL_TASK-ként

fox mulder képe

Van pl.: egy 'csoport' tartalomtípus, és egy 'csoportok' szótár. Minden 'csoport' típusú node-hoz tartozik egy kifejezés a 'csoportok' szótárban. Van egy 'tag' tartalomtípus is, ez a 'csoportok' szótár kifejezéseit használja. Vagyis az új tagot beküldő űrlapon van egy 'csoportok' nevű select, melynek name attributuma: taxonomy[csoportok_vid]. Minden 'csoport' típusú node tartalmaz egy ilyen linket: 'Új tag hozzáadása ehhez a csoporthoz'. A linkre kattintva a node/add/tag lapra jutunk, ahol a csoportok select mező már ki van töltve. Erre a célra a Prepopulate modult használom és a link így néz ki:
<a href="http://.../node/add/tag?edit[taxonomy][csoportok_vid]=csoport_tid"
A kérdésem az, hogyan tudnék sima link helyett új tab fület használni (MENU_LOCAL_TASK), megspékelve azzal, hogy ez a tab csak a 'csoport' típusú tartalmak esetén jelenjen meg.

Drupal verzió: 
fox mulder képe

function modulneve_menu() {
$items['node/%node/add_tag'] = array(
...
'page callback' => 'modulneve_add_tag',
'page arguments' => array(1),
...
);
}
function modulneve_add_tag($node) {
drupal_goto('node/add/tartalomtipus', '...');
}

Azért félmegoldás, mert nem csak bizonyos tartalomtípusok esetén jelenik meg. Ezt hogyan tudnám elérni? A hook_info()-ban tartalomtípusonként más-más 'module' értéket adtam meg, de nem működik a hook_infoban_megadott_module_név_menu().

0
0

Fox Mulder

pp képe

van egy olyan, hogy "access callback" ennél tudod ezt kontrollálni.

function modulneve_menu() {
$items['node/%node/add_tag'] = array(
...
'page callback' => 'modulneve_add_tag',
'page arguments' => array(1),
'access callback' => 'modulneve_access_menu_tag',
'access arguments' => array(1),
);
}
 
function modulneve_access_menu_tag($node) {
  // ezt azért még érdemes cizellálni, hogy van-e egyáltalán joga új tagot felvenni stb.
  if($node->type == 'tag') {
    return TRUE;
   }
}
 
function modulneve_add_tag($node) {
//drupal_goto('node/add/tartalomtipus', '...');
// itt meg, ha már tab akkor toljuk ki a formot.
return drupal_get_form('tag_node_form');
}

pp

0
0
fox mulder képe

:) It vörksz.

0
0

Fox Mulder