Aaaaaaaaaaah seeeehr schoen.
Genau was gesucht war 😉
Jetz gehs ab hier.. Hehe..
Vielen, vielen Dank 🙂
Aaaaaaaaaaah seeeehr schoen.
Genau was gesucht war 😉
Jetz gehs ab hier.. Hehe..
Vielen, vielen Dank 🙂
Hallo
Habe das Beispiel ausprobiert, komischerweise zeigt es bei mir nur den Titel der Seite an, verlinkt. ALso, wenn ich einen oder mehrere Ausgangspunkte angebe, werden diese (Seiten)Namen angezeigt mit einer Liste. Wenn ich nichts eingebe, steht root, logisch. 🙂 Es werden aber nur mehrere gelistet, wenn ich die von hand im Ausgangspunkt angebe.
Komisch, oder? Ich kann das neue Sitemap BlaBla auswählen, das ist nicht das Problem. Und der Code muss in die constants, oder?
Hi.
Habe das Ganze so mal ausprobiert 😉
Hab alles moegliche durch.
Ich habe es wie folgt gemacht:
Das kommt in die TSconfig deiner root-Seite (in der Seiteneigenschaft ganz unten):
# neue Sitemap hinzufügen
TCEFORM.tt_content.menu_type {
addItems.9 = Teaser (Datum, Titel, Description)
addItems.10 = Teaser (Description)
addItems.11 = Teaser (Description,Datum)
addItems.12 = Teaser (Titel)
addItems.13 = Teaser (Titel,Datum)
addItems.14 = Teaser (Titel,Description)
addItems.15 = Teaser (Titel inkl. Link)
}
Dann fuegst du folgendes in das Setup deines Templates ein:
# Teaser (Datum, Titel, Description)
tt_content.menu.20.9 = COA
tt_content.menu.20.9 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Datum
10 = TEXT
10.field = tstamp
#10.age = min | Stunden | Tage | Jahre
10.date = d.m.Y
10.wrap = <div>Datum: | </div>
# Titel
20 = TEXT
20.field = header
20.wrap = <div>|<div>
# Text
30 = TEXT
30.field = bodytext
30.crop = 350 | ... | 1
30.wrap= <div>|<div>
30.parseFunc < tt_content.text.20.parseFunc
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Description)
tt_content.menu.20.10 = COA
tt_content.menu.20.10 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Text
30 = TEXT
30.field = bodytext
30.crop = 350 | ... | 1
30.wrap= <div>|<div>
30.parseFunc < tt_content.text.20.parseFunc
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Datum, Description)
tt_content.menu.20.11 = COA
tt_content.menu.20.11 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Datum
10 = TEXT
10.field = tstamp
#10.age = min | Stunden | Tage | Jahre
10.date = d.m.Y
10.wrap = <div>Datum: | </div>
# Text
30 = TEXT
30.field = bodytext
30.crop = 350 | ... | 1
30.wrap= <div>|<div>
30.parseFunc < tt_content.text.20.parseFunc
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Titel)
tt_content.menu.20.12 = COA
tt_content.menu.20.12 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Titel
20 = TEXT
20.field = header
20.wrap = <div>|<div>
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Datum, Titel)
tt_content.menu.20.13 = COA
tt_content.menu.20.13 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Datum
10 = TEXT
10.field = tstamp
#10.age = min | Stunden | Tage | Jahre
10.date = d.m.Y
10.wrap = <div>Datum: | </div>
# Titel
20 = TEXT
20.field = header
20.wrap = <div>|<div>
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Titel, Description)
tt_content.menu.20.14 = COA
tt_content.menu.20.14 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Titel
20 = TEXT
20.field = header
20.wrap = <div>|<div>
# Text
30 = TEXT
30.field = bodytext
30.crop = 350 | ... | 1
30.wrap= <div>|<div>
30.parseFunc < tt_content.text.20.parseFunc
# Link
40 = TEXT
40.value = mehr
40.typolink.parameter.field=pid
40.typolink.parameter.dataWrap=|#{field:uid}
40.wrap = <div>>> | <div>
# Spacer
41 = TEXT
41.value = <br><br>
}
}
}
# Teaser (Titel inkl. Link)
tt_content.menu.20.14 = COA
tt_content.menu.20.14 {
30 = CONTENT
30 {
table = tt_content
select {
pidInList.field = pages
orderBy = tstamp DESC
}
renderObj = COA_INT
renderObj {
# Titel
20 = TEXT
20.field = header
20.wrap = <div>|<div>
20.typolink.parameter.field=pid
20.typolink.parameter.dataWrap=|#{field:uid}
}
}
}
Jetzt kannst du, wenn du einen Seiteninhalt "Sitemap" anlegst, in den Sitemap-Eigenschaften in dem Auswahlfeld bei "Menü Typ" einen deiner neuen Seitenteaser auswaehlen. Dann waehlst du noch einen (bzw. mehrere) "Ausgangspunkt" (die Seite[n] aus denen die Inhalte ausgelesen werden sollen) aus, und dann speichern und fertig 🙂
Was genau ausgegeben werden soll, legst du im oben stehenden Typoscript fest.
Hab einfach mal alle Beispiele, die mir auf die Schnelle einfielen, erstellt.
Einfach mal ausprobieren.
Ist ganz nice 🙂
Wie man das ganze allerdings rekursiv macht (also dass auch die Unterseiten "geteased" werden), kann ich dir leider nicht sagen.. Weiss ich nicht..
Da muesstest du nochmal unseren Typo3-Terroristen just2b fragen 😉
Hmm..
just2b:
Wie kann ich das ganze rekursiv machen? :p
mfg
Fabian
P.S.:
Ab Typo3 4.0.x sind (soweit ich weiss) standartmaessig 8 Punkte in der Sitemap-Auswahlliste vorhanden, also muss mit addItems.9 begonnen werden. Kann auch sein, dass ich unbewusst eine Extension installiert habe, welche automatisch einen achten Auswahlpunkt 'installiert' hat.. aber egal.. sicher ist sicher 😉 )
Hallo,
rekursiv kannst du das nur mit einer userfunction machen. Ich poste dann noch ein Beispiel, dauert aber noch bisschen 😉
lg georg
Hi, habe folgendes gefunden:
<<guck mal>>
Ich probiere das gerade mal durch.
Scheint ja doch irgendwie so zu gehen 🙂
Danke für die Posts, hat nun auch bei mir geklappt. 8-)
Ich habe noch Extensions gesucht zum Thema Teaser, es hat ja ein paar. Bei allen muss man aber spezielle Records machen oder zumindest einen Previewtext eingeben unter adv. page Eigenschaften, das ist mühsam. Habe nun eine gefunden, welche vollautomatisch läuft, ist allerdings Alpha, und hat diese Features:
- es muss kein record oder sonst was spezielles eingeben werden. einfach plugin einfügen, ausgangspunkt angeben, fertig.
- ganzer Ast wird erfasst (rekursiv, weiss allerdings nicht wie tief)
- auto. preview text von content
- bei text mit bild wird automatisch das bild (oder die bilder..) als kleine thumb genommen! Cool! #giggle#
- mehrere bilder möglich
- Bilder können auch über advanced page eigenschaften eingeben werden
Das Ding heisst b.it Pagemenu und ich habs momentan hier drauf:
http://www.doj.ch/typo3/index.php?id=37
(Der erste oberste Text hat das Image in den erw. Seiteneingenschaften, der 2. hat es als Text mit Bild.)
Einzig wenn man ein Bild normal im Text einfügt wie im 3. Textblock, dann erscheint es nicht als Thumb.
Ich find die Extension sehr praktisch, habe auch keine Fehler entdeckt bis jetzt. Fehlt nur noch, dass man bei x Einträgen blättern könnte.. #paralyzed#
grüsse
phil
Ich bin so ein typischer Linuxuser, wuerde ich mal behaupten.
Ich brauche die volle Kontrolle, also keine Extension, sondern alles manuell im TS konfigurieren :p
@just2b:
Schon eine Idee, wie man das rekursiv-Thema loesen koennte?
was heißt idee? schon fertig 😉
gedulde nur noch etwas, kleinigkeit fehlt noch
lg georg
ps: dann wär wohl ein selbstgeschriebenes CMS besser 😃
just2b schriebdann wär wohl ein selbstgeschriebenes CMS besser 😃
habe ich schon 😉
Oka, okay.. *ungeduldig wart*
Is ja schlimmer, als sich an Heilig Abend ne Stunde in die Kirche zu hocken und zu hoffen, dass es endlich vorbei ist, um nach hause zu duesen, weil man heftigsten Hunger hat. lol.
Bloeder vergleich, irgendwie #angry# :p
Hallo,
Folgendes Beispiel macht:
eine Sitemap/Teaser aus ausgewählten Seiten.
Code in der TsConfig
# neue Sitemap hinzufügen
TCEFORM.tt_content.menu_type {
addItems.102 = rgTeaser II
}
Code im Setup
# php-Datei für die userfunction einbinden
includeLibs.user_getpages = fileadmin/dev/scripts/user_getpages.inc
# neue Sitemap erstellen
tt_content.menu.20.102 = CONTENT
tt_content.menu.20.102 {
# 1. Abfrage basierend auf den Seiten
table = pages
select {
# pidinlist > userfunction um eine Rekursion zu erhalten auf die gewählten Ausgangspunkte in Sitemap
pidInList.cObject = USER
pidInList.cObject {
userFunc = user_getpages->main
treeDepth = 3
}
orderBy = tstamp DESC
#where = tx_rgteaser_teaser = 1
}
# Darstellung der SEITEN
renderObj = COA_INT
renderObj {
# an Stelle 10 der Seiten-titel
10 = TEXT
10.field = title
10.wrap = <div style="border:1px solid #ccc; padding:10px;margin:5px;"><h3>|
# Stelle 12 das Alter der Seite
12 = TEXT
12.field = tstamp
12.age = 1
12.required = 1
12.wrap = <span style="font-size:10px;padding-left:10px;">(|)</span></h3>
# Wir merken uns die Seiten-ID für später
20 = LOAD_REGISTER
20 {
meinRegister.cObject = TEXT
meinRegister.cObject.field= uid
}
# an Stelle 50 wird der Seiteninhalt erzeugt
50 = COA
50 {
###########
20 = CONTENT
20 {
# Abfrage an Tabelle tt_content = Seiteninhalt
table = tt_content
select {
# wir holen uns die die Seitenid von vorher
pidInList.data = register:meinRegister
#max = 1
}
# Wie soll der Seiteninhalt gerendert werden
renderObj = COA
renderObj {
# Stelle 1 mal ein div aufmachen
1 = TEXT
1.value = <div style ="padding:5px; margin:5px;">
# Stelle 10 der Titel des Contentelements
10 = TEXT
10.field = header
10.wrap = <strong>|</strong>
10.required = 1
# Stelle 20 der Text, beschränkt auf 350 Zeichen
20 = TEXT
20 {
field = bodytext
crop = 350 | ... | 1
wrap= <br />|
parseFunc < tt_content.text.20.parseFunc
stripHtml = 1
}
/*
30 = TEXT
30 {
value = [mehr]
typolink.parameter.field=pid
typolink.parameter.dataWrap=|#{field:uid}
wrap = |
}
*/
# Div wieder zu
99 = TEXT
99.value = </div>
}
}
###########
}
# Stelle 60 (nach den contentelementen) ein Link zur Seite
60 = TEXT
60 {
value = [mehr]
typolink.parameter.field=uid
wrap = |
}
99 = TEXT
99.wrap = |</div>
}
}
benötigte Userfunction
speichern in zB fileadmin/dev/scripts/user_getpages.inc
<?php
class user_getpages {
function main($content,$conf) {
global $TSFE;
$pid_list_arr = explode(",",$this->cObj->data['pages']);
$pid_list="";
while(list(,$val)=each($pid_list_arr)) {
$pid_list.=$val.",".$this->cObj->getTreeList($val,$conf["treeDepth"]);
}
$pid_list = ereg_replace(",$","",$pid_list);
return $pid_list;
}
}
?>
lg georg
PS: nicht alles was hinkt ist ein Vergleich, mehr will ich da dazu nicht sagen!
Aaaaaaaaah, sehr, sehr schoen 🙂
Vielen, vielen Dank. 😉
bitte gerne 😉
lg georg
Habe schnell eine Extension darausgemacht, ist schon im TER > ext key rgteaser
lg georg
Super, dann muss ich das ja nicht machen :p
Danke.
HAllo
Die Extension ist super, vielen Dank dafür.
Ich hätte noch eine kleine Bitte:
Momentan scheint die Extension keine Mehrsprachigkeit zu unterscheiden. Es werden jeweils beie Sprachen gleichzeitig dargestellt, oder seh ich das falsch? Kann man das noch korrigieren? Wär super.
vermutlich musst du einfach nur die Selektion erweitern
georg
Du meinst hier?
#
# 1. Abfrage basierend auf den Seiten
table = pages
select {
Leider übersteigt das meine Typo3 Kentnisse, hast du grad ne Idee wie das ungefähr ginge?
Sollte ungefähr so gehen:
select {
languageField = sys_language_uid
}
georg
ah ok, ich versuch mal ein bisschen, danke!
Update: Hat supergeklappt, hier als Hilfe für andere:
###########
20 = CONTENT
20 {
table = tt_content
select {
pidInList.data = register:meinRegister
#max = 1
languageField = sys_language_uid
}
DIe zeile languageField = sys_language_uid muss man 3x kopieren, immer unter CONTENT.
die rekursion funktioniert nicht..