Zum Inhalt springen

Übergabe tt_news an powermail

Erstellt am 19. Februar 2009 · 24 Antworten · letzte Antwort am 16. Februar 2012 · Seite 1 von 2

Tags: Powermail, tt_news, Frage

otti ·

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.

einpraegsam.​net ·

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&nbsp;<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

otti ·

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.

einpraegsam.​net ·

tt_news Template

<!-- ###TEMPLATE_SINGLE### begin -->
	...
	<a href="powermail.html&newsid=###NEWS_UID###">Powermail</a>
	...
<!-- ###TEMPLATE_SINGLE### end -->
otti ·

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.

otti ·

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?

einpraegsam.​net ·

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"

einpraegsam.​net ·

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?

otti ·

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.

otti ·

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.

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.

martin.​filip ·

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,&nbsp;|
  renderObj.40 = TEXT
  renderObj.40.field = title
  renderObj.40.stdWrap.wrap = (|)</option>
}
lib.lehrgangField.stdWrap.wrap = <select><option value="" selected="selected">- bitte ausw&auml;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 🙂