PHP-Skript einbinden - wie geht das am besten?
am 08.08.2012 - 09:37 Uhr in
Ich möchte per PHP-Skript Daten von einem externen Server laden, weiterverarbeiten und anzeigen. Der Besucher kann zuvor über ein Formular Einfluß auf die anzufordernden Daten nehmen. Beispiel:
- Besucher startet über ein Webformular eine Anfrage, z.B. eine Suche nach einem Namen
- Das PHP-Skript wertet das Formular aus und holt sich vom externen Server die entsprechenden Daten.
- Die Daten werden aufbereitet und zur Anzeige gebracht.
Nach dem Studium diverser Forumthreads gibt es wohl drei Möglichkeiten zur Umsetzung: PHP-Code im Inhaltsfeld, PHP-Code in page.tpl oder anderen Templates, PHP-Code in einem Modul.
Das Skript wird nur auf einer oder wenigen Seiten betrieben. Von daher schwebt mir ein eigener Inhaltstyp vor und die entsprechende Modifikation der dafür bestimmten node.tpl. Möglich ist wohl auch die Variante, den PHP-Code direkt in meine node.tpl für eine "einfache Seite" einzubinden. Das würde aber wiederum heißen, daß mein PHP-Code auch abgearbeitet wird, wenn ich ihn gar nicht brauche, weil der Benutzer wirklich nur eine "einfache Seite" aufgerufen und keine Suche gestartet hat.
PHP-Code im Inhaltsfeld fällt für mich flach und ist auch nicht sinnvoll. Ein Modul ist wohl zuviel des Guten.
Extra wegen meines PHP-Codes eine Kopie der "einfachen Seite" anzulegen, halte ich aber auch für übertrieben. Oder bleibt mir eine andere Wahl? Falls ich mal Modifikationen an der "einfachen Seite" vornehme (ich befinde mich noch in der Entwicklungsphase) müßte ich meine Kopie ja auch immer ändern.
Eine Möglichkeit wäre vielleicht noch ein Block, der meinen PHP-Code enthält, und nur auf bestimmten "einfachen Seiten" angezeigt wird. Schematisch stelle ich mir das in der entsprechenden node.tpl so vor: Ist Seitenname = "spezial" dann include meinen Spezialblock.
Eine weitere Frage wäre, wie ich Parameter an die Uri anhängen kann. Beispiel: Ein Besucher macht eine Suchanfrage und das Formular leitet zur Seite /content/spezial weiter. Die Daten kommen per POST, weil per GET die Uri verunstaltet wird. Ich würde nun gern weitere Links mit /content/spezial/parameter1/wert1/parameter2/wert2 u.ä. bauen. Gibt es eine Funktion in Drupal die mir alle Parameter schön aufschlüsselt oder kann ich mit $_GET["parameter1"] usw. darauf zugreifen?
- Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du einen eigen Datentyp
am 08.08.2012 - 09:47 Uhr
Wenn Du einen eigen Datentyp kreierst, kannst Du dazu auch einen eigenen node--type.tpl.php anlegen, der dann nur für diesen Nodetyp gilt. Ich würde diesen PHP-Code in einer preprocess_node Funktion in der template.php des Themes unterbringen, die den Nodetyp prüft, und dann auf eine Nodetyp spezifische Funktion verzweigt (im Zen-Theme nachzulesen). Dort kannst Du dann eigene Variablen setzen, die Du im zugehörigen node--type.tpl.php dann benutzen kannst.
Beste Grüße
Werner