Zum Inhalt springen

Problem mit Templates: Content auslesen

Erstellt am 3. September 2003 · 5 Antworten · letzte Antwort am 4. September 2003

Tags: Frage

nicor ·

Hallo!

Nach Neuinstallation habe ich jetzt auch die static_template Vorlagen. Dort habe ich CONTEN (default) audgewählt, dass es in der rechten Spalte ist.

Mein Kollege hat schon eine CSS Designvorlage angelegt, und da möchte ich gerne den Inhalt der aktuellen Seite haben, aber das geht nicht ;-(

Hier ist der Inhalt des typo3 Templates, die letzten beiden Zeilen sind dank Forenlektüre hier von mir:

# Configuring the Auto-Parser:
plugin.tx_automaketemplate_pi1 {
# Read the template file:
content = FILE
content.file = fileadmin/demo.tpl

# Here we define which elements in the HTML that
# should be wrapped in subpart-comments:
elements {
BODY.all = 1
BODY.all.subpartMarker = DOCUMENT_BODY

HEAD.all = 1
HEAD.all.subpartMarker = DOCUMENT_HEADER
HEAD.rmTagSections = title

TD.all = 1
}

# Prefix all relative paths with this value:
relPathPrefix = fileadmin/
}


# Default PAGE object:
page = PAGE
page.typeNum = 0
page.config.disableAllHeaderCode=1
page.10 =< plugin.tx_automaketemplate_pi1

page.15 = CONTENT
page.15.value = styles.content.get

In der Vorlagen Datei sind einige Subparts und auch der Marker Inhalt (###INHALT###) definiert. Aber es wird immer dieser Text (###INHALT###) statt dem eigentlichen (existenten!) Dateiinhalt gezeigt ;-(

Danke!
nico

tmallee ·

Hi,

der Code für die config des Autoparsers ist ok, allerdings musst Du Typo noch mitteilen, dass Du mit dem Template auch was machen möchtest. Das geschieht im zweiten Objekt, dem mainTemplate. Dort wird das vorher definierte Template verwendet und der MARKER (kein SUBPART!) ersetzt mit dem Inhalt aus der Spalte "Normal". Zum Schluss wird das mainTemplate einfach in der PAGE ausgegeben.

Lies Dir unbedingt das Tut "Modern Template Building Part 1" durch. Eigentlich ist für diesen Marker INHALT der Autotemplateparser gar nicht nötig.

Gruss

Thomas

# Configuring the Auto-Parser: 
plugin.tx_automaketemplate_pi1 { 
# Read the template file: 
content = FILE 
content.file = fileadmin/demo.tpl 

# Here we define which elements in the HTML that 
# should be wrapped in subpart-comments: 
elements { 
BODY.all = 1 
BODY.all.subpartMarker = DOCUMENT_BODY 

HEAD.all = 1 
HEAD.all.subpartMarker = DOCUMENT_HEADER 
HEAD.rmTagSections = title 

TD.all = 1 
}

temp.mainTemplate = TEMPLATE
temp.mainTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1

  marks.INHALT < styles.content.get 
}

page = PAGE
page.typeNum = 0

 # hier kannst Du das CSS Deines Kumpels einbinden
page.stylesheet=fileadmin/wasauchimmer/mein.css

page.10 < temp.mainTemplate
nicor ·

erst mal danke für die Antwort. Ja, das hab ich mir auch ausgedruckt, insgesamt mit zwei Anleitung 260 Seiten gestern ;-)

Aber alles konnte ich noch nicht lesen...

Ich hab deinen Code einfach so eingebaut, dann kommt aber das:

The page is not configured! [type= 0][]

?

nicor ·

Ich hab jetzt das von meinem Kollegen komplett gelöscht (hehe) und das aus der Doku eingebaut:

# Default PAGE object:
page = PAGE
page.relPathPrefix = fileadmin/
page.typeNum = 0
page.config.disableAllHeaderCode=1
page.bodyTag = <body bgcolor="#FFFF00">
page.20 = TEMPLATE
page.20 {
template = FILE
template.file = fileadmin/drweb.tpl
worksOnSubpart = DOCUMENT
marks.INHALT = CONTENT
marks.INHALT.table = tt_content
}

Zeigt den Inhalt auch an, nur z.b. das hier geht nivht:
page.relPathPrefix = fileadmin/

Wofür ist denn der Rest aus meinem ersten Posting (und warum macht die tmallee Funktion einen Fehler)?

Danke!

tmallee ·

Hi nicor,

sorry, war mein Fehler! Die Definition des page Objektes muss an den Anfang des TS Templates gestellt werden. Unten habe ich den (getesteten!) Code gepostet. Du musst nur den Pfad zu Deinem Template anpassen.

Noch ein Tip zum Debuggen von Templates:

Dafür verwendest Du das Admin Panel (habe ich mit config.admPanel eingeschaltet, vorzugsweise als admin arbeiten). Dieses Panel wird dann im Frontend eingeblendet. Wenn Du das Panel aufklappst, kannst Du unter dem Eintrag "TypoScript" genau verfolgen, was Typo mit deinem Template macht. Fehler werden mit Zeilennummer angezigt!

Im Backend siehst Du unter Templates / Template Analyzer die Struktur des gesamten Templates. Wenn Du auf einzelne Teile des Templates klickst, wird untern der gesamte TS Code mit Zeilennummern angezeigt. Nun kannst Du den Fehler einkreisen und beheben.

Hier nun der Code:

config.admPanel=1

page = PAGE 
page.typeNum = 0 

# Configuring the Auto-Parser: 
plugin.tx_automaketemplate_pi1 { 
  # Read the template file: 
  content = FILE 
  content.file = fileadmin/testsuite/demo.txt 
 
  # Here we define which elements in the HTML that 
  # should be wrapped in subpart-comments: 
  elements { 
    BODY.all = 1 
    BODY.all.subpartMarker = DOCUMENT_BODY 

    HEAD.all = 1 
    HEAD.all.subpartMarker = DOCUMENT_HEADER 
    HEAD.rmTagSections = title 

    TD.all = 1 
  } 
}

temp.mainTemplate = TEMPLATE 
temp.mainTemplate { 
    # Feeding the content from the Auto-parser to the TEMPLATE cObject: 
  template =< plugin.tx_automaketemplate_pi1 

  marks.INHALT < styles.content.get 
} 

# hier kannst Du das CSS Deines Kumpels einbinden 
page.stylesheet=fileadmin/wasauchimmer/mein.css 

page.10 < temp.mainTemplate

Viele Grüsse

Thomas

tmallee ·

So, noch ein paar Worte zu Deinem letzten Code: Du arbeitest dort nicht mit dem Plugin autoparser. Was macht der Autoparser eigentlich? Er nimmt ein bestehendes HTML Dokument auseinander und zerlegt es völlig selbständig in Teile ("Subparts"). Wie macht er das? Du kannst bestimmern, welche Tags des HTML Dokumentes analysiert werden sollen. Die Zeile

TD.all=1

gibt an, das u.a. alle TD Tags zu untersuchen sind. Findet der Parser nun innerhalb des TD Tags ein class oder id Attribut, definiert er alles innerhalb dieses TD Tags als SUBPART! Diesen Subpart kannst Du dann leicht in deinem Template ersetzen.

Was ist ein Marker? Ein Marker ist ein Platzhalter, der bereist als solcher in der HTML Designvorlage steht, z.B. ###INHALT###. Für das Ersetzen dieses Markers ist der autotemplateparser nicht nötig!

Warum ist das Plugin Autotemplateparser sinnvoll? Weil ein HTML Designer eine Seite komplett bauen kann, ohne seinen Code mit den elenden Platzhaltern (###lalala###) zu verschandeln. Du nimmst einfach die gelieferte Designvorlage und jagst sie durch den Parser, schon ist die Designvorlage in handliche Parts unterteilt, die Du nach Lust und Laune erstezen lassen kannst.

Warum funktioniert das relPathPrefix nicht in Deinem letzten Code? Nun, das ist eine besondere Zusatzfunktion des plugins autotemplateparser. Da Du dieses Plugin aber in Deinem letzten Code nicht verwendest, können auch keine relativen Pfade ersetzt werden.

Aus diesem Grunde ist der Parser mit Deiner momentanen Designvorlage eigentlich überflüssig, da Du dort nur MARKER ersetzt, aber keine SUBPARTS.

Hoffe, dass bringt Dich ein Stück weiter. In dem von mir genannten Tut. wird der templateparser sehr ausführlich beschrieben.

Grüsse

Thomas