Hallo,
ich möchte gern ein Formular per Typoscript auf einer Page ausgeben - leider bekomm ich bis jetzt nichts angezeigt.
page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/template/css/main.css
page.10 = TEMPLATE
page.10 {
template = FILE
template.file = fileadmin/template/html/main.html
workOnSubpart = DOCUMENT_BODY
subparts.CONTENT < styles.content.get
}
#-> bis hier funktioniert alles
lib.test = COA
lib.test {
10 = TEXT
# id=7 = Page wo die form ausgegeben werden soll
10.value = <form action="7" method="get">
20 = TEXT
20.value = <label for="thema">Thema:</label>
30 = TEXT
30.value = <select id="thema" name="thema" size="1">
}
Muss ich im html Template ebenfalls ein <form> element anlegen? Ich arbeite ohne TV.
gruß
saoirse
Dein Formular ist im Obekt lib.test
Das musst du schon irgendwo ausgeben
das hab ich ganz vergessen. :o
page.20 < lib.news_filter
Jetzt hab ich aber noch zwei Sachen, die mir noch nicht gefallen.
Bis jetzt wird "Thema: und ein leeres Dropdown-Menü" auf der ersten Seite angezeigt.
Allerdings möchte ich gern, dass dieses Menü nur auf der Seite mit der ID=7 angezeigt wird. Ich dachte, dass geht über
<form action="7" method="get">
Die zweite sache ist, dass das Menü noch leer ist. Über ein Element vom Typ CONTENT möchte ich gern Daten auslesen, die dann in diesem Dropdown Menü stehen sollen - wie muss ich das in lib.test einbinden?
get_content = CONTENT
#... (tabelle etc. auswählen)
lib.news_filter = COA
lib.news_filter {
10 = TEXT
10.value = <form action="7" method="get">
20 = TEXT
20.value = <label for="thema">Thema:</label>
30 = TEXT
30.value = <select id="thema" name="thema" size="1">
40 < get_content
40.select.where = parent_category= ##Thema-ID##
}
Wo ich mir nicht sicher bin, ist die ##Thema-ID##. Was stellt diese ID dar und wie komm ich auf die richtige?
gruß
saoirse
Wieso benutzt du keine Extension dafür, außerdem gibt es für Formulare das FORM-Objekt.
Kleines Beispiel:
###Formular###
tt_content.mailform = COA
tt_content.mailform {
20 = FORM
20 {
dataArray {
10.label = Name:
10.type = name=input
10.value =
10.required = 1
20.label = Auswahl
20.type = auswahl=select
20.valueArray {
10.label = wert1
10.value = 1
20.label = wert2
20.value = 2
20.selected = 1
}
30.type = senden=submit
30.value = Senden
}
}
}
lib.formular < tt_content.mailform
Die Ausgabe erfolg in einer Tabele, falls du kein Lust darauf hast kannst du die nötigen Anpassungen unter
...\typo3\sysext\css_styled_content\static in der Datei setup.txt machen.
Ich würde trotzdem eine Extension benutzen da diese bequemer sind.
Viel Spaß
vielen Dank für deinen Ansatz.
Wieso benutzt du keine Extension dafür, außerdem gibt es für Formulare das FORM-Objekt.
Kann ich hier die Anzahl der Labels auch variabel lassen? Eigentlich möchte ich gern Daten aus einer Tabelle der Datenbank auslesen und diese sollen dann die Labels darstellen. Konkret geht es um die tt_news_cat Tabelle aus der ich die vorhandenen Kategorien auslesen möchte.
Wie kann ich diese Daten, die sich in
get_content = CONTENT
befinden sollen, in die Tabelle übernehmen?
Als zweite Frage habe ich noch, wie man es hinbekommt, dass dieses Formular nur auf der Seite mit der ID=7 ausgegeben wird? Bis jetzt steht dieses Formular in einem extension-Template welches in das Root-Template eingebunden wird. Funktioniert das über eine if-Abfrage?
gruß
saoirse
1. Also Daten holt man sich generell mit dem Datentyp getText. In der TSref gibt es die Funktion/Eigenschaft data (von stdWrap) die sich für solche Sachen bestens eignet. Außerdem ist da ein Typ DB: der es erlaubt auf alle Tabellen die im TCA eingetragen sind zuzugreifen.
Syntax:
DB: tabellenname : uid : feldname
Beispiel:
temp.label = Text
temp.label = DB:tt_news_cat:123:blabla
2. Hier sind Conditions hilfreich. Im Beispiel wird das TLO nur für die Seite mit der PID7 erzeugt
[globalVar = TSFE:id = 7]
lib.news_filter = COA
lib.news_filter {
...
}
lib.news_filter < tt_content.mailform
[GLOBAL]
vielen Dank für deine Hilfe. Das mit der globalVar hab ich verstanden und übernommen.
der TSref gibt es die Funktion/Eigenschaft data (von stdWrap) die sich für solche Sachen bestens eignet
hab ich mir angeschaut.
plugin.tt_news.categorySelection.data = GPvar : categories
Kann man die Ausgabe oder den Inhalt dieser Variablen überprüfen? So dass man sieht, welchen Inhalt sie besitzt? Das Problem ist nämlich, dass sich die Kategorien in einem SysFolder mit Id=11 befinden und die Select-Anweisung auf der Seite mit ID=7 angezeigt werden sollen.
hab dann im Manual zur tt_news einen Ansatz gefunden (mit einigen Kommentaren von mir):
[globalVar = TSFE:id = 7]
#glaube dass diese Zeile wirkungslos ist hier
plugin.tt_news.categorySelection.data = GPvar : categories
get_categories = CONTENT
get_categories {
table = tt_news_cat
select {
#id vom sysfolder wo kategorien gelistet sind
pidInList = 11
where = parent_category=0
orderBy = title
}
renderObj = COA
renderObj {
10 = TEXT
#wie wird hier die uid bestimmt?
10.field = uid
10.dataWrap = <option value="|">
10.insertData = 1
20 = TEXT
20 {
field = title
wrap = <strong>|</strong>
}
}
}
#anschließend möchte ich gern den Inhalt dieser Abfrage ausgeben
lib.news_filter = COA
lib.news_filter {
10 = TEXT
10.value = <form action="7" method="get">
20 = TEXT
20.value = <label for="thema">Thema:</label>
30 = TEXT
30.value = <select id="thema" name="thema" size="1">
40 < get_categories
40.select.where = parent_category= ##Thema-ID##
}
page.20 < lib.news_filter
[GLOBAL]
bis jetzt sehe ich lediglich "Thema: + eine Auswahlmöglichkeit" jedoch ohne jeglichem Inhalt.
gruß
saoirse