Inhalte aus den Spalten LINKS, NORMAL, RECHTS, RAND ausgeben
Wenn Sie im Backend alle 4 Inhalts-Spalten nutzen wollen, müssen Sie im TypoScript definieren, wo die Datensätze der einzelnen Spalten im Frontend ausgegeben werden sollen.
Nehmen wir an, Sie haben einen Inhaltselement in der Normal-Spalte. Ein weiteres Text-Seitenelement ist in der Randspalte. Mithilfe von phpMyAdmin können Sie auch selbst überprüfen, worin sich diese beiden Datensätze unterscheiden: Der 1. Text hat in der Spalte colPos den Wert 0, der 2. Text hat den Wert 3.
Hier die komplette Liste:
Spalte | colPos-Wert |
Links | 1 |
Normal | 0 |
Rechts | 2 |
Rand | 3 |
Aber wie kann der Inhalt ausgegeben werden?
Angenommen, Sie hätten ein Layout in folgender Art:
Beispiel: designvorlage.tmpl
<table>
<tr>
<td>###INHALT_NORMAL###</td><td>###INHALT_RAND###</td>
</tr>
</table>
<!-- ###SCREEN### -->
Wie spricht man die Marker an?
Die Marker ###INHALT_NORMAL### und ###INHALT_RAND### müssen nun von Typo3 ersetzt werden. Typo3 muss nun folgendes von Ihnen "erklärt" bekommen:
- Aus welcher Tabelle sollen die Daten kommen?
- Welche Spalte des Backends soll gezeigt werden?
- In welcher Reihenfolge sollen die Daten ausgegeben werden?
- Falls die Webseite mehrsprachig ist: Welche Sprache soll ausgegen werden?
Die Definition dieser Ausgabe geschieht im TypoScript-Setup:
TypoScrip-Setup:
- page = PAGE
- page {
- typeNum = 0
- 10 = TEMPLATE
- 10 {
- template = TEXT
- template.file = fileadmin/templates/designvorlage.tmpl
- workOnSubpart = SCREEN
- marks {
- INHALT_NORMAL = CONTENT
- INHALT_NORMAL {
- table = tt_content
- select {
- where = colPos = 0
- orderBy = sorting
- languageField = sys_language_uid
- }
- }
- INHALT_RAND = CONTENT
- INHALT_RAND {
- table = tt_content
- select {
- where = colPos = 3
- orderBy = sorting
- languageField = sys_language_uid
- }
- }
- }
- }
- }
In den Zeilen 1-3 wird die Seite 'page' mit einer zwingend anzugebenden typeNum definiert.
In Zeile 4 wird an Position 10 der Seite (hier die einzige Position) ein Template ausgegeben. Dieses Template kommt aus einer Datei, die wir vorher z.B. im Fileadmin im Ordner templates angelegt haben (Zeile 7).
Damit Sie z.B. in der Datei designvorlage.tmpl sowohl das Layout der Website sowie ein weiteres Template für eine Druckansicht speichern können, bietet Typo3 die Möglichkeit, einen Bereich aus dem Template zu extrahieren (Zeile 8).
Ein Template kann nun Marker enthalten. Diese haben in der Designvorlage immer drei '#' vor und hinter dem in Großbuchstaben geschriebenen Markernamen. In TypoScript werden diese Marker dann allerdings ohne die '#' angegeben.
Wie Sie sehen können, sind die Abschnitte INHALT_NORMAL und INHALT_RAND bis auf den Wert von colPos völlig gleich.
Kommentare von registrierten Benutzern:
Sehr interessant...habe als Anfänger auch Probleme mit Typo3! Bis jetzt alles mit Hilfe von "Praxiswissen Typo3" zum Laufen gebracht, nur bei der Ausgabe von Texten komme ich nicht klar. Muß das o.a. TypoScript-Setup nun in die "Root" eingebaut werden, oder kommt es als Template auf die jeweilige Seite (Homepage, Impressum etc.)? Ich komme da ein wenig durcheinander, da Zeile 1 + 2 ja schon in der "Root" stehen (PAGE)!
Nachdem ich durch's Experimentieren nun schon das vierte mal eine Installation auf dem Server vorgenommen habe, möchte ich nicht schon wieder was "schießen" ...
Grüße aus München an die 'gestreßten' Moderatoren[/HTML][/TYPOSCRIPT][/PHP]
Klasse: Kommentar von wyy!!!
Mit der folgenden Zeile kann man auch im Root Page Setup die Reihenfolge ändern:
Ich habe leider noch nicht herausgefunden wie man ohne Layouts definiert zu haben die Bezeichnung der Spalten im Root Page Setup per Typo Script beeinflussen kann. Folgendes funktioniert dann nämlich nicht:
Spalte nicht anzeigen, wenn kein Content vorhanden:
| Typoscript: | Zeilennummerierung: An / Aus |
- temp.marginale_rechts < styles.content.getRight
- temp.marginale_rechts.stdWrap.required = 1
- temp.marginale_rechts.stdWrap.wrap = <div class="marginale_rechts">|</div>
Interessant wäre noch zu wissen, wie man eine Spalte ausblendet, wenn kein Content vorhanden ist.
Ich hab nämlich jetzt nach dem Tutorial das Problem, daß ich auf Seiten ohne Content in "Rechts" eine leere Spalte am rechten Rand habe...
Hey! Irgendwie macht ers bei mir nicht... Außer die "colPos = 0" will er mir nichts anzeigen!
Ich habe auch "template = FILE" gesetzt....
Vielen lieben Dank! Auch mir als absolutem "T3-Newbie" hat dieses kleine Tutorial sehr geholfen. Mir ging es ähnlich wie meinem Vorredner.
*Daumen verdammt hoch*
Mann kann Spalten sogar völlig frei definieren:
In die Datei typo3conf/extTables.php:
| Php: | Zeilennummerierung: An / Aus |
- // Spltenanzeige für alle pages
- t3lib_extMgm::addPageTSConfig('
- mod.SHARED.colPos_list = 0,1,2,3,4,5
- ');
- // Spaltenarray neu definieren (letzter Param ist sortierung im BE)
- $TCA["tt_content"]["columns"]["colPos"]["config"]["items"] = array (
- "0" => array ("Haupttext||Haupttext||||||||","0"), //get
- "1" => array ("Spalte 1||Spalte 1||||||||","1"), //getLeft
- "2" => array ("Spalte 2||Spalte 2||||||||","2"), //getRight
- "3" => array ("Spalte 3||Spalte 3||||||||","3"), //getBorder
- "4" => array ("Spalte 4||Spalte 4||||||||","4"), //getAdditional
- );
nun muss das TS-Template die Natürlich auch finden:
| Typoscript: | Zeilennummerierung: An / Aus |
- styles.content.getAdditional < styles.content.get
- styles.content.getAdditional.select.where = colPos=4
Ganz einfach, ohne Extensions, Fehlerfrei
bestimmten Inhalt mehrfach verwenden - Angabe von ID des/der Seitenelemente:
marks.XY = RECORDS
marks.XY {
tables = tt_content
source = ID1, ID2, ID3
dontCheckPid = 1
}
- - - - - - - - - - - - - - - -
Bestimmten Inhalt mehrfach verwenden - Angabe von Seiten-ID (+ Angabe von Colpos):
marks.XY = CONTENT
marks.XY {
table = tt_content
select {
pidInList = ID1, ID2
orderBy = sorting
where = colPos= 0
}
}
Man kann die Anzahl der Spalten im Backend mit folgendem Zusatz in der TSconfig der Root-Seite reduzieren:
Bei "Nummer der Spalten" muss man einfach die oben beschriebenen Nummern eingeben (0=Normal,..). Wichtig hierbei ist auch die Reihenfolge, denn diese wird 1:1 umgesetzt,
Das stimme ich Kesonic zu.
Ich hätte nur noch gerne gewusst, wie ich die Anzahl der Spalten reduzieren kann. Ich würde im Backend gerne nur Normal und Rechts erscheinen lassen, aber nur bei einem bestimmten Template
Danke!
Ich beschäftige mich erst seit kurzem mit Typo3 und habe div. Dokumentationen und 2 Bücher über Typo3 angelesen bzw. bin dabei.
Komischerweise habe ich auf diese grundlegende und so naheliegende Frage noch nie eine so kompakte und verständliche Antwort bekommen wie hier!






