Hallo liebe Experten
Ich möchte ein einem Powermail Formular Werte aus Calendar Base zur Auswahl stellen. Folgende Anleitung hat mir dabei schon sehr viel weiter geholfen:
#77259
Hier mein TS:
#Feld Veranstaltung in Selectbox von Powermail
lib.veranstaltung = COA_INT
lib.veranstaltung {
10 = TEXT
10.value = <label class="powermail_label" title="" for="uid28"><b>Veranstaltung</b></label>
20 = CONTENT
20.wrap = <select id="uid28" name="tx_powermail_pi1[uid28]" size="1" class="powermail_field powermail_select" >|</select>
20 {
table = tx_cal_event
select {
pidInList = 28
orderBy = start_date
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = title
wrap = <option value="|" >
}
20 = TEXT
20 {
field = start_date
wrap = |
}
30 = TEXT
30 {
field = title
wrap = |</option>
}
}
}
}
}
Nun möchte ich jedoch nicht alle Veranstaltungen in der Auswahlliste sehen, sondern lediglich diejenigen deren start_date >= Heute. Wie kann ich diese Abfrage anpassen?
Vielen Dank für die Hilfe
Zu deiner eigentlichen Frage findest du hier die Lösung:
#82544
Dort ist beschrieben, wie man eine Datenbankabfrage in TypoScript bauen kann, die eine Zeit berücksichtigt
Ansonsten musst du in powermail 2.1 nicht mehr das ganze HTML selber zusammenschrauben (zumal dein Beispiel auch nur geht, wenn der Marker des Feldes auch wirklich {uid28} heißt). Das geht einfacher - siehe http://www.nicolas-stey.de/typo3-cms/eintrag/powermail-2-prefill-von-select-checkbox-und-co.html
Vielen Dank, ich komme der Sache näher. Zumindest weiss ich nun wie man die Bedingungen der Abfrage im Typoscript darstellt. :-)
Nur das mit der Datumsabfrage krieg ich nicht hin. Die Tabelle tx_cal_event speichert das Datum als Integer Wert. Bsp:
select.where = start_date >= 20141126
Zeigt mir alle Datensätze ab 26.11.2014 (Bsp. Heute). Soweit so gut.
Wie ersetze ich nun 20141126 durch das aktuelle Datum umgewandelt in eine 8-stellige Zahl?
Und wie kann ich im Gegenzug 20141126 wieder als Datum ausgeben?
Mit den Stichworten "select.where.stdWrap" und "date:ymd" solltest du zu einer Lösung kommen.
ich kriegs nicht hin :-(
Ich habe die Hinweise berücksichtigt und habe nun:
lib.kurs = CONTENT
lib.kurs {
table = tx_cal_event
select {
pidInList = 8
where = start_date >= date:ymd
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10.dataWrap = {field:start_date} {field:title}[\n]
}
}
}
was leider immer noch nicht funktioniert.
where = start_date >= date:ymd
Wäre wirklich mega dankbar für nochmal etwas Hilfe, mir läuft die Zeit davon.
Für alle die dasselbe oder ein ähnliches Problem haben, hier nun meine Lösung:
#Feld Veranstaltung in Selectbox von Powermail
lib.veranstaltung = COA_INT
lib.veranstaltung {
10 = TEXT
10.value = <label class="powermail_label" title="" for="veranstaltung"><b>Veranstaltung</b></label>
20 = CONTENT
20.wrap = <select id="veranstaltung" name="tx_powermail_pi1[veranstaltung]" size="1" class="powermail_field powermail_select" >|</select>
20 {
table = tx_cal_event
select{
pidInList = 28
where.data = date:Ymd
where.wrap = start_date >= |
orderBy = start_date
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10 {
field = title
wrap = <option value="|">
}
#Integer Datum in lesbares Format umwandeln
#Tag
20 = TEXT
20 {
field = start_date
stdWrap.substring = 6,2
wrap = |.
}
#Monat
30 = TEXT
30 {
field = start_date
stdWrap.substring = 4,2
wrap = |.
}
#Jahr
40 = TEXT
40 {
field = start_date
stdWrap.substring = 0,4
}
#Titel der Veranstaltung
60 = TEXT
60 {
field = title
wrap = |</option>
}
}
}
}
}