[gelöst] Brotkrumen (Breadcrumbs) beim Bearbeiten (/edit) von Nodes und Kommentaren

am 25.01.2011 - 17:11 Uhr in
Hallo,
habe dieses Thema schon im englischen Forum zum Custom Breadcrumbs Modul gepostet. Habe für mich jetzt einen Workaround gefunden:
Ich erstelle für jeden Inhaltstype einen Custom Breadcrumb for Path mit:
Pfad:
*/edit
Sichtbarkeit: (geht bei mir nur ohne php-Syntax)
return ((node_load((int)str_replace(array('/','node','edit') ,'',$_SERVER["REQUEST_URI"]))->type) == 'forum');
Titel:
<?php
$node = node_load((int)str_replace(array('/','node','edit') ,'',$_SERVER["REQUEST_URI"]));
$titel=$node->title;
$forum=$node->taxonomy[$node->tid]->name;
return array(Forum,$forum,$titel,bearbeiten);
?>
Pfade:
<?php
$node_id = (int)str_replace(array('/','node','edit') ,'',$_SERVER["REQUEST_URI"]);
$node = node_load($node_id);
$foren_id=$node->tid;
return array(forum,"forum/".$foren_id,"forum/".$node_id,$_SERVER["REQUEST_URI"]);
?>
Diese Lösung funktioniert bei mir für alle Nodes.
Leider kann man für Kommentare ja nicht die Funktion node_load() benutzen und comment_load() funktioniert bei mir nicht. Es kommt die Fehlermeldung:
Fatal error: Call to undefined function comment_load() in /var/www/drupal/includes/common.inc(1695) : eval()'d code on line 8
Hat jemand eine Idee wie man dies auch für das Bearbeiten von Kommentaren machen könnte?
- Anmelden oder Registrieren um Kommentare zu schreiben
Vielleicht hilft dir
am 27.01.2011 - 13:19 Uhr
Vielleicht hilft dir das?
http://drupal.org/node/252857
P.S. Brotkrumen Navi hört sich ausgesprochen merkwürdig an, bei manchen Begriffen bleibe ich lieber beim englischen .. :-)
Kleinigkeiten
am 27.01.2011 - 13:45 Uhr
Ja, Breadcrumbs klingt schon besser, aber da wir ja im deutschen Forum sind und meine Suchen zu beiden "Schreibweisen" Treffer ergaben, dachte ich mir... egal;-)
Hab mir den Patch mal kurz angeschaut. Auch wenn ich das Modul "akismet" nicht verwende, meinen Fehler hab ich entdeckt. Die Funktion heißt _comment_load() und nicht wie oft beschreiben comment_load(). Ja, auf die "_" Kleinigkeiten kommt es eben an.
Nun bekomme ich also auch, die zu den Kommentaren gehörige Node (nid).
Besten Dank!
255 Zeichen Limit
am 27.01.2011 - 15:07 Uhr
So, hab es gerade Probiert. Müsste eigentlich auch alles so klappen, nur leider bin ich mit meinem php-Code über dem Limit von 255 Zeichen. Hab schon probiert den Code zu kürzen, aber so stark... das geht nicht.
Hier mein momentaner (viel zu langer) Code:
Pfad:
comment/edit/*
Sichtbarkeit:
preg_match('/\d+/',$_SERVER['REQUEST_URI'],$comment_id);
$node_id=_comment_load($comment_id[0])->nid;
return (node_load($node_id)->type == 'forum');
Titel:
<?php
preg_match('/\d+/',$_SERVER['REQUEST_URI'],$comment_id);
$comment_titel=_comment_load($comment_id[0])->subject;
$node_id=_comment_load($comment_id[0])->nid;
$node_titel=node_load($node_id)->titel;
$forum=node_load($node_id)->taxonomy[node_load($node_id)->tid]->name;
return array(Forum,$forum,$node_titel,$comment_titel,bearbeiten);
?>
Pfade:
<?php
preg_match('/\d+/',$_SERVER['REQUEST_URI'],$comment_id);
$node_id=_comment_load($comment_id[0])->nid;
$foren_id=node_load($node_id)->tid;
return array(forum,"forum/".$foren_id,"forum/".$node_id,"forum/".$node_id."#comment-".$comment_id,$_SERVER["REQUEST_URI"]);
?>
Gibt es eine Möglichkeit hier mehr rein zupacken?
include("breadcrumbs.php")
am 27.01.2011 - 15:27 Uhr
Aber jetzt!
hab einfach in den Titel ein include(php-Datei) und ein return $Brotkrumen eingebaut. Die Erstellung des Arrays wird dann von dem externen File erledigt.
<?php
preg_match('/\d+/',$_SERVER['REQUEST_URI'],$comment_id);
$comment_titel=_comment_load($comment_id[0])->subject;
$node_id=_comment_load($comment_id[0])->nid;
$node_titel=node_load($node_id)->titel;
$forum=node_load($node_id)->taxonomy[node_load($node_id)->tid]->name;
$Titel = array(Forum,$forum,$node_titel,$comment_titel,bearbeiten);
$foren_id=node_load($node_id)->tid;
$Pfade = array(forum,"forum/".$foren_id,"forum/".$node_id,"forum/".$node_id."#comment-".$comment_id[0],$_SERVER["REQUEST_URI"]);
$Brotkrumen = array('titles' => $Titel, 'paths' => $Pfade);
?>
Damit kann ich nun das Limit umgehen. Bei mir funktioniert es so prima;-)