Eigenes cObject richtig erstellen

An vielen Stellen ist es hilfreich, ein cObject zur Hand zu haben. So können etliche Aufgaben der Inhaltsverarbeitung einfach TYPO3 überlassen werden, und man muss als Extension-Entwickler nicht das Rad neu erfinden.

Ein neues cObject ist auch schnell instanziiert:

$localCObj = t3lib_div::makeInstance('tslib_cObj');

Damit steht einem eigentlich alles zur Verfügung. Eigentlich…
Weiterlesen

Mehrere Variablen an Fluid cObject-ViewHelper übergeben

Fluid kann vieles, aber manchmal will man doch auf TypoScript zurückgreifen und innerhalb eines Fluid-Templates ein cObject verwenden. An TypoScript können via data-Attribut auch Daten übergeben werden.

<f:cObject typoscriptObjectPath="lib.singleTest" data="{'Hello world'}"></f:cObject>
lib.singleTest = TEXT
lib.singleTest.current = 1

Was aber, wenn man verschiedene Objekte/Array/Strings an TypoScript übergeben möchte?
Eigentlich ganz einfach: die Daten als (neues) Array übergeben und mittels field ansprechen:

<f:cObject typoscriptObjectPath="lib.multipleTest" data="{hello: 'Hello', world: 'world'}"></f:cObject>
lib.multipleTest = COA
lib.multipleTest {
    10 = TEXT
    10.field = hello
    10.noTrimWrap = || |
    20 = TEXT
    20.field = world
}

Update: Gilt auch für Partials

Selbiges gilt auch, um an Partials mehrere Argumente zu übergeben:

<f:render partial="social" arguments="{settings : settings, fbLink:fbLink}"/>

Powermail (2.0)

Heutzutage ist es duch verschiedene Spamschutz-Mechanismen (z.B. SPF-Records) nicht mehr sinnvoll/sauber, Mails aus einer Website zu versenden, deren Absender nicht die eigene (Website-)Domain ist. Für (Kontakt-)Formulare war jedoch oftmals die Praxis, dass der Ausfüller des Formulars als Sender und seine eigegebene E-Mail-Adresse als Sender-Mailadresse in das generierte Mail eingesetzt wurde, um das Antworten auf die Anfrage zu erleichtern (Antworten-Button des Mailclients).

Hinweis:
Im Normalfall haben Redakteure keine Möglichkeit, den Absendername und die Absender-E-Mailadresse zu verändern.

Anlegen des Formulars ansich

media_1373617858813.png

Der Haken unter (1) wird nicht gesetzt. Als Absender-Mailadresse wird später per TypoScript eine Adresse definiert, die von dem Host der Website auch verschicken darf.
Ob als Sendername der des Websitebesuchers eingesetztw erden soll, oder ob hier konsequent und passend zur Mailadresse auch „die Website“ konfiguriert wird, kann von Fall zu Fall entschieden werden (2).

Das Formular selbst ist via List-Modul editierbar.

Plugin-Konfiguration – Reiter

media_1373618505591.png

Die Beschriftung der Reiter kann etwas irreführend sein.
„Receiver“ (1) sind die Einstellungen für den Empfänger des Mailformular, d.h. den Websitebetreiber.
„Sender“ (2) sind die Einstellungen für das Mail an den Besucher der Website (und Ausfüller des Formular) – soweit konfiguriert wurde, dass er das Formular auch zugemailt bekommen soll.
Die Einstellungen sind also pro Mail stets unabhängig voneinandern und nie gemeinsam in einem Mail berücksichtigt als Sender und Empfänger!

Plugin-Konfiguration – Empfänger (To)

media_1373618480627.png

(1) Gibt den Namen des Empfängers an. (Mailprogramme zeigen diesen ggf. nicht an, sondern ersetzen ihn anhand bekannter Mailadressen mit Namen aus ihrem Adressbuch; ggf. in der Headerdaten prüfen)
(2) Gibt die E-Mailadresse des Empfängers des Mailformulars an (also i.d.R. das Office des Websitebetreiber)

Plugin-Konfiguration – Absender (From), Replay-To – Wo einstellen?

media_1373620389200.png

Weitreichende Einstellungen rund um Absender, Empfänger, ReplayTo, Returnpath,… sind über die Konstanden von Powermail definierbar. Hier ist der Abschnitt „POWERMAIL_ADDITIONAL“ der richtige Anlaufort.

Plugin-Konfiguration – Absender (From) für Receiver-Mail

media_1373620174438.png

