Skip to main content

Schlagwort: Email-Benachrichtigung für BreezingForms Formulare formatieren

BreezingForms Mailback mit PDF-Anhang

PDF-Datei für den Versand mit dem BreezingForms Mailback erstellen

Die Joomla-Formular-Komponente BreezingForms bietet dem Webdesigner ja die Möglichkeit, nach dem Abschicken des Formulars durch den Benutzer automatisch eine Email-Benachrichtigung zu versenden (siehe Artikel „Joomla-Tipp: Email-Benachrichtigung mit BreezingForms“). Seit der Version 1.7.1 gibt es außerdem die Möglichkeit, diesem Email auf komfortable Art eine PDF-Datei anzuhängen. 

Dieser PDF-Anhang kann beliebige Inhalte aus dem abgeschickten Formular enthalten. Zusätzlich können Informationen zum Benutzer und natürlich auch eigene, frei definierte Texte enthalten sein.

 

Template-Verzeichnis 

Wie schon beim Mailback (automatische Email-Benachrichtigung) wird der Aufbau der PDF-Datei über eine php-Datei, oder das PDF-Template  definiert. Das Standard PDF-Template von BreezingForms findet man auf der Website im Admin-Verzeichnis unter folgendem Pfad: 

JoomlaRoot/administrator/components/com_breezingforms/pdftpl/

Achtung: hier hat sich der Verzeichnis-Name der Joomla Komponenten geändert. Ab Version 1.7.1. heißt es com_breezingforms und nicht mehr com_facileforms!

 

Aussehen bestimmen

Standard-Template

Standardmäßig wirkt das folgende Template, das nach der Installation auch bereits im o. g. Verzeichnis existiert. Dieses gibt die Inhalte des ausgefüllten Formulares sowie einige Daten zum User einfach als Auflistung ohne besondere Formatierung aus. 

  • pdf_attachment.php

 

Die PDF-Datei, die damit erzeugt wird sieht dann ziemlich einfach aus:
Screenshot BreezingForms Standard PDF Template

 

Selbst definiertes Template

Möchte man die PDF-Datei etwas anspruchsvoller gestalten, so muss man dafür eine entsprechend html-formatierte Template-Datei im Template-Verzeichnis zur Verfügung stellen.

Diese Datei muss in dem gleichen Verzeichnis liegen wie das Standard-Template:

JoomlaRoot/administrator/components/com_breezingforms/pdftpl/

 

Und sie muss im Dateinamen den Formularnamen enthalten.

  •  formularname_pdf_attachment.php

 

Beispiel:

Formularname = kontaktformular 

PDF-Template-Datei = kontaktformular_pdf_attachment.php

 

Die PDF-Datei, die aus einem selbst definierten PDF-Template erstellt wird, könnte dann so aussehen:

Screenshot BreezingForms selbst definiertes PDF Template

Inhalt der PDF-Datei formatieren

Der Inhalt der PDF-Datei kann für die selbst definierte Variante frei mit HTML und php-Scripten gestaltet und formatiert werden, wobei allerdings beachtet werden muss, dass nur bestimmte html Tags zugelassen sind (die erlaubten Tags sind im Quellcode der php-Datei in einem Kommentar aufgelistet). Anders als bei der Email-Benachrichtigung können hier auch leider keine Stylesheets verwendet werden; Styles müssen hart formatiert werden, also wie in den Webdesign-Anfängen jedem Element im Quellcode separat zugeordnet werden.

Und so kann dann eine PDF-Template-Datei (z. B. kontaktformular_pdf_attachment.php) aussehen: 

<?php
/**
* BreezingForms - A Joomla Forms Application
* @version 1.7.2
* @package BreezingForms
* @copyright (C) 2008-2010 by Markus Bopp
* @license Released under the terms of the GNU General Public License
**/
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
// IMPORTANT!
// Supported Tags: h1, h2, h3, h4, h5, h6, b, u, i, a, img, p, br, strong, em, font, blockquote, li, ul, ol, hr, td, th, tr, table, sup, sub, small

