Kontaktformular (Contact3)

    Mit dem Plugin Contact3 lässt sich ein einfaches Kontaktformular einrichten.

    Standardmässig enthält das Formular die folgenden Felder:

    Zusätzliches Feld

    Im folgenden Beispiel soll ein zusätzliches Feld "Adresse" eingerichtet werden.

    Datei plugin.php

    Zuerst wird die Datei plugin.php im Verzeichnis /bl-plugins/contact3/plugin.php erweitert.

    1) Variable des Feldes

    Das neue Feld "Adresse" muss in der Datei plugin.php als Variable deklariert werden (Zeile 15):

      private $address = '';

    Der Code sieht dann wie folgt aus:

      private $senderEmail = '';
      private $senderName = '';
      private $address = '';
      private $message = '';
      private $success = false;
      private $error = false;
      private $reCaptchaResult = false;

    2) Enfernung überflüssiger Zeichen

    Um überflüssige Zeichen bei der Eingabe eines Wertes zu entfernen, wird die Datei mit folgender Anweisung ergänzt (Zeile 306 beziehungsweise 307):

        if(isset($_POST['address'])){
          $this->address = trim(strip_tags($_POST['address']));
        }

    Der Code sieht dann wie folgt aus:

      private function readPost(){
        // removes bad content - just a little protection - could be better
    
        if(isset($_POST['name'])) {
          $this->senderName =  trim(strip_tags($_POST['name']));
        }
        if(isset($_POST['email'])) {
          $this->senderEmail =  trim(preg_replace("/[^0-9a-zA-ZäöüÄÖÜÈèÉéÂâáÁàÀíÍìÌâÂ@ \-\+\_\.]/", " ", $_POST['email']));
        }
        if(isset($_POST['address'])){
          $this->address = trim(strip_tags($_POST['address']));
        }
        if(isset($_POST['message'])){
          $this->message = trim(strip_tags($_POST['message']));
        }
      }

    3) Ausgabe in der E-Mail

    Für die Ausgabe des Felds "Adresse" in einer E-Mail, die mit HML formatiert ist, wird die Datei mit folgender Anweisung ergänzt:

          $emailText .= '<b>'.$L->get('Address').': </b>'.$this->address.'<br>';

    Der Code sieht dann wie folgt aus:

          $emailText  = '<b>'.$L->get('Your Name').': </b>'.$this->senderName.'<br>Test';
          $emailText .= '<b>'.$L->get('Your Email').': </b>'.$this->senderEmail.'<br>';
          $emailText .= '<b>'.$L->get('Address').': </b>'.$this->address.'<br>';
          $emailText .= '<b>'.$L->get('Your Message').': </b><br>'.nl2br($this->message).'<br>';

    Für die Ausgabe des Felds "Adresse" als reiner Text wird die Datei mit folgender Anweisung ergänzt:

          $emailText .= $L->get('Address').': '.$this->address."\r\n\r";

    Der Code sieht dann wie folgt aus:

          $emailText  = $L->get('Your Name').': '.$this->senderName."\r\n\r";
          $emailText .= $L->get('Your Email').': '.$this->senderEmail."\r\n\r";
          $emailText .= $L->get('Address').': '.$this->address."\r\n\r";
          $emailText .= $L->get('Your Message').': '."\r\n".$this->message."\r\n\r";

    Datei contact3.php

    Für das Eingabefeld der Adresse wird die Datei contact3.php im Verzeichnis /bl-plugins/contact3 mit Folgendem ergänzt:

        <div class="form-group">
           <input id="address" type="text" name="address" value="<?php echo sanitize::html($this->address); ?>" placeholder="<?php echo $L->get('Address'); ?>" class="form-control">
        </div>

    Der Code sieht dann wie folgt aus:

        <div class="form-group">
           <input id="name" type="text" name="name" value="<?php echo sanitize::html($this->senderName); ?>" placeholder="<?php echo $L->get('Your Name'); ?>" class="form-control" required="">
        </div>
    
        <div class="form-group">
           <input id="email" type="email" name="email" value="<?php echo sanitize::email($this->senderEmail); ?>" placeholder="<?php echo $L->get('Your Email'); ?>" class="form-control" required="">
        </div>
    
        <div class="form-group">
           <input id="address" type="text" name="address" value="<?php echo sanitize::html($this->address); ?>" placeholder="<?php echo $L->get('Address'); ?>" class="form-control">
        </div>
    
        <div class="form-group">
           <textarea id="message" rows="6" name="message" placeholder="<?php echo $L->get('Your Message'); ?>" class="form-control" required=""><?php echo sanitize::html($this->message); ?>

    Anpassung der Sprachdatei

    Der Platzhalter für den Wert, kann wie oben beschrieben als placeholder="<!--?php echo $L--->get('Address'); ?>" definiert werden. Es könnte aber auch placeholder="Adresse" verwendet werden.

    Wenn die erste Version gewählt wird, muss die Sprachdatei angepasst werden. Dazu muss die gewählte deutschsprachige Datei de_CH.json oder de_DE.json im Verzeichnis /bl-plugins/contact3/languages mit folgendem Eintrag ergänzt werden:

    "address": "Adresse",

    Achtung: Wenn der Eintrag am Schluss hinzugefügt wird, muss das Komma weggelassen werden, dafür die vorhangehende Zeile mit einem Komma ergänzt.

    Letzte Bearbeitung: 24. Februar 2020.