Im Konstanteneditor finden sich elf verschiedene Einstellung zum Mail an den Receiver (Websitebetreiber). Diese sind jeweils als „overwrite“ dfiniert, d.h. würden auch Einstellungen von anderen Stellen überschreiben.
(1) Ist der Absendename, z.B. „Mustermann AG – Website“
(2) Absendende Mailadresse, z.B. server@example.com
Um Antworten nicht dem Webserver (bzw. versendendem SMTP-Konto) zuzustellen, sondern an den Ausfüller des Formulars, sollte als ReplyTo im Mail dessen Name und Mailadresse stehen. Dies kann leider nicht über die entsprechenden Felder im Kontanten-Editor erfolgen (3)+(4), da hier nur statische Werte angegeben werden können. Über das TypoScript-Setup lässt sich dies aber lösen (s.u.).

Leider etwas irreführend ist die Formulierung „Sender Name for mail to receiver overwrites flexform settings (e.g. Sender Name)„. Denn im Flexform (des Plugins) kann kein Sendername angegeben werden. Evtl. ist hier aber die Einstellung aus den Field-Settings gemeint (Checkbox „This field contains the Name of the sender„).

Folge:
Im Normalfall können Redakteure Absendername (und -adresse) der Mail nicht verändern.

Plugin-Konfiguration – ReplyTo für Receiver-Mail

media_1373623317828.png

Damit die Antwort auf einen Formular-Kontakt an den Anfragenden geht (und nicht den absendenen Webserver), sollte die ReplyTo-Angabe mit den passenden Werten aus dem Kontaktformular gefüllt werden.

Hierzu werden zunächst die Default-Einstellungen gelösscht (1) bzw. (2). (Hier hätten wir jeweils ein cObject TEXT mit leerer „value„-Eigenschaft)
Anschließend wird für die Mailadresse der ReplyTo-Zeile aus dem Formular das Feld der Mailadresse des Website-Besuchers eingesetzt (3). Im Beispiel wäre es das Feld mit der ID 6 bzw. dem Namen „tx_powermail_pi1[field][6]„.
Der Name wird im Beispiel aus zwei getrennten Felder zusammengebaut (Vorname, ID 1; Nachname, ID 2).

Zum Kopieren:
plugin.tx_powermail {
settings.setup.receiver.overwrite.replyToEmail >
settings.setup.receiver.overwrite.replyToEmail = TEXT
settings.setup.receiver.overwrite.replyToEmail {
data = GP:tx_powermail_pi1|field|6
}
settings.setup.receiver.overwrite.replyToName >
settings.setup.receiver.overwrite.replyToName = COA
settings.setup.receiver.overwrite.replyToName {
10 = TEXT
10.data = GP:tx_powermail_pi1|field|1
10.noTrimWrap = || |
20 = TEXT
20.data = GP:tx_powermail_pi1|field|2
}
}

Plugin-Konfiguration – Sender-Mail

media_1373620204007.png

Analog zu den Einstellung für das Mail an den Receiver (Websitebetreiber) gibt es die Einstellungen auch für das Mail an den ausfüllenden Websitebesucher.
Hierzu ist dieser Mailversand zu aktivieren (plugin.tx_powermail.settings.setup.sender.enable = 1).

Folge:
Im Normalfall können Redakteure auch hier Absendername (und -adresse) der Mail nicht verändern.

Caching Framework nutzen

Für umfangreichere Datenkonstrukte, die häufig verwendet werden oder aber aufwändig zu erzeugen sind, ist ein Cache nützlich. Ein typischer Fall sind Dateilisten, die sich auf Verzeichnissen generieren (z.B. für eine einfache Bildergalerie). Die Inhalte der Verzeichnisse ändern sich meist nur extrem selten – wozu also immer wieder aufs Neue via Dateisystem auslesen, welche Dateien existieren? Hier ist es doch naheliegender, die Liste zu cachen und nur selten oder gar nur via gezielter Anforderung zu aktalisieren.
Einen von vielen Fällen, wo das Caching Framework in einer eigenen Extension zum Einsatz kommen kann…

Weiterlesen

Deutsches BE in TYPO3 4.5.1

In TYPO3 4.5.1 bereiten die Backend-Übersetzungen etwas Probleme. Diese Anleitung beschreibt, wie das TYPO3-Backend trotzdem deutsch sprechen kann.
(siehe hierzu http://bugs.typo3.org/view.php?id=17692)

Falls diese Anleitung nicht funktioniert:

  1. Inhalt aus /typo3conf/l10n/de/ löschen (alles)
  2. Aus typo3temp/ alle *-de.zip löschen

Extension Manager

Extension_Manager.png
  1. Extension Manager aufrufen

Übersetzungen aus dem Repository holen

bersetzungen_aus_dem_Repository_holen.png
  1. Extension Manager auswählen
  2. In Tab Language Package wechseln
  3. German auswählen
  4. Update from Repository ausführen

BE-User: Eigene Benutzer-Einstellungen anpassen

BE-User_Eigene_Benutzer-Einstellungen_anpassen.png
  1. In User Settings wechseln
  2. German auswählen

BE-User: Default-Sprache

BE-User_Default-Sprache.png
  1. Über User Admin….
  2. …dem freundlichen BE-User auch German als Default-Sprache geben.