[TYPO3-german] Teaserseite mit vier unterschiedlichen Teaserdarstellungen
Peter Russ
peter.russ at 4many.net
Thu Sep 21 22:03:36 CEST 2006
Christoph Wiemers schrieb:
[...]
>
> Ok, aber ich verstehe nicht ganz wie ich das in einer Teaserseite
> unterbringe. Bezieht sich die Layoutdarstellung 1, 2. 3 .. nicht auf
> die Darstellung der Seite selbst?
>
> Gruß Christoph
Ok der Reihe nach.
Einfache Version:
-----------------
Ideal zum Teasern geeignet ist der Seitentyp "Erweitert" (doktype 2, s.u):
in der _Inhaltsangabe_ kann der individuelle "Teasertext" erfasst
werden. Ein individuelles Bild wird in _Dateien_ hinterlegt.
Das geeignet Element in Typoscript, um aus den Seiten nun die
Teaserzusammenstellung zu erstellen, ist "CONTENT"
also
<code>
temp.teaserPage=CONTENT
</code>
Da wir den Inhalt der Seiten anteaser wollen, müssen wir auf die Tabelle
"pages" zugreifen, womit wir
<code>
temp.teaserPage=CONTENT
temp.pages{
table=pages
}
</code>
erhalten.
Nun gilt es die Seiten zu bestimmen, die in einem Verzeichnis vorhanden
sind. Nehmen wir an dein Verzeichnis (parent) hat die _id=12_ und wir
wollen nur die Seiten vom Typ "Erweitert" (doktype 2, s.o.)
<code>
temp.teaserPage=CONTENT
temp.pages{
table=pages
select{
pidInList=12
where=doktype in (2)
}
}
</code>
Damit erhälst Du alle Seiten die direkte Kinder (childs) von
Seite/Verzeichnis mit der id=12 sind.
Nun gilt es festzulegen, wie das Ergebnis dargestellt werden soll. Dazu
bietet das Objekt CONTENT die Eigenschaft renderObj. Diese werden wir
wie im Posting zuvor als Fallunterscheidung definiern, wo bei als
_Unterscheider_ (key) die von Typo3 generierte Variable
"{cObj:parentRecordNumber}", einem fortlaufenden Rekord-Zähler,
verwenden. Dabei sollen die 1 & 3 Record mit Text und Bild, Record 2
ohne Bild und alle Weiteren (default) nur mit Überschrift gerendert
werden. Weiter lassen wir auf die Seiten direkt verlinken.
Etwaigen HTML-Code entfernen wir aus der Inhaltsangabe, maximal 200
Zeichen sollen verwendet werden, der Umburch soll an einer Leerstelle
erfolgen und wir wollen '...' als Anzeige, dass der Text weitergeht.
Wir erhalten damit
<code>
temp.teaserPage=CONTENT
temp.pages{
table=pages
select{
pidInList=12
where=doktype in (2)
}
renderObj=CASE
renderObj{
key={cObj:parentRecordNumber}
#Alle Records > 3
default=COA
default{
10=TEXT
10{
field=title
wrap=<h1>|</h1>
}
stdWrap.typolink.parameter.field=uid
}
#Erste Record. Wir sparen uns Arbeit und kopieren
#den Inhalt von default, dann müssen wir nur die
#Änderungen hinzufügen
1 < .default
1{
20=TEXT
20{
field=abstract
crop=200|...|1
stripHtml=1
wrap=<div class="teaser-text">|</div>
}
30=IMAGE
30{
file.import=uploads/media/
file.import.listNum=0
file.import.field=media
wrap=<div class="teaser-img">|</div>
}
}
#3. Record soll wie 1. gerendert werden
3 < .1
#2. Record soll wie 1. aber ohne Bild rendert werden
2 < .1
2.30 >
}
}
</code>
Nun klar?
Aufwendiger:
------------
Nehmen wir nun an, du möchstest statt den Inhaltsangaben des Seitentyps
"Erweitert" auf das jeweils 1. Inhaltselement einer Seite zugreifen.
Hier wird vorausgesetzt, dass diese vom Typ "Text mit Bild" sind, denn
sonst haben wir keine Bilder zum darstellen ;-)
Die Herausforderung besteht nun darin, zunächst alle Seiten (childs) zur
Hauptseite (parent) zu finden. Dies erreichen wir mit:
<code>
temp.pidInList=CONTENT
temp.pidInList{
table=pages
select{
pidInList=12
}
renderObj=TEXT
renderObj{
field=uid
wrap=|,
}
}
</code>
Diese Komma-separierte Liste setzen wir nun in unsere Abfrage ein. Da
wir nun auf die Inhaltelemente zugreifen, verwenden wir die Tabelle
tt_content, der Inhaltstype soll "Bild mit Text sein", wir holen nur das
erste Element aus der Spalte "normal"
Also:
<code>
temp.teaserPage=CONTENT
temp.pages{
table=tt_content
select{
pidInList<temp.pidInList
selectField=uid,pid,header,bodytext,image,min(sorting)
where=colPos=0 and ctype='textpic'
groupBy=pid
}
}
</code>
Das min(sorting) sorgt dafür, dass wir die 1. Inhaltselment einer Seite
bekommen, dass vom Typ "Bild mit Text" ist.
Das Renderobjekt klappt jetzt allein?
Gruss. Peter.
--
Fiat lux!
Docendo discimus.
_____________________________
4Many® Services
openBC: http://www.openbc.com/go/invuid/Peter_Russ
More information about the TYPO3-german
mailing list