Menu geht verloren bei Node Detailansicht
am 03.03.2010 - 13:56 Uhr in
Tagchen
Ich habe das Problem, dass wir den Menukontext für eine Nodeansicht z.B /node/1234 verlieren.
Konkret gibt es eine View die Teaser aller Einträge vom Contenttype news auflistet. Die View hat den Pfad /news. Dazu gibts auch einen Menueintrag. Wenn ich jetzt aber eine News anschauen will /news/1234 zum Beispiel, dann verliere ich das Menu, weils zu /news1234 keinen Menueintrag gibt.
Im Moment haben wir das so gelöst, dass wir für einen Eintrag /news/1234 menu_set_active_item('news') aufrufen. Dann haben wir das richtige Menu.
Jetzt ist allergings das Problem, dass wir einen Block auf der seite /news/1234 platzieren wollen, aber natürlich das $_GET['q'] jetzt auf 'news' steht und nicht auf 'news/1234' (wegen dem menu_set_active_item()) und der Block nicht angezeigt wird.
Wie löst man dieses Problem in Drupal? Im Prinzip muss man dem Node oder am besten allen Nodes eines bestimmten Contenttypes einem Menupunkt zuweisen können. Ich hab bisher nicht rausgefunden wie das gehandelt wird.
Kann jemand weiterhelfen?
Paese
- Anmelden oder Registrieren um Kommentare zu schreiben
Probier mal das Modul Menu
am 04.03.2010 - 01:22 Uhr
Probier mal das Modul Menu Trails
Ok, das Modul sieht gut aus.
am 04.03.2010 - 11:03 Uhr
Ok, das Modul sieht gut aus. Ich werd mir den Code dazu mal anschauen.
Danke dir.
Hab mir jetzt den Code
am 04.03.2010 - 12:15 Uhr
Hab mir jetzt den Code gefischt den ich brauche. Das Modul ist mir ein bisschen zu unflexibel da nur _ein_ Menu unterstützt wird. Unten der Code wie es jetzt für mich funktioniert um alle Detaileinträge vom Typ 'news' unter dem menupfad 'news' anzuzeigen.
nodeapi_hook(&$node, $op, $a3 = NULL, $page = FALSE) {
switch($op) {
case 'view':
if ($node->type == 'news' && $page) {
$item = menu_get_item();
if ($item) {
$item['href'] = 'news'; //Menueintrag (Pfad) unter dem der Node angezeigt werden soll
menu_set_item(NULL, $item);
}
}
break;
}
}