$txt_name = '';
$txt_email = '';
$txt_telefon = '';
$txt_nachricht = '';

if (count($xmldata)){
   foreach ($xmldata as $data) {
      $value = nl2br(htmlentities(substr(is_array($data[_FF_DATA_VALUE]) ? implode('|',$data[_FF_DATA_VALUE]) : $data[_FF_DATA_VALUE],0,10000), ENT_QUOTES, 'UTF-8'));
      switch($data[_FF_DATA_NAME]){
      case 'txt_name':
          $txt_name = $value;
          break;
      case 'txt_email':
          $txt_email = $value;
          break;
      case 'txt_telefon':
          $txt_telefon = $value;
          break;
      case 'txt_nachricht':
          $txt_nachricht = $value;
          break;
      }
    }
}

?>
</head>
<body>
<p><img height="45" width="504" style="margin: 5px auto; margin-left:0; vertical-align: left; display: block;" alt="Logo von www.webdesign-ostholstein.de" src="http://www.webdesign-ostholstein.de/templates/wdo/images/bb-logo.gif" /></p>
<p>&nbsp;</p>
<h2 style="font-size: 1.1em; color: #FD7805;">&nbsp;<br>Vielen Dank f&uuml;r Ihre Nachricht</h2>
<p style="font-size: 0.8em; color: #333333; font-family: Tahoma, Arial, Geneva, sans-serif; ">Wir haben Ihre Nachricht erhalten und werden uns in K&uuml;rze mit Ihnen in Verbindung setzten. Nachfolgend sehen Sie die Daten, die mit dem Kontaktformular an uns &uuml;bermittelt wurden. </p>
<h3 style="font-size: 1.0em; color: #FD7805;">&nbsp;<br>Hier sind Ihre Daten:  </h3>
<table style="border: none; ">
        <tr>
          <th style="font-size: 0.8em; color: #333333;"><strong>Datum:</strong></th>
          <td style="font-size: 0.8em; color: #333333;"><?php echo date("d.m.Y\ H:i")?></td>
        </tr>
        <tr>
          <th style="font-size: 0.8em; color: #333333;"><strong>Name:</strong></th>
          <td style="font-size: 0.8em; color: #333333;"><?php echo $txt_name; ?></td>
        </tr>
        <tr>
          <th style="font-size: 0.8em; color: #333333;"><strong>Email:</strong></th>
          <td style="font-size: 0.8em; color: #333333;"><?php echo $txt_email; ?></td>
        </tr>
        <tr>
          <th style="font-size: 0.8em; color: #333333;"><strong>Telefon: </strong></th>
          <td style="font-size: 0.8em; color: #333333;"><?php echo $txt_telefon; ?></td>
        </tr>
        <tr>
          <th style="font-size: 0.8em; color: #333333;"><strong>Ihre Nachricht:</strong></th>
          <td style="font-size: 0.8em; color: #333333;"><?php echo $txt_nachricht; ?></td>
        </tr>
  </table>
<p><span style="font-size: 0.8em; color: #333333; font-family: Tahoma, Arial, Geneva, sans-serif; ">&nbsp;<br>
Vielen Dank!<br>
Beate Beermann<br />
&nbsp;    </span></p>
<p style="font-size: 0.8em; color: #FD7805;">&nbsp;<br />
Webdesign und mehr... - Beate Beermann Dipl.-Ing. (FH) - bb@webdesign-ostholstein.de - www.webdesign-ostholstein.de</p>

 

Die Abfrage der verwendeten Formularfelder und Definition der Variablen erfolgt dabei mit dem folgenden Code, den ich in der Knowledge Base von Crosstec Solutions gefunden habe (Link siehe unten):


$txt_name = '';
$txt_email = '';
$txt_telefon = '';
$txt_nachricht = '';

