KonTAKTFORMULAR im Kopfbereich

Guten Abend in die Runde,

ich möchte ein Kontaktormular im Haeder platzieren. Dazu habe ich die contact.tpl ohne haeder und foter eingesetzt. aber irgendwie ´krieg ich das mit den Funktionen nicht hin.

Kann mir jemand helfen?

Danke amaya m.

Wie soll das denn genau funktionieren?

Der User soll das Kontaktformular im Header absenden können? Auf welche Seite soll nach Absenden verwiesen werden? Sollen die Felder des Standardformulars verwendet werden oder soll es ein neues Formular mit speziellen Feldern sein?

Gruß
Stefan

Guten morgen,

ja, genau. Das soll im Kopf abgesendet werden. Es geht um Terminvermittlung. Ich habe 2 Textfelder und ein Feld zur auswahl einer Zeit.

Danke amaya m.

Das lässt sich mit dem Standardkontaktformular nicht lösen. Das Standardformular ruft die Funktion send im View Contact auf. Hier sind bestimmte Anweisungen hinterlegt (z. B. Pflicht-Feldprüfungen) die speziell auf das Standardformular gemünzt sind.

Ein individuelles Formular müsste man also über ein Modul realisieren.

Man kann sich dabei gut an der Vorlage Contact orientieren. Damit ist es eigentlich relativ einfach ein individuelles Formular zu erstellen.

Hallo,

das Formualr habe ich ja schon gemacht. Mittlerweile habe ich ein bischen gelesen und weiss, dass ich eine php-Datei im Ordner views brauch, die die Daten empfägnt. Das geht bei kontakt aber doch nur, wenn ich das auch aufrufe. Wie mache ich das aber immer verfügbar und wohin müssen die Daten?

Danke amaya m.

Im Ordner views direkt sollte nicht direkt gearbeitet werden. Stattdessen ist es zu bevorzugen für eigene Erweiterungen Module zu verwenden.

Lies dazu die Dokumentation bezüglich Modulen. http://www.oxid-esales.com/en/resources/help-faq/eshop-manual/extending-oxid-eshop-modules-introduction

Schau Dir zur Anleitung die Datei contact.php im Ordner views an. Hier wird über $_sThisTemplate das verwendete Template definiert. Die Funktion send wird aufgerufen wenn das Formular abgeschickt wurde. Im Formular werden die Parameter cl=contact und fnc=send als versteckte Felder übergeben. Das definiert was passiert: view=contact.php dort die Funktion=send.

Erweitere in Deinem Modul also die Klasse contact oder die Klasse oxUBase (so hab ich es gemacht) und erstelle dort Deine eigene Funktion und ggf. auch Dein eigenes Template dass Du in Deiner Klasse verwenden willst. In Deinem Formular gibst Du dann die Parameter cl=deineKlasse und Funktion=deineFunktion weiter. Wie gesagt kann man sich gut an contact.php orientieren

Hallo und danke,

nun habe ich den ganzen Sonntag rumprobiert: Ich habe das Modul eingetragen, die Datei Kontakt.php kopiert und unter module als terminplaner.php abgespiechert. In der terminplaner.php habe ich eine neue Klasse angelegt bzw die alte umbenannt

class terminplaner extends oxUBase

und die Funktion send in der terminsend umbenannt. Nun habe ich alle if`s rausgeschmissen, damit nichts den Versand abhalten kann.

In der neuen terminplaner.tpl habe ich cl terminplaner / fnc terminsend eingetragen. Leider kommt da nix. Habe ich da igrendwas vergessen?

Danke amaya m.

Die Klasse für das Modul wird eigentlich wie folgt definiert:

class terminplaner extends terminplaner_parent

Dann wird das Modul im oxid-Admin unter Stammdaten->Grundeinstellungen->System->Module eingebunden. Nach dem Schema: Elternklasse => Pfad zur Moduldatei/Klassenname

Wenn deine Klasse also terminplaner heißt und in dem Ordner terminplaner innerhalb des Module-Ordners gespeichert ist und von oxUBase abgeleitet werden soll:

oxubase => terminplaner/terminplaner

Das sind die Grundvoraussetzungen damit das Modul lauffähig ist.

Wenn du dann cl=terminplaner und fnc=terminsend im Formular hinterlegst, sollte es funktionieren.

Hallo,

ich wollte mich nochmal für die Tipps bedanken. Mit kleiner Unterstützung des freundlichen Nachbarn geht`s nun.

Danke amaya m.

Hallo amaya m.,

freut mich wenn ich helfen konnte. Danke für die Rückmeldung.

Gruß
Stefan