Hi.
Ich beschäftige mich seit einiger Zeit mit Typo3 und stehe nun vor einem Problem:
Es ist ja möglich in Typoscript Markern einen Text zu geben. Z.B:
page.10.marks.SUBCONTENT_1 = TEXT
page.10.marks.SUBCONTENT_1.value = HELLO WORLD
Ebenso kann ich einem Marker den Inhalt eines Inhaltes geben, wie z.B.:
page.10.marks.SUBCONTENT_1 = TEXT
page.10.marks.SUBCONTENT_1.value < styles.content.getRight
Typo3 bietet 4 "Spalten" an (Links, Normal, Rechts, Rand), das bedeutet ich kann 4 Markern einen Text zuweisen.
Jetzt meine Frage: Ist es möglich, dass ich z.B. 5 oder mehr Seiteninhalte unter "Rand" einfüge (oder unter "Normal", egal) und diese dann per Typoscript Markern zuweise?
So etwas wie:
page.10.marks.SUBCONTENT_1.value < styles.content.content_id=14
Ist das möglich?
Ich bin für jede Antwort dankbar 🙂
Hallo.
Ist (natürlich) möglich - TYPO3 kann alles 🙂
Das ganze erfolgt über die Datei typo3conf/extTables.php
t3lib_extMgm::addPageTSConfig('
mod.SHARED.colPos_list = 0,1,2,3,4,5
');
$TCA["tt_content"]["columns"]["colPos"]["config"]["items"] = array (
"0" => array ("middle||Mitte||||||||","0"),
"1" => array ("left||Links||||||||","1"),
"2" => array ("down left||Unten Links||||||||","2"),
"3" => array ("right||Rechts||||||||","3"),
"4" => array ("down right||Unten Rechts||||||||","4"),
"5" => array ("footer||Fusszeile||||||||","5")
);
Damit sind die Spalten im BE vorhanden.
Frontend
temp.zusatzspalte = CONTENT
temp.zusatzspalte {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos = <spalten-nr>
languageField = sys_language_uid
}
}
(Quelle: http://www.pi-phi.de/45.html )
O.K. habe es jetzt wie folgt:
In der extTables.php:
// Hinzufuegen von mehr Spalten im Backend
t3lib_extMgm::addPageTSConfig('
mod.SHARED.colPos_list = 0,1,2,3,4,5
');
$TCA["tt_content"]["columns"]["colPos"]["config"]["items"] = array (
"0" => array ("subcontent_1||subcontent_1||||||||","0"),
"1" => array ("subcontent_2||subcontent_2|||||||","1"),
"2" => array ("subcontent_3||subcontent_3|||||||","2"),
"3" => array ("subcontent_4||subcontent_4|||||||","3"),
"4" => array ("subcontent_5||subcontent_5|||||||","4")
);
Im Typoscript:
page.10.marks.SUBCONTENT_1 = CONTENT
page.10.marks.SUBCONTENT_1.value < styles.content.getSubcontent_1
Un im Seiteninhalt bei Subcontent_1 hab ich dummy-text.
Trotzdem wird im Frontend anstelle der Markierung SUBCONTENT_1 nichts angezeigt.
Wo liegt mein Fehler? o.o
styles.content.getSubcontent_1 ist nicht definiert, d.h. TYPO3 weiß damit nichts anzufangen. Es sind nur get, getLeft, getRight, getBorder definiert. Weitere Spalten müssen von Hand abgefragt werden (s.o., <spalten-nr> entsprechend ersetzen).
Also z.B.
page.10.marks.SUBCONTENT_1 = CONTENT
page.10.marks.SUBCONTENT_1 {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos = 4
languageField = sys_language_uid
}
}
für die 4. Spalte
Also irgendwie klappt das noch nicht so ganz :/
Also im Typoscript steht jetzt folgendes:
# Default PAGE object:
page = PAGE
page.10 = TEMPLATE
page.10.template = FILE
page.10.template.file = fileadmin/templates/tmpl_index.html
page.10.marks.SUBCONTENT_1 = CONTENT
page.10.marks.SUBCONTENT_1 {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos = 1
languageField = sys_language_uid
}
}
Die Marker klappen. Wenn ich einfach als Inhalt nur TEXT wähle und ihn per TS eintippe, wird er angezeigt.
Es wird einfach kein Inhalt eingefügt. Der Marker mit ###XYZ### verschwindet.
Stimmt die Zeile mit "where = colPos = 1" auch? Also ich habe jetzt in allen Seiteninhalten von 0 bis 4 etwas eingetragen und trotzdem kommt da kein Content.
Was mache ich falsch?
Hm, also eigentlich sollte es klappen. Vielleicht fehlt doch irgendeine Kleinigkeit. Daher mal der Weg für Faule:
page.10.marks.SUBCONTENT_1 < styles.content.get
page.10.marks.SUBCONTENT_1.select.where = colPos=4
Damit kopieren wir die ganzen Einstellungen von der Abfrage der Normal-Spalte udn überschreiben dann die colPos in diesen Eisntellungen.
Also ich habe es jetzt hinbekommen... Allerdings lag der Fehler woanders.
Man musste noch im Backend ein Modul namens CSS-Irgendwas hinzufügen und das bei jeder Seite dann aktivieren. Dann geht es auch.
Das nur als Info für Leser, die vor dem gleichen Problem stehen :/
Aber danke für die Infos^^ Der Rest von euren Tipps stimmte ja xD
Meinst Du im TS-Template, dass im Reiter "Includes" bei den "Include static" noch "CSS Styled Content" inkludiert werden muss?
Und was soll man bei jeder Seite aktivieren müssen? Hab den Eindruck, dass Du es zwar hinbekommen hast, es aber nicht ganz der vorgesehene Weg ist.
Genau das war es. CSS Styled Content. Das musste man beim Template irgendwie aktivieren... o.o Ohne ging es nicht und mit geht es, also warum Sorgen machen 😉
Glaube nicht, dass es eine unsaubere art ist.... aber komisch ist das trotzdem, dass man etwas mit CSS einbinden muss um TS-Funktionen ans laufen zu bekommen....
Naja^^
MFG edvXpert
Unsauber klingt für mich nur der Teil
und das bei jeder Seite dann aktivieren.
Ich weiß nicht so ganz, was Du bei jeder Seite aktivierst/aktivieren musst. Denn das ist nicht der Standardweg.
Die Benahmung des "CSS Styled Content" hat einen historischen Hintergrund und entstammt der Zeit, als von tabellenbasiertem Layout auf tabellenloses, css-gestyltes Layout umgestellt wurde. Und dann ist der Name dabei geblieben.
Und wie glaubst Du denn dass T3 z.B. Text mit Bild rechts ohne CSS (und natürlich ohne Tabellen) realisieren kann?
Somit ist das CSS in css styled content schon gerechtfertigt 😃
Gruß
Michael
Ich weiß schon was CSS bedeutet 😉
Aber warum das CSS für die ZUORDNUNG von Content mit der entsprechenden PID aus der DB verantwortlich ist, DAS war der Grund für meine Verwunderung.
MFG edvXpert
page.10.marks.SUBCONTENT_1 < styles.content.get
Das hier ist in css_styled_content definiert. Ohne könntest die das Objekt styles.content.get nicht verwenden.
Dort werden auch alle Typo3 Content-Element Typen (Text, Text m. Bild, etc.) per TS und CSS definiert. Könnte man evtl. auch alles manuell machen, aber wer will das schon ;-)
css_styled_content muss eingentlich nur ein einziges Mal auf der Rootseite gesetzt werden. Dann wird es für alle weiteren Seiten standardmäßig wie anderes TS auch vererbt es sei denn man verwendet irgendwo wieder ein neues Template und kein ext. Template.
Hoffe das hilft etwas zum Verständnis.
Gruß
Michael