Zum Inhalt springen

mailformplus hooks

Erstellt am 21. April 2009 · 1 Antwort · letzte Antwort am 23. April 2009

Tags: Frage

metti ·

Heidiho,

also erst einmal möchte ich mich für die Hilfe bedanken, die ich hier schon ohne Mitglied gewesen zu sein, gefunden habe 🙂

Ich habe ein Problem bei der Verwendung von mailformplus, das ich über den saveUserFunc-Hook lösen wollte.

Ich weiß, es ist vielleicht trivial, aber: Der Nutzer wird im Formular aufgefordert, seine Anrede auszuwählen. (Herr/Frau,Mrs/Mr etc.)

Das funktioniert (auch mehrsprachig). Nun will ich den Nutzer auf der Erfolgsseite und in der Bestätigungs-Mail natürlich mit 'Sehr geehrte Frau'... 'Sehr geehrter Herr...' und nicht mit 'Sehr geehrte Herr' ansprechen.

Ich habe es jetzt über zwei Varianten versucht:

Einmal über das Sprachfile:

'thx_salutation' => (t3lib_div::_GP('salutation')=='mrs') ? 'Sehr geehrte Frau' : 'Sehr geehrter Herr',

und einmal über den saveUserFunc-Hook:

function user_job_post(&$p,&$r) {
    $s_mr = $r->LOCAL_LANG[$r->LLkey]['thx_salutation_mr'];
    $s_mrs = $r->LOCAL_LANG[$r->LLkey]['thx_salutation_mrs'];

    if (empty($r->LOCAL_LANG[$r->LLkey]['thx_salutation']) && !empty($s_mr))
      $r->LOCAL_LANG[$r->LLkey]['thx_salutation'] = ($p['data']['salutation'] == 'mr') ? $s_mr : $s_mrs;
      
    if (!empty($p['data']['title']))
      $r->LOCAL_LANG[$r->LLkey]['thx_salutation'] .= ' '.$p['data']['title'];
  }

Bei der Variante über das Sprachfile ist das Problem, dass mailformplus trotz deaktiviertem Caching das Sprachfile nicht immer neu lädt, wodurch meine Auswertung darin natürlich sinnlos wird.

Das Problem mit dem Hook ist das, dass mein Schreiben in die Klassen-Instanz keinen Effekt hat 🙁

Das mit der Anrede ist ja noch ein recht unwichtiges Ding, aber wenn es allgemein darum geht, die Daten nachzubereiten und dem Nutzer verändert anzuzeigen, seh ich echt schwarz.

Es sei denn, ihr habt zufällig eine Lösung für dieses Ding?

Danke euch schon mal,

Metti

metti ·

Hmm. Schon ein wenig traurig, dass keiner geantwortet hat. Aber selbst ist der Mann.

Habe es "einfach" über andere Hooks gelöst. Hier nun meine Vorgehensweise (quasi eine Anleitung für unterschiedliche Anrede für unterschiedliche Geschlechter in mailformplus):

1. Neue Extension "Frontend-Plugin" anlegen und installieren.
2. In dieser Extension in der ext_localconf.php folgende zwei Zeilen einfügen:

$TYPO3_CONF_VARS['EXTCONF']['th_mailformplus']['tx_thmailformplus_pi1']['show_form'][]=
'EXT:[NEUE_EXTENSION]/mailformplus_hook/class.tx_thmailformplus_hooksHandler.php:&tx_thmailformplus_hooksHandler';

$TYPO3_CONF_VARS['EXTCONF']['th_mailformplus']['tx_thmailformplus_pi1']['send_form'][]=
'EXT:[NEUE_EXTENSION]/mailformplus_hook/class.tx_thmailformplus_hooksHandler.php:&tx_thmailformplus_hooksHandler';

3. Die Ordner und Dateien entsprechend den obigen Pfaden anlegen.
4. In die Datei class.tx_thmailformplus_hooksHandler.php folgendes schreiben:

<?php
class tx_thmailformplus_hooksHandler {
  function show_form_postHandling(&$globalMarkerArray, &$relObj) {
    $s_mr = $GLOBALS['TSFE']->sL('LLL:'.$relObj->langFile.':thx_salutation_mr');
    $s_mrs = $GLOBALS['TSFE']->sL('LLL:'.$relObj->langFile.':thx_salutation_mrs');
    $gp = $relObj->get_post;
    
    $salutation = ($gp['salutation'] == 'mr') ? $s_mr : $s_mrs;
     
    if (!empty($gp['title']))
      $salutation .= ' '.$gp['title'];
      
    $globalMarkerArray['###thx_salutation###'] = $salutation;
    //print_r($r);
  }
  function send_form_markers(&$globalMarkerArray, &$relObj) {
    $this->show_form_postHandling($globalMarkerArray, $relObj);
  }
}
?>

5. Im Mailformplus-Template an beliebiger Stelle (z.B. auf der Danke-Seite oder in der Mail) den Marker ###thx_salutation### eintragen.
6. In die Sprachdatei für Mailformplus folgendes eintragen:

'thx_salutation_mrs' => 'Sehr geehrte Frau ',
'thx_salutation_mr' => 'Sehr geehrter Herr ',

Alle Caches leeren und gucken was passiert. Wahrscheinlich ist ein explizites Aufrufen des Plugins via

plugin.tx_neueextension_pi1{
    show=1
}

von nöten. (Da bin ich mir aber nich wirklich sicher)

Die Lösung mit thx_salutation_mrs und thx_salutation_mr ist sicherlich nicht besonders elegant, da die Anrede in einigen Sprachen für beide Geschlechter die gleiche ist und das demzufolge doppelt auszufüllen wäre. Aber es funktioniert.

Viel Spass.