if (count($xmldata)){
   foreach ($xmldata as $data) {
      $value = nl2br(htmlentities(substr(is_array($data[_FF_DATA_VALUE]) ? implode('|',$data[_FF_DATA_VALUE]) : $data[_FF_DATA_VALUE],0,10000), ENT_QUOTES, 'UTF-8'));
      switch($data[_FF_DATA_NAME]){
      case 'txt_name':
          $txt_name = $value;
          break;
      case 'txt_email':
          $txt_email = $value;
          break;
      case 'txt_telefon':
          $txt_telefon = $value;
          break;
      case 'txt_nachricht':
          $txt_nachricht = $value;
          break;
      }
    }
}

 
 

 
Weiterführende Informationen

Zu diesem Thema gibt es im Web noch nicht sehr viele Informationen. Ein wenig findet man in der Knowledge Base von Crosstec Solutions, dem Ersteller von BreezingForms:
Changing the attachment’s PDF template

Changing the export’s PDF template

 

 

Sie benötigen professionelle Ünterstützung bei Joomla? Schreiben Sie mir einfach und ich berate Sie gerne!

Email-Benachrichtigung mit BreezingForms

Email-Benachrichtigung für BreezingForms Formulare formatieren

Bei Verwendung von Formularen, die mit der Joomla!-Komponente BreezingForms erstellt wurden (z. B. ein Kontaktformular), ist es möglich, nach dem Abschicken des Formulars durch den Benutzer automatisch eine Email-Benachrichtigung zu versenden. Dabei ist es sowohl möglich eine Nachricht an den Benutzer (Benutzer-Mail) zu schicken, der das Formular abgeschickt hat, als auch eine Nachricht an eine oder mehrere, beliebig zu definierende Email-Adressen (ich nenne das hier mal Admin-Mail).

Template-Verzeichnis

Aussehen und Inhalt dieser Emails können über sogenannte Email-Templates frei definiert werden.
Die Standard Email-Templates von BreezingForms findet man im Admin-Verzeichnis unter folgendem Pfad:

JoomlaRoot/administrator/components/com_facileforms/mailtpl/

bzw. seit BreezingForms-Version 1.7.1 unter dem folgenden Pfad:

JoomlaRoot/administrator/components/com_breezingforms/mailtpl/

Aussehen bestimmen

txt-Template (Standard)

Standardmäßig wirken die folgenden Templates, die nach der Installation auch bereits im o. g. Verzeichnis existieren. Diese geben die Inhalte des ausgefüllten Formulares einfach als Textzeichen ohne Formatierung aus.

  • Admin-Mail: mailtpl.txt.php
  • Benutzer-Mail: mailbacktpl.txt.php
html-Template

Möchte man die Mails etwas anspruchsvoller gestalten, so muss man dafür entsprechende html-formatierte Template-Dateien ebenfalls im Template-Verzeichnis zur Verfügung stellen. Diese Dateien haben dann statt der Endung txt.php die Endung html.php.

  • Admin-Mail: mailtpl.html.php
  • Benutzer-Mail: mailbacktpl.html.php

Um die html-Templates zu verwenden, reicht es aus, dass sich die entsprechenden Dateien im Template-Verzeichnis befinden. Eine Umstellung im Joomla-Backend ist nicht nötig. Ist sowohl eine txt-Datei als auch eine html-Datei vorhanden, so wird die html-Datei bevorzugt verwendet.

Um eine html-Datei zu erstellen, kann man sich die bereits vorhandene txt-Datei mailtpl.txt.php einfach kopieren und umbenennen in mailtpl.html.php. So hat man den php-Code für die Ausgabe der Inhalte bereits bestehen. Anschließend fügt man einfach seine individuellen HTML-Tags zur Formatierung ein.

Individuelle Templates für jedes Formular

