Eigene Seite mit eigenen (GET-)Parametern
am 30.08.2007 - 20:33 Uhr in
Hey Ihr,
ich bin gerade dabei eine PHP in Drupal einzubinden. Soweit kein Problem, allerdings möchte ich, dass dieses Seite über mod_rewrite aufgerufen wird, also dann auf die Übergebenen Get-Parameter zugreift.
Hierzu habe ich:
1) Neue Drupal Seite, hier mit dem Name 'test' erstellt
2) Meinen PHP-Code dort eingbunden
3) Einen mod_rewrite - Aufruf in die .htaccess gelegt, die wie folgt aussieht:
--> RewriteRule ^/testaufruf/([0-9]+)/(.+)/$ /test/?id=$1 [L]
Nun sollte also wenn ich "example.com/testaufruf/3/abc/" eingebe, meine Drupal-Seite kommen, auf der ich den Parameter ID auslesen kann - Funktioniert aber nicht, ich bekomme einen 404-Error.
Gibt es für sowas eine elegantere Lösung in Drupal? Und warum funktioniert es so nicht?
Vielen vielen Dank für Eure Unterstützung,
der Jörchen
- Anmelden oder Registrieren um Kommentare zu schreiben
Was hast Du vor?
am 30.08.2007 - 21:26 Uhr
Also ich hab ja keine Ahnung, was Du eigentlich vor hast ...
RewriteRule ^/testaufruf/([0-9]+)/(.+)/$ /test/?id=$1 [L]
Bei dieser Zeile solltest Du folgendes bedenken:
1. Position in .htaccess könnte wichtig sein
2. Kurze URLs, z.B.
http://mydomain.de/testaufruf
werden schon in folgende Form umgeschriebenhttp://mydomain.de/index.php?q=testaufruf
(Deshalb in #1 der Verweis auf die Position). Wenn man Deine RewriteRule vorher zusätzlich anwendet, kommt sowas bei raushttp://mydomain.de/index.php?q=testaufruf/?id=...
. Und das ist sicher keine gültige Adresse.3. Warum versuchst Du überhaupt, die Adresse umzuschreiben? Du kannst das doch wunderbar auch lassen wie es ist, oder?
Du solltest hier vielleicht ein paar Worte darüber schreiben, was Du genau realisieren willst. Ich bin sicher, es gibt dafür einen wesentlich einfacheren und eleganteren Weg.
auch ohne mod_rewrite, mit URL-Alias
am 01.09.2007 - 11:02 Uhr
Hallo,
ich würde sagen, das geht ohne mod_rewrite, dafür aber in zwei Schritten.
Du hast deine PHP-Seite als Body und ich nehme mal an, dass diese Seite sich selbst verlink, zum Beispiel für ein Formular oder sowas. Dann erstellst du die Seite wie gehabt. Dadurch erhält die eine ID (wie 25). Damit deine Seite aber nun unter 'testaufruf' erreichbar ist, nimmst du einfach einen URL-Alias. Das kannst du entweder in der 'Verwaltung' machen oder gleich beim Editieren im Node.
Dann editierst du deine PHP-Seite ein zweites Mal und schreibst die Links und Referenzen so um, dass daraus Pfade wie '/testaufruf?name1=value1&name2=value2' werden. Zwar hast du dann immernoch eine Query, aber du brichst dir keinen ab.
Wenn du ein wenig in der API (http://api.drupal.org) suchst, es gab mal eine Funktion, die dir die Parameter aus dem Request zurücklieferte. Ich habe schon nachgeschaut, weiß aber den Namen nicht mehr.
Ciao, Q
Ciao, Q
---
Running Gag der IT seit den 70er: "Machen wir eben mal schnell ...".
arg()
am 01.09.2007 - 16:28 Uhr
eine Funktion, die dir die Parameter aus dem Request zurücklieferte
Die Funktion heißt
arg()
. Bei einer URL wie 'domain.de/abc/def/' liefertarg(0) => 'abc'
undarg(1) => 'def'
etc. (siehe http://api.drupal.org/api/function/arg/5).Wie gesagt - Ein paar Worte, was Du realisieren willst, wären aber hilfreich, wenn Du eine 'vernünftige' Antwort haben willst.