Wie kann man einen Query string im Menüpunkt eintragen?
am 25.07.2008 - 23:20 Uhr in
Hallo zusammen,
ich habe eine Seite, über die mittels query string eine Reihe von ähnlichen Seiten über eine template aufgebaut werden.
Konkret:
Ich habe eine einzige Seite ../content/fachbereich (auf der Website einer Schule) und eine dazugehörige template node-fachbereich.tpl.php, die Variablen enthält, die über den query-string eingelesen werden. Dadurch werden dann Seitenansichten für alle Fachbereiche (z.B. Sport, Mathe, etc.) erzeugt, indem ich die Seite z.B. mit der url ../content/fachbereich?fach=Sport aufrufe. Die Template sorgt dann dafür, dass die entsprechenden Inhalte (views) für Sport angezeigt werden. Das funktioniert alles sehr schön so weit!
Nun meine Frage: Ich will für jeden Fachbereich einen eigenen Menüeintrag. Wie kriege ich die url in die Menüpunkte? Wenn ich z.B. in der Menübearbeitung "../content/fachbereich?fach=Sport" eintrage, wird daraus beim aufrufen des Menüpunkts in der url ein "../content/fachbereich%3Ffach%3DSport", d.h. ? und = werden kodiert und das Link bzw. der Menüpunkt funktionieren nicht (Resultat: "Seite nicht gefunden"). Wie kann ich das richtig machen, so dass die Menüs funktionieren?
Danke für Hilfe, hermx
- Anmelden oder Registrieren um Kommentare zu schreiben
Einen workaround gibt es
am 26.07.2008 - 09:24 Uhr
Einen workaround gibt es hier:
http://drupal.org/node/131738
commenting out a line in common.inc (line with XX in)
// The special path '' links to the default front page.
if (!empty($path) && $path != '') {
$path = drupal_get_path_alias($path);
//XX $path = drupal_urlencode($path);
if (!$clean_url) {
although I'm not sure of the side-effects of this. I guess it should be done properly with the $query variable but I can't get my head round it just now.
Weiss jemand eine saubere Lösung?
und ebenso z.B. hier:
http://drupal.org/node/157409
http://drupal.org/node/68886
Diese Patches enthalten änderungen an der function drupal_urlencode() in common.inc, es wird dabei ein zusätzliches Escape bei den Zeichen & und # (gleiches Problem für Anker im Menü) eingebaut:
function drupal_urlencode($text) {
- return str_replace('%2F', '/', urlencode($text));
+ if (variable_get('clean_url', '0')) {
+ return str_replace(array('%2F', '%26', '%23'),
+ array('/', '%2526', '%2523'),
+ urlencode($text));
+ }
+ else {
+ return str_replace('%2F', '/', urlencode($text));
+ }
}
Ich denke, das sollte eigentlich Standard in Drupal sein. Wäre ein Punkt für die nächste Version!
Habe gerade noch diesen BEitrag gefunden:
http://drupal.org/node/90570
Dabei wird es für VErsion 7 fest in menu.inc eingebaut und damit gelöst.
Leider scheint das für 5.x noch nicht der Fall zu sein.