PHP-Variablen an Felder im Kontaktformular übergeben

  • Hallo liebe Forumsgemeinde,


    ich mache seit kurzem meine ersten Schritte in Joomla und habe mir jetzt ein paar Stunden lang an einem Problem die Zähne ausgebissen, das für einen Könner vermutlich recht einfach zu lösen ist. Ich habe auch ein paar Hinweise und Beispielcodings für ähnliche Fälle im www gefunden aber keines davon hat für meinen Fall so richtig gepasst. Vorausschicken muss ich, dass ich von Web-Programmierung praktisch keine Ahnung habe, auch wenn generelle Programmierkenntnisse vorhanden sind.


    Ich möchte auf einem Artikel eine Kontaktfunktion einbauen mit der die Benutzer meiner Seite direkt Emails an eine feste Adresse senden können.

    Das habe ich über die Standardfunktion Kontakt einfügen von Joomla gemacht und dann das Coding der generierten Kontaktformularseite kopiert und ins Coding meines vorhandenen Artikels eingefügt.

    Das klappt auch gut, das Formular ist da.

    Nun würde ich gerne eine Funktionalität einbauen, die die Standardfelder für Name des Absenders und Email des Absenders im Formular direkt mit diesen beiden Werten aus dem Benutzerkonto des gerade eingeloggten Users vorbelegt denn diese Funktion steht nur angemeldeten Benutzern zur Verfügung.

    Ich habe Coding gefunden, mit dem ich den Namen und die Mailadresse des aktuell eingeloggten Users per PHP abfragen kann und habe die entsprechenden Werte auch in den PHP-Variablen stehen. z. B. gelingt es mir, mit dem Kommando echo $user_email die Mailadresse des aktuell angemeldeten users auf der Seite auszugeben.

    Ich möchte diesen Wert aber gerne als Vorgabewert direkt ins Formularfeld übernehmen.


    Das Feld ist im Formular folgendermaßen definiert:

    <div class="control-group">

    <div class="control-label"><label id="jform_contact_email-lbl" class="hasPopover required" title="E-Mail" for="jform_contact_email" data-content="E-Mail für Kontakt"> E-Mail<span class="star"> *</span></label></div>

    <div class="controls"><input id="jform_contact_email" class="validate-email required" autocomplete="email" name="jform[contact_email]" required="" size="30" type="email" value="" /></div>

    </div>


    Der Parameter Value ist wohl das, wo der Zielwert rein muß. Einen Defaultwert als festen String könnte ich hier problemlos reinschreiben, das funktioniert. Ich will aber an dieser Stelle den Inhalt meiner PHP-Variable $user_email dynamisch einsetzen und das gelingt mir einfach nicht.

    Von der Positionierung auf der Seite läuft der PHP-Teil, der $user_email befüllt vor dem form ab, zu dem das Zielfeld gehört.


    Kann mir jemand behilflich sein und den Knoten, den ich da in der Leitung habe entwirren?


    Vielen Dank vorab,

    Fiasko

  • Und dieses so eingefügte Formular sendet tatsächlich eine Email?


    Zu deiner Frage bzgl. PHP-Variablen. Ich schlage da meist diesen Weg ein, weil ich es nicht mag direkt in den Editor PHP-Code einzugeben, was man z.B. mit entsprechenden Erweiterungen machen könnte.


    Lege eine Datei emailsenden.php an im Ordner

    Code
    /templates/DEINTEMPLATENAME/html/mod_custom/

    Dann legst ein "Eigenes Modul" an und wählst als "Layout" "emailsenden". Der Editor im Modul hat übrigens keine Funktion. Muss nix rein. Merkst dir die id des Moduls. Sagen wir "100".


    Unter "Menüzuweisung" erst mal "Auf allen Seiten". Kann man später ggf. noch eingrenzen.


    Dann füllst deine neue Datei "emailsenden.php". Nach den Standardzeilen in nahezu jeder Joomladatei

    PHP
    <?php
    defined('_JEXEC') or die;
    ?>

    fügst dann deine Codes ein, HTML und PHP.


    Im Beitrag fügst dann ein

    Code
    {loadmoduleid 100}

    an der Stelle, wo Kontaktformular erscheinen soll.

  • Eine weitere Möglichkeit könnte sein, die Erweiterung ComponentsAnywhere zu verwenden. Hätte den Vorteil, dass ein stinknormales von Joomla generiertes Formular inklusive nötige JavaScripts usw. sonstwo, auch in Beiträgen, eingesetzt werden kann.


    https://extensions.joomla.org/extension/components-anywhere/


    Nachteil: Der nötige Override vielleicht etwas komplexer, WENN du an anderer Stelle der Seite ein Joomla-Kontaktformular verwendest, das deine oben beschriebenen Features NICHT haben soll. Nach deiner bisherigen Beschreibung, sollte es aber auch konfliktfrei gehen.


    Dort verwendet man im com_contact-Override z.B. zum Befüllen der Felder diese magischen Zeilen am Anfang der Datei default_form.php:

    Code
    $this->form->setFieldAttribute('contact_email', 'default', $user_email);

    Wenn $user_email, die du zuvor in selber Datei ermittelst, einen leeren String ergibt, weil gar kein angemeldeter User, sollte das kein Problem sein, ihn halt "unnötig" zu setzen.

  • Hallo und vielen Dank für Deine Hilfe!

    Ich bin jetzt mal den ersten Weg gegangen und es ist mir gelungen, das eigene Modul anzulegen und auch in die Seite einzubauen, das funktioniert schon mal prima.

    Dort kann ich dann wunderbar HTML und php programmieren und das Feld mit echo vorbelegen.

    Klappt Bestens!