Hallo,
ich habe mit tt_news und mbl_newsevent ein "Kursangebot" realisiert. Wenn man den betreffenden Kurs ausgewählt hat, kommt man via int. link zu einem Bestellformular für Unterlagen (powermail).
In diesem habe ich ein drop-down des Typs "Typo Script Object" eingefügt, wo mir die Kurse (also die Newsbeiträge) zur Auswahl angezeit werden sollen.
Dazu das TS:
# Auswahlliste der angebotenen Kurse
lib.kursauswahl = COA_INT
lib.kursauswahl {
10 = TEXT
10.value = <label for="uid17">Wählen Sie ein Kurs</label><br />
20 = CONTENT
20.wrap = <select id="uid17" name="tx_powermail_pi1[uid17]" style="width:400px;">|</select>
20 {
table = tt_news
select {
pidInList = 30
orderBy = title
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10.dataWrap = <option value="{field:uid}">{field:title}</option>
10.insertData = 1
}
}
}
Das tolle: Das funzt sogar auf Anhieb! :o
Jetzt ist mein Hang zum Perfektionismus geweckt (komisch, wo ich doch neulich noch im Trüben gefischt habe) :o :
1.
Der suchende kommt ja von einem Kurs (Newsbeitrag) zu der Seite; kann ich das so übergeben, das gleich der Kurs ausgewählt wird, wo er vorher war? Die anderen sollten natürlich auch stehen bleiben (falls er ändern will).
2.
Kann ich - je nach gewählten bzw. übergebenen Kurs mir im Formular noch andere Daten in Feldern anzeigen lassen (z.B. Anfangs- und Endzeit aus newsevent).
Danke schonmal, ich mecker auch nicht mehr! #paralyzed#
Gruß aus Lippe,
Otti.
Die gute Nachricht:
Ja klar kannst du das
Die schlecht Nachricht:
Ich gebe dir ein Beispiel, das du für dich ummodeln kannst (also keine copy&paste Lösung).
Beispiel mit Ähnliches Bedingungen:
Über wt_directory kann man auf ein Powermail Formular linken und folgender String wird angehängt: powermail.html?tx_wtdirectory_pi1[pm_receiver]=23
Bei der 23 handelt es sich um die tt_address uid eines Datensatzes.
Jetzt möchte ich ein Feld (z.B. uid647) mit dem Namen aus dem Datensatz 23 vorfüllen:
# Name of current user
lib.nameOfCurUser = CONTENT
lib.nameOfCurUser {
table = tt_address
select {
pidInList = 88
andWhere {
data = GPvar:tx_wtdirectory_pi1|pm_receiver
wrap = tt_address.uid=|
}
}
renderObj = COA
renderObj.10 = TEXT
renderObj.10 {
field = name
}
}
# Prefill fields
plugin.tx_powermail_pi1 {
prefill {
uid647 < lib.nameOfCurUser
uid647.wrap = Send an email to <b>|</b>
}
}
Was das mit deinem Problem zu tun hat:
Genauso kannst du ein Link auf ein Formular generieren und die tt_news uid anhängen und dir dann alles mögliche aus der Datenbank hierzu herausholen
Grüße, Alex
Das ist ja eine Turboantwort!
Also da gehts schon los:
einpraegsam.net schrieb
Was das mit deinem Problem zu tun hat:
Genauso kannst du ein Link auf ein Formular generieren und die tt_news uid anhängen und dir dann alles mögliche aus der Datenbank hierzu herausholen
Wie bekomme ich einen Link im tt_news Eintrag dazu, eine uid anzuhängen (mit zu übergeben). Im Moment verlinkt er stumpf auf die Seiten-id.
Gruß,
Otti.
tt_news Template
<!-- ###TEMPLATE_SINGLE### begin -->
...
<a href="powermail.html&newsid=###NEWS_UID###">Powermail</a>
...
<!-- ###TEMPLATE_SINGLE### end -->
Genial, da hätte ich selber drauf kommen können (müssen).
Die ID aus dem Newsartikel wird jetzt übergeben:
http://sonstwas.de/index.php?id=90&newsid=6
Wobei 90 die Seiten-ID vom Powermail-Formular ist und 6 die ID vom Newsartikel.
Im TS des Formulars habe ich dann:
# aus tt_news übernommener Kurs
lib.kursfetch = CONTENT
lib.kursfetch {
10 = TEXT
10.value = <div class="tx_powermail_pi1_fieldwrap_html"><label for="uid19">Ihre Kursauswahl:</label><br /></div>
20 = CONTENT
20 {
table = tt_news
select {
pidInList = 30
andWhere {
data = GPvar:&newsid
wrap = tt_news.uid=|
}
}
renderObj = COA
renderObj.10 {
field = name
}
}
}
# Prefill fields
plugin.tx_powermail_pi1 {
prefill {
uid19 < lib.kursfetch
uid19.wrap = Ihr gewählter Kurs: <b>|</b>
}
}
Wobei 30 die ID vom Newscontainer ist und 19 die uid vom Feld in der Ext.
Angezeigt wird aber gar nichts!
Danke,
Otti.
data = GPvar:&newsid
zu
data = GPvar:newsid
Danke, bringt aber nix.
Der Fehler muss woanders liegen, weil ja gar nichts angezeigt wird.
Der Hase liegt irgendwo hier im Pfeffer:
Du schreibst:
andWhere {
data = GPvar:tx_wtdirectory_pi1|pm_receiver
wrap = tt_address.uid=|
Ich habe:
andWhere {
data = GPvar:newsid
wrap = tt_news.uid=|
}
Die "data =" Geschichte raff ich nicht.
Fehlt da bei mir nicht was?
Auf den ersten Blick sieht es gut aus. Bestimmt nur eine Kleinigkeit.
Versuche folgendes:
1.
data = GPvar:newsid
testweise durch eine statische Zahl ersetzen:
value = 8
2.
Was mir gerade ins Gesicht springt:
So weit ich mich erinnern kann, gibt es kein Feld mit Namen "name" in tt_news
field = name
War das nicht "title"
Hat beides nichts gebracht :o
Na dann jetzt Step by step:
1.
page.1 = TEXT
page.1.value = blabla
Wenn Ausgabe dann Schritt 2
2.
page.1 = CONTENT
page.1 {
table = tt_news
select {
pidInList = 30
andWhere {
value = uid=1
}
}
renderObj = COA
renderObj.10 {
field = title
}
}
Natürlich wenn es News gibt mit der uid1 und in der Seite 30
Was passiert hier?
Das scheint ein Ansatz zu sein; im Template steht noch mehr; wahrscheinlich ist die Stelle / Syntax falsch:
seite = PAGE
seite {
#stylesheet = fileadmin/css/styles.css
includeCSS.file1 = fileadmin/css/styles3.css
20 = TEMPLATE
20 {
template = FILE
template.file = fileadmin/templates/hbz_form.tmpl
workOnSubpart = DOKUMENT
}
}
# aus tt_news übernommener Kurs
lib.kursfetch = CONTENT
lib.kursfetch {
10 =
table = tt_news
select {
pidInList = 30
andWhere {
data = GPvar:tx_ttnews|newsid
#value = 18
wrap = tt_news.uid=|
}
}
renderObj = COA
renderObj.10 {
field = title
}
}
# Prefill fields
plugin.tx_powermail_pi1 {
prefill {
uid19 < lib.kursfetch
uid19.wrap = Ihr gewählter Kurs: <b>|</b>
}
}
# Auswahlliste der angebotenen Kurse
lib.kursauswahl = COA_INT
lib.kursauswahl {
10 = TEXT
10.value = <div class="tx_powermail_pi1_fieldwrap_html"><label for="uid17">Wählen Sie ein Kurs</label><br /></div>
20 = CONTENT
20.wrap = <select id="uid17" name="tx_powermail_pi1[uid17]" style="width:400px;">|</select>
20 {
table = tt_news
select {
pidInList = 30
orderBy = title
}
renderObj = COA
renderObj {
10 = COA
10 {
10 = TEXT
10.dataWrap = <option value="{field:uid}">{field:title}</option>
10.insertData = 1
}
}
}
}
Die "Auswahlliste der angebotenen Kurse" funzt, das "prefill fields" ist nur ein Versuch; oben wechsle ich template und css.
Von "aus tt_news übernommener Kurs" wird nichts angezeigt.
Danke,
Otti.
Ich weiß das es funktioniert, mir fehlt aber die Zeit mich hier noch weiter einzuarbeiten... Sorry
... ich bastel noch ein bischen. o.O
Also ganz von vorne:
seite.1 = TEXT
seite.1.value = blabla
gibt blabla auf der Seite aus ("page" ist bei mir "seite"); an welcher Stelle ist ja erstmal egal.
seite.1 = CONTENT
seite.1 {
table = tt_news
select {
pidInList = 30
andWhere {
value = uid=1
}
}
renderObj = COA
renderObj.10 {
field = title
}
}
gibt nix aus.
Da muss doch schon was faul sein. #angry#
Gruß aus Lippe,
Otti.
Na, geht doch :o
habe zunächst auf die Liste verzichtet und fülle statt dessen ein Feld:
# aus tt_news übernommener Kurs
lib.kursfetch = CONTENT
lib.kursfetch {
table = tt_news
select {
pidInList = 30
andWhere {
data = GPvar:newsid
wrap = tt_news.uid=|
}
}
renderObj = TEXT
renderObj.field=title
}
# Prefill fields
plugin.tx_powermail_pi1 {
prefill {
uid22 < lib.kursfetch
}
}
Der Fehler war IMHO:
renderObj = COA
Da musste "TEXT" hin.
Vielen Dank!
Gruß aus Lippe,
Otti.
Funktioniert alles? Freut mich...
otti schrieb
Nicht aufgeben!
Das ist genau das was man braucht bei TYPO3 🙂
Vielen Dank, ihr habt mir sehr geholfen. Stand bis eben auch vor dem Problem, ein Kursangebot aus tt_news/mbl_newsevent in powermail zu übernehmen. Da otti am Ende nur die Lösung mit Ausgabe in ein Feld hatte, poste ich hier mal mein TypoScript für die Dropdown-Liste:
lib.lehrgangField = CONTENT
lib.lehrgangField {
table = tt_news
select {
pidInList = 122
orderBy = title
where = title LIKE '1-%'
andWhere = FROM_UNIXTIME(datetime) > NOW()
}
renderObj = COA
renderObj.20 = TEXT
renderObj.20.field = title
renderObj.20.wrap = <option value="|">
renderObj.30 = TEXT
renderObj.30.field = tx_mblnewsevent_where
renderObj.30.stdWrap.wrap = Ausbildung#1, |
renderObj.40 = TEXT
renderObj.40.field = title
renderObj.40.stdWrap.wrap = (|)</option>
}
lib.lehrgangField.stdWrap.wrap = <select><option value="" selected="selected">- bitte auswählen -</option>|</select>
Das datetime-Feld wird benutzt, um den Anmeldeschluss zu bestimmen. Es werden nur Kurse im Dropdown-Feld angezeigt, die mit "1-" beginnen (wir haben mehrere Kursangebote, 1-xxx für Ausbildung#1, 2-xxx für Ausbildung#2, etc.) für die man sich auch noch anmelden kann.
Vielleicht hilft's ja noch jemandem 🙂