Bietet man auf seiner Website mehrere Formulare an, so möchte man vielleicht für jedes Formular ein individuelles Mail verwenden. Um dies zu erreichen, benennt man die Template-Datei einfach nach dem Namen des Formulars. Beispiel:

  • Formularname = kontaktformular
    (Achtung: Hier muss der Name des Formulars und nicht der Titel verwendet werden!)

Der Dateiname für die Template-Datei im html-Format muss dann lauten:

  • Admin-Mail: kontaktformular.html.php
  • Benutzer-Mail: kontaktformular_mailback.html.php
    (Achtung: nach dem Unterstrich muss es mailback und nicht wie in der Standarddatei mailbacktpl heissen!)

Der Dateiname für die Template-Datei im txt-Format muss dann lauten:

  • Admin-Mail: kontaktformular.txt.php
  • Benutzer-Mail: kontaktformular_mailback.txt.php
    (Achtung: nach dem Unterstrich muss es mailback und nicht wie in der Standarddatei mailbacktpl heissen!)

Inhalt der Mails

Der Inhalt der Mail kann für die html-Variante frei mit HTML und php-Scripten gestaltet und formatiert werden. In den txt-Standard-Dateien (z. B. mailtpl.txt.php)  findet man die benötigten BreezingForms-Variablen, um die Benutzerdaten und alle Formularfelder auszugeben.

Und so sieht das Standard txt-Template (mailtpl.txt.php) aus:

<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
?>

<?php if ($RECORD_ID != ''): ?>
<?php echo $PROCESS_RECORDSAVEDID?> <?php echo $RECORD_ID ?><?php echo $NL ?>
<?php endif; ?>

<?php echo $PROCESS_FORMID?>: <?php echo $FORM ?><?php echo $NL ?>
<?php echo $PROCESS_FORMTITLE ?>: <?php echo $TITLE ?><?php echo $NL ?>
<?php echo $PROCESS_FORMNAME ?>: <?php echo $NAME ?><?php echo $NL ?>
<?php echo $PROCESS_SUBMITTEDAT ?>: <?php echo $SUBMITTED ?><?php echo $NL ?>
<?php echo $PROCESS_SUBMITTERIP ?>: <?php echo $IP ?><?php echo $NL ?>
<?php echo $PROCESS_SUBMITTERID ?>: <?php echo $SUBMITTERID ?><?php echo $NL ?>
<?php echo $PROCESS_SUBMITTERUSERNAME ?>: <?php echo $SUBMITTERUSERNAME ?><?php echo $NL ?>
<?php echo $PROCESS_SUBMITTERFULLNAME ?>: <?php echo $SUBMITTERFULLNAME ?><?php echo $NL ?>
<?php echo $PROCESS_PROVIDER ?>: <?php echo $PROVIDER ?><?php echo $NL ?>
<?php echo $PROCESS_BROWSER ?>: <?php echo $BROWSER ?><?php echo $NL ?>
<?php echo $PROCESS_OPSYS ?>: <?php echo $OPSYS ?><?php echo $NL ?>

<?php foreach ($MAILDATA as $DATA): ?>
<?php echo $DATA[_FF_DATA_TITLE]?>: <?php echo $DATA[_FF_DATA_VALUE]?><?php echo $NL ?>
<?php endforeach; ?>

 

Möchte man nicht alle Formularfelder in einer Schleife ausgeben, sondern nur ausgewählte, so kann man diese auch direkt über die folgende Syntax ansprechen:

<?php echo $value["Fieldname"]?>

Voraussetzung hierfür ist allerdings, dass die Variablen vorher über den folgenden Code eingerichtet werden (Am Beginn der Template-Datei): 

<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
$field = array();
foreach ($MAILDATA as $DATA) {
$title[$DATA[_FF_DATA_NAME]] = $DATA[_FF_DATA_TITLE];
$value[$DATA[_FF_DATA_NAME]] = $DATA[_FF_DATA_VALUE];
}?>
 
Beispiel für ein html-Template

