Zum Inhalt springen

[Powermail] Geänderte fe_user-Felder in E-Mail hervorheben

Erstellt am 14. Mai 2010 · 11 Antworten · letzte Antwort am 18. Mai 2010

Tags: Powermail, Frage

sebastian_wr ·

Hallo,

in unserem Formular werden einige Felder mit den Werten aus fe_user gefüllt. Nun würde ich gerne in der E-Mail sichtbar machen, wenn der User ein Feld überschreibt.

Mache ich das lieber per TS oder über einen Hook?

Für einen Hook hätte ich natürlich eine Idee. Da könnte man ja relativ einfach (vermute ich) die geänderten Felder durchlaufen und gegen die DB checken.

Hat da jemand einen Vorschlag? 🙂 Schonmal vielen Dank im Voraus!

Viele Grüße,
Sebastian

sebastian_wr ·

Andere Frage, die in dem Zusammenhang auch interessant ist: Ich hatte es mal geschafft, dass per TS bestimmte Felder - egal, was der User dort eingetragen hat - in der E-Mail einen bestimmten Wert hatten.

Die Werte wurden also _nach_ dem Abschicken mit TypoScript überschrieben.

plugin.tx_powermail_pi1 {  
  mode.email.recipient_mail {
   uid25 = TEXT
   uid25.value = foobar
  }
}

Dieser Abschnitt aus dem Beispiel-TS im Ext.-Ordner tut leider nix und mir fällt auch nicht mehr ein, wie ich das damals gemacht hab. Es ging auf jeden Fall. 😉

Hast' nen Tipp für mich? Vielen Dank!

edit:

Habs jetzt. Korrekterweise muss die zweite Zeile

    mode.recipient_mail {

heißen. Mea culpa.

sebastian_wr ·

Würde jetzt gerne etwas aus der Datenbank auslesen und in die E-Mail werfen. Habe es jedoch bisher nicht hinbekommen. Hier mein TS:

lib.title = CONTENT
lib.title {
  table = tt_news
  select {
    pidInList = 43
    andWhere {
      intVal = 1
      data = GPvar:sid
      wrap = tt_news.uid=|
    }    
  }        
  renderObj = TEXT
  renderObj.field = title
  renderObj.wrap = <h1>|</h1>
}

plugin.tx_powermail_pi1 {  
  mode.recipient_mail {
   uid25 < lib.title
  }
}

In der E-Mail bleibt das Feld leider leer. Normalerweise müsste da doch ein TEXT-Objekt zurückgegeben werden, was man dann einfügen kann? Mit uid25 < lib.title.renderObj kommt <h1>&nbsp;</h1> raus.

Was mache ich falsch?

einpraegsam.​net ·

was ist wenn du den Wert direkt auf der Seite ausgibst:

page.20 < lib.title

P.S.: Bitte künftig bei neuer Frage einen neuen Post aufmachen

sebastian_wr ·

Funktioniert prima. Das hab ich ja auch z.B. auf der Seite davor als Seitentitel verwendet (deswegen auch das <h1>).

einpraegsam.​net ·

Ins Blaue:
Ich könnte mir eine Kollision vorstellen, da powermail selbst .field nutzt. Das könnte das .field aus dem Render Objekt überschreiben...

sebastian_wr ·

Hast du denn spontan eine Idee, wie man das umsetzen könnte? Werte aus der Datenbank in die E-Mail schmeißen, ohne prefill zu nutzen? (wäre ja mit relativ geringen Kenntnissen manipulierbar)

einpraegsam.​net ·

Was auf jeden Fall geht
Ändere das betroffene Feld in ein TypoScript Feld ab. Dann das Feld manuell nachbauen:

lib.feld = COA
lib.feld {
  10 = TEXT
  10.value = <input type="text" name="uid123" value="
  20 < lib.title
  30 = TEXT
  30.value = " />
}

Ansonsten könnte man noch etwas mit dem Register probieren...

sebastian_wr ·

Das Nachbauen find ich eher blöd, da der Wert dann ja trotzdem wieder geändert werden kann. Habe mal was mit dem register versucht, jedoch wird der Wert nicht ausgegeben:

lib.coursedata = LOAD_REGISTER
lib.coursedata {
  coursetitle = CONTENT
  coursetitle {
    table = tt_news
    select {
      pidInList = 43
      andWhere {
      intVal = 1
        data = GPvar:sid
        wrap = tt_news.uid=|
      }    
    }        
    renderObj = TEXT
    renderObj.field = title   
  } 
}

page.20 = TEXT
page.20.data = register:coursetitle
sebastian_wr ·

Leider lassen sich die Werte aus dem Register nicht übernehmen. Auch nicht mit Prefill. Folgendes hat keine Auswirkungen:

lib.test = CONTENT
lib.test {
    ...

    renderObj = LOAD_REGISTER
    renderObj {
        regtest = TEXT
        regtest.field = title
    }
}

plugin.tx_powermail_pi1.prefill {
   uid25 = TEXT
   uid25.data = register:regtest
   // leider leer!
}

Ich arbeite jetzt einfach erstmal mit hidden-Feldern und normalem prefill ohne Register. Ist zwar nicht ganz wasserdicht, aber ich denke, das wird es tun.