Codelevel X logo
QR Barcode
Homex86-ProgrammierungProjekteTYPO3
Suche
>> HomeTYPO3 > Feedback Formular

TYPO3



Realisierung eines Feedback Formulars in TYPO3

Unter Formulare wurde bereits das eigentliche Formular bzw. die Erstellung der Feedbackseite beschrieben. Für die Funktion ist jedoch die Ergänzung von TypoScript erforderlich. Ziel ist es, mit der Feedback Funktion einen Bezug zur vorher betrachteten Seite zu ziehen und diese im Feedback Formular einzutragen, damit der Empfänger sofort weiß auf was sich der Kommentar bezieht und der Absender keinen Roman schreiben muss.

Eigene Parameter in TypoScript

Damit TypoScript auf der Feedbackseite weiß, welche Seite zuvor besucht wurde, wird hier ein eigener Parameter definiert und bei den Links in der Navigation hinzugefügt. Diese Linkergänzung durch einen zusätzlichen Parameter wird jedoch nur für den Feedback Link hinzugefügt, weil nur diese Seite die Information über die gerade besuchte Seite benötigt.

page.160 < topNav
page.160.includeNotInMenu=1
page.160.begin={$bottMenuItemNo}
page.160.maxItems >
page.160.1.min=960
page.160.1.NO.additionalParams.data=TSFE:id
page.160.1.NO.additionalParams.dataWrap=&cuid=|
page.160.1.NO.additionalParams.if {
  value={$feedbackUID}
  equals.data=field:uid
}

Der Button Feedback befindet sich in der Navigation der Fussleiste. Hier wird zunächst in page.160 eine Kopie der Definitionen für die Navigationen in der Kopfleiste kopiert und mit includeNotInMenu die für die Kopfnavigation ausgeschlossenen Seiten hier explizit eingeschlossen. Die Konstante bottMenuItemNo definiert ab welchem Menüpunkt die Navigation beginnen soll. 

Die eigentliche Parameterdefinition beginnt mit additionalParams. Hier wird zunächst die Variable TSFE:id als Zusatzparameter definiert. TSFE:id enthält die aktuell aufgerufene Seite. Mit dem folgenden Wrap wird daraus ein gültiger URL Parameter erzeugt mit dem Namen cuid, also &cuid=<aktuelle Seite>. Der Parametername cuid wurde willkürlich gewählt. In den folgenden Zeilen wird über das IF Statement geprüft, ob die Seitenid in der Navigation die feedbackUID (=field:uid) ist. Nur dann ist die IF Definition wahr und nur dann wird der zusätzliche Parameter an den Link angehängt.

Erweiterungs Template definieren

Damit die Feedback Seite funktioniert, wird noch ein Erweiterungstemplate definiert. Prinzipiell könnte man sowas auch durch entsprechende Abfragen in dem Basis Template realisieren, dadurch wird der TypoScript Code einer Webseite aber auch schnell unübersichtlich. Die bessere Lösung ist ein Erweiterungstemplate zu definieren, welches zusätzlich zum Basis Template geladen wird, jedoch erst nach dem Basis Template. Dadurch kann man sich auf Definitionen im Basis Template beziehen und diese teilweise durch den geänderten Kontext in der Abarbeitung von TypoScript verändern.

Man legt dazu unter der Template Funktion bei der Feedback Seite ein neues Template an und zwar ein Erweiterungstemplate und kein gänzlich neues Template.

Basis Template (Auszug)

page.95=CONTENT
page.95 < styles.content.get

Erweiterungstemplate (vollständig)

page.95=COA_INT
page.95 {
  10=COA_INT
  10 {
    if.isTrue.data=GPvar:cuid
    10=CONTENT
    10 < styles.content.get
    10.stdWrap.split {
      token=Webseite
      cObjNum=1 || 2
      max=2
      1.current=1
      1.stdWrap.dataWrap=|{TSFE:baseUrl}/
      2=TEXT
      2.typolink.parameter.data=GPvar:cuid
      2.typolink.returnLast=url
    }
    20=CONTENT
    20 < styles.content.get
    20.stdWrap.split {
      token=Webseite
      cObjNum=1 || 2
      max=2
      2.current=1
    }
  }
  20=COA_INT
  20 {
    if.isFalse.data=GPvar:cuid    
    10=TEXT
    10.value=Vielen Dank, Ihre Nachricht wurde versendet.<br>
  }
}

Die "Zeile" 95 des PAGE Objektes stellt normalerweise alle Inhaltselemente ohne Eingriff dar. Hier soll die Darstellung bzw. der HTML Code geändert werden und so wird dieser Part im Erweiterungstemplate überschrieben. Da die Zielseite für das Formular als die gleiche Seite gewählt wurde, ist im TypoScript eine Unterscheidung notwendig, ob die Seite neu aufgerufen wurde oder ob die Seite bereits abgesendet wurde.

Mit page.95.10 wird im COA zunächst das Eingabeformular bearbeitet und nach dem String "Webseite" gesucht. Das ist die Vorbelegung des ersten Eingabefeldes. Anstelle des Textes soll die zuvor aufgerufene Seite eingeblendet werden und zwar als Link (nicht als Seitentitel) damit man in der E-Mail den Link später anklicken kann und sofort die betreffende Seite sieht und nicht suchen muss.

In page.95.10.10 wird der Content der Seite vollständig geladen und anschließend mit der split Funktion der Begriff Webseite gesucht (willkürlich gewählt, muss aber zur Formulardefinition passen). Dann wird der Teil vor "Webseite" mit der Base URL der Seite und einem folgenden Slash ergänzt, danach mit typolink ein Link auf die zuvor aufgerufene Seite erzeugt, dann der Rest der Seite angezeigt mit page.95.10.20. Dadurch wird ein Formular Eingabefeld mit der URL der vorhergehenden Seite gesetzt, die jedoch ggf. auch manuell überschrieben werden könnte (sichtbar und editierbar für den User).

In page.95.20 wird anstelle des eigentlichen Content ein simpler Textzug eingeblendet "Vielen Dank, Ihre Nachricht wurde versendet.". An die Stelle des Textzuges könnte man auch definierte Felder oder Bereiche in der Seite ein/ausblenden oder ggf. eine andere Zielseite im Formular wählen. Die Unterscheidung ob page.95.10 oder page.95.20 angezeigt wird, erfolgt mit der Abfrage if.isTrue.data=GPvar:cuid bzw. mit if.isFalse.data.

Wenn die selbst definierte Variable cuid vorhanden ist, erfolgt die Darstellung des Formulars, anderenfalls des Textzuges. Hier spielt eine Eigenart von TypoScript mit, nur eigene (System)Parameter an Folgeseiten zu übergeben. Will man eigene Parameter weitergeben, muss man diese entweder immer wieder selbst anfügen oder den eigenen Parameter als Standard Parameter übernehmen. In diesem Fall wurde das nicht gemacht und im Formular wird beim Absenden der selbst definierte Parameter nicht weitergegeben und ist daher nach dem Absenden und nochmaligem Aufruf der gleichen Seite nicht vorhanden und ein Indikator zur Darstellung des Textzuges anstelle des Formulars.


Für die Nutzung dieses Angebotes gelten die AGB, insbesondere der Haftungsausschluss.



AutorNewsFeedbackImpressumAGBDatenschutz
...