Ein html-Template könnte zum Beispiel so aussehen (kontaktformular.html.php):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Anfrage über Kontaktformular</title>
<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
$field = array();
foreach ($MAILDATA as $DATA) {
$title[$DATA[_FF_DATA_NAME]] = $DATA[_FF_DATA_TITLE];
$value[$DATA[_FF_DATA_NAME]] = $DATA[_FF_DATA_VALUE];
}
?>

<style type="text/css" media="screen">
    body * {
        text-align:left;
    }
    body {
        margin: 0;
        padding: 0;
        font-family: Arial, sans-serif;
        font-size: 11px;
        font-weight: normal;
        margin-top:0px;
    }
     
    h1 {
        font-size: 15px;
        font-weight: bold;
        color: #333;
        margin-top:0px;
    }
     
    h2 {
        font-size: 12px;
        font-weight: bold;
        color: #333;
        margin-top:20px;
    }
   
    td {
        font-size: 11px;
        font-weight: normal;       
    }
   
    th {
        font-size: 11px;
        font-weight: bold;   
        color: #333;   
    }
</style>
</head>

<body>
<table width="100%" border="0">
  <tr>
    <th colspan="2" scope="col"><h1>Anfrage über Kontaktformular<br/>
    </h1>
        <?php if ($RECORD_ID != ''): ?>
            <?php echo $PROCESS_RECORDSAVEDID?> <?php echo $RECORD_ID ?><?php echo $NL ?>
        <?php endif; ?></th>
  </tr>
  <tr>
    <td colspan="2"><h2>Formularinhalt</h2></td>
  </tr>
  <?php foreach ($MAILDATA as $DATA): ?>
   
  <tr>
    <th><?php echo $DATA[_FF_DATA_TITLE]?></th>
    <td><?php echo $DATA[_FF_DATA_VALUE]?><?php echo $NL ?></td>
  </tr>
<?php endforeach; ?>
  <tr>
    <th>&nbsp;</th>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><h2>Userdaten</h2></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_FORMID?>: </th>
    <td><?php echo $FORM ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_FORMTITLE ?>: </th>
    <td><?php echo $TITLE ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_FORMNAME ?>: </th>
    <td><?php echo $NAME ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_SUBMITTEDAT ?>: </th>
    <td><?php echo $SUBMITTED ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_SUBMITTERIP ?>: </th>
    <td><?php echo $IP ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_SUBMITTERID ?>: </th>
    <td><?php echo $SUBMITTERID ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_SUBMITTERUSERNAME ?>: </th>
    <td><?php echo $SUBMITTERUSERNAME ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_SUBMITTERFULLNAME ?>: </th>
    <td><?php echo $SUBMITTERFULLNAME ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_PROVIDER ?>: </th>
    <td><?php echo $PROVIDER ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_BROWSER ?>: </th>
    <td><?php echo $BROWSER ?><?php echo $NL ?></td>
  </tr>
  <tr>
    <th><?php echo $PROCESS_OPSYS ?>: </th>
    <td><?php echo $OPSYS ?><?php echo $NL ?></td>
  </tr>
</table>
</body>
</html>

 

Weiterführende Informationen

Zu diesem Thema gibt es bei Crosstec Solutions, dem Ersteller von BreezingForms, einen sehr, sehr langen, englischen Forums-Beitrag (derzeit 22 Seiten lang):
http://crosstec.de/forums/15-usage/1576-custom-email-notifications-howto.html
Auf Seite 20 im zweiten Beitrag kann man sich als angemeldeter Benutzer ein Beispiel-Template herunterladen, das dann beliebig verändert werden darf.

Außerdem enthält die Knowledge Base von Crosstec Solutions weitere wertvolle Informationen zum Thema: http://crosstec.de/support/index.php?pid=knowledgebase&cmd=viewcatclient&id=52

 

 

Sie benötigen professionelle Ünterstützung bei Joomla? Schreiben Sie mir einfach und ich berate Sie gerne!