Title: TYPO3-Workshop TypoScript und Templates
1TYPO3-WorkshopTypoScript und Templates
- RRZN Universität Hannover
2Templates und TypoScript
- Ziele dieses Kapitels
- Einführung der Begriffe Template und TypoScript
- TypoScript an Hand einfacher Templates
- TypoScript Syntax
- Kennlernen der Werkzeuge zur Template-Berarbeitung
- Template-Analyzer
- TypoScript Object Browser (TCO)
- Template Record Editor
- Ausgangslage
- Site mit wenigen Seiten und ohne Template
3Templates in Typo3
- steuern die Web-Darstellung von Seiten
- ohne Template keine Web-Seite
- steuern die Web-Darstellung von Seiten
- Konfiguration mit TypoScript
- hierarchisch geordnet
- Datensatz in der Tabelle sys_template
- sind keine HTML-Dateien
4TypoScript
- TYPO3-spezifische Syntax zur Beschreibung von
Daten - hierarchische Struktur in ASCII-Text
- wird in einen mehrdimensionalen PHP-Array
übersetzt (TS-Parser)TypoScript is parsed that
means it is transformed into a PHP array! - ermöglicht die Konfiguration von php-Dateien in
Typo3 - TypoScript ist zu finden in
- Page TSConfig
- User TSConfig
- TypoScript Templates
5TypoScript Erstes Template
6Erstes Template erstellen
- Start-Seite im Seitenbaum wählen
- Web-Module Template
- Button Create Template for a new site
7Template-Werkzeuge Pulldown-Menü
- Werkzeuge im Template-Modul
- Constant-Editor
- Info/Modify
- TypoScript Object Browser
- Template Analyzer
8Hello-World-Template
- TypoScript-Template Hello-World
- Default PAGE objectpage PAGEpage.10
TEXTpage.10.value HELLO WORLD! -
9Hello-World-Template
- TypoScript-Template Hello-World
- Default PAGE objectpage PAGEpage.10
TEXTpage.10.value HELLO WORLD! -
- Zeile 1 Kommentar
- Zeile 2 Objekt vom Typ PAGE mit der Bezeichnung
page - page.10 Property cObj vom Typ TEXT
- Die Nummer legt die Reihenfolge der cObj-Elemente
auf der Seite fest - Zeile 3 page.10.value Property value des
ObjektsTEXT (Text erhält den Wert HELLO
WORLD!)
10PAGE
- PAGE
- TypoScript Objekt
- setup-Objekt
- startet Web-Präsentation einer Seite
(Web-Ausgabe eines Datensatzes uid aus Tabelle
pages) - notwendig (ohne PAGE keine Ausgabe)
- Weitere Informationen siehe auch
- TSref
- typo3.org
- Dokumentation
- Core Documentation
- (tsref.de)
11TypoScript-Elemente
- Erste Übersicht über TypoScript-Elemente (Details
folgen) - Data types
- Conditions
- Functions
- setup-Objekte
- PAGE
- config
- ...
- Content-Objects
- TEXT
- HTML
- HMENU
- IMAGE
- ...
- Menu Objects
12page.10TEXT
- page PAGE
- page.10 TEXT
- page.10.valueHallo cObject
- erste Formulierung
- Objekt vom Typ TEXT wird an die Position 10 auf
die Seite gesetzt - Wert ist Hallo cObject
- präziser formuliert (siehe TSref)
- PAGE hat die Property 1,2,3,
- zulässiger Datentyp ist cObject (Content Object)
- die Nummer legt die Reihenfolge der
Content-Objekte auf der Seite fest
13Content Objects (cObject)
- Konfigurieren die Darstellung von
Inhaltselementen auf der Web-Seite - Inhaltselemente werden aus Tabellen geladen oder
in TypoScript erzeugt - Beispiele für Content Objects (siehe TSref)
- TEXT
- HTML
- CONTENT
- HMENU
- FORM
- PHP_SCRIPT
-
- Werte für die Darstellung werden durch Properties
des jeweiligen Content Object festgelegt
14Content-Element HTML
- Content-Element HTML an Position 10
- Hinweis zur Syntax
- Runder Klammern
-
- (
- eine Zeile
- noch eine Zeile
- )
- fassen mehrere Zeilen zusammen
- und weisen diesen einem Wert zu
page PAGE page.typeNum 0 page.10HTML page.10
.value ( lth1gtHallo HTMLlt/h1gt Dies ist
ein ... ltpgtInhalt wird mit TypoScript
erzeugt! lthrgt lth5gtTypo3lt/h5gt )
15Ein Menü
- Position 5 wird ein HMENU (Content-Object vom Typ
HMENU) gesetzt - HMENU ist ein Array von MENU-Objekten
- MENUE-Objekte sind z.B. GMENU, TMENU, IMGMENU,
- An Position1 von HMENU wird ein TMENU gesetzt
- wrap umschließt das aktuelle Elemente mit
Werten bezeichnet das aktuelle Element
- page.5 HMENU
- page.5.1TMENU
- page.5.1.wrap ltbrgtltbrgt
- page.5.1.NO.AtagBeforeWrap1
- page.5.1.NO.linkWrapnbsp nbsp
16TypoScript am Beispiel Menü
- An Hand der MENU-Anweisungen werden
TypoScript-Elemente vorgestellt - Properties zusammenfassen
- lt Objekte kopieren
- lt Objekte referenzieren
- gt Objekte löschen
page.5 HMENU page.5.1TMENU page.5.1.wrap
ltbrgtltbrgt page.5.1.NO.AtagBeforeWrap1 page.5.1.NO.
linkWrap nbsp nbsp
17TypoScript
- page.5 HMENU
- page.5.1TMENU
- page.5.1.wrap ltbrgtltbrgt
- page.5.1.NO.AtagBeforeWrap1
- page.5.1.NO.linkWrap nbsp nbsp
TypoScript Anweisungen für das HMENU lassen sich
auch übersichtlicher formulieren fassen
Wertzuweisungen für Properties eines Objekts
zusammen
page.5 HMENU page.5.1TMENU page.5.1 wrap
ltbrgtltbrgt NO AtagBeforeWrap1
linkWrap nbsp nbsp
18TypoScript Anweisungen kopieren lt
- temp.MeinMenu HMENU
- temp.MeinMenu.1 TMENU
- temp.MeinMenu.1
- wrap ltbrgtltbrgt
- NO
- AtagBeforeWrap1
- linkWrap nbsp nbsp
-
-
- page PAGE
- page.typeNum 0
- page.5 lt temp.MeinMenu
- Konzept
- TypoScript-Anweisungen werden an einer Stelle
festgelegt und an andere Stellen kopiert - lt kopiert einen Objekt-Pfad
- page.5 lt temp.MeinMenu
- temp.MeinMenu wird nach page.5 kopiert
- top-level-Pfade mit der Bezeichnung temp (und
styles) werden vom Parser nach dem Kopieren
gelöscht!
19Objekt-Pfade referenzieren lt
- lib.MeinMenu HMENU
- lib.MeinMenu.1 TMENU
- lib.MeinMenu.1
- wrap ltbrgtltbrgt
- NO
- AtagBeforeWrap1
- linkWrap nbsp nbsp
-
-
- page PAGE
- page.typeNum 0
- page.5 lt lib.MeinMenu
- lt referenziert einen Objekt-Pfad
- Identische Objekt-Pfade können an mehreren
Stellen im TypoScript-Code verwendet werden - temp darf nicht für referenzierte Objekt-Pfade
verwendet werden (da vom Parser entfernt)
20Objekt-Pfade löschen gt
- lib.MeinMenu HMENU
- lib.MeinMenu.1 TMENU
- lib.MeinMenu.1
- wrap ltbrgtltbrgt
- NO
- AtagBeforeWrap1
- linkWrap nbsp nbsp
-
-
- page PAGE
- page.typeNum 0
- lib.MeinMenu gt
- page.5 lt lib.MeinMenu
- lib.MeinMenu gt
- Objekt lib.Meinu ist ab der TypoScript-Zeile
gelöscht. - Das Menü wird in diesem Fall nicht angezeigt
Demo-Anwendung - gt wird benötigt, um in Template-Hierarchien
übergeordnete Objekt-Pfade sicher zu bereinigen
und durch eigene Werte zu ersetzen.
21Bedingungen
- Bedingungen werden durch bedingung
- eingeleitet
- else Verzweigung
- end Ende der Bedinugung
- global setzt alle Bedingungen zurück
- kehrt zur obersten (globalen)
- TypoScript-Ebene zurück
- Es gibt Bedingungen für
- Browser
- Betriebssysteme
- Zeiten
- Sprachen
- IP-Adressen
- .
- siehe TSRef
- browser netscape
- page.5 lt lib.MeinMenu
- else
- page.5TEXT
- page.5.value KEIN MENUE
- end
- global
22Kommentare in TypoScript
- Dies ist ein Kommentar
- // ebenfalls ein Kommentar
- /
- Kommentar-Block
- /
- bisher keine Inhalts-Elemente ausgegeben!
23Inhaltselemente darstellen
- Ziel
- Inhaltselemente von Seiten ausgeben
- Schritte
- einfaches Template für die Ausgabe von
Text-Elementen - statische Templates einsetzen
- content (default) nutzen
- Template-Hierarchie
-
24Ziel Text von Seiten ausgeben
Typo3-php-classes
25Text von Seite ausgeben TypoScript
- cObject vom Typ CONTENT
- Mit Property table wird die Tabelle festgelegt
(Inhaltselemente einer Seite sind Datensätze in
der Tabelle tt_content) - select-Anweisung für DB-Abfrage wird spezifiziert
- tt_content wird als COA (Content Object Array)
festgelegt - Positition 10 header-Feld des Text-Records
- Positions 20 bodytext-Feld
- Anmerkungen
- Es werden nur Text-Elemente des Seite angezeigt!
- Für solche Standard-Anwendungen gibt es fertige
statische Templates!
page PAGE page.typeNum 0 page.10
CONTENT page.10 table tt_content select
pidInList this orderBysorting
tt_content COA tt_content 10 TEXT
10.field header 10.wrap lth1gt lt/h1gt 20
TEXT 20.field bodytext
26statische Templates content (default)
- Satz vorgefertigter Templates in Typo3 (preset
chunks of TypoScript code) - werden in der Liste Include statics im
Template-Record-Editor aufgeführt - sind nicht änderbar (read only)
- CSS styled content
- Ausgabe der Inhalte mit "CSS-Rendering"
27Inhalte mit style.content.get einfügen
- Einfügen von Inhalt in eine Seite
- Default PAGE object
- page PAGE
- page.10 TEXT
- page.10.value Inhalt
- page.30 lt styles.content.get
- die rechte Spalte
- page.40 lt styles.content.getRight
28Bemerkungen zu TypoScript
- TypoScript ist nur eine Syntax
- Folgendes ist zulässig (aber wirkungslos) (Objekt
bla mit Properties) - bla zui
- bggelb
- tzum123
- tzum
- 1 rt
-
- TypoScript wird vom Parser in einen php-Array
überführtder Array wird von entsprechenden
php-Dateien ausgewertet - Wirkung der TypoScript-Objekte (Arrays) wird von
der php-Datei (Typo3-Core, Extension) festgelegt
(nicht von TypoScript) - Information und Hilfe TSRef, Extension-Dokumentati
on - TypoScript property lookup
29HTML-Vorlagen und CSS
- Aufbau einer Web-Site allein mit
TypoScript-Template möglich aber nicht sinnvoll - Konzept
- HTML-Design-Vorlagen (HTML-Templates)und CSS
- mit TypoScript werden nur die dynamischen
Elemente (Inhalte, Menüs, Fußzeilen, etc.)
gesteuert. - Vorteil u.a.
- Design-Vorlage und TypoScript können getrennt
voneinander bearbeitet werden
30HTML-Template
- HTML-Templage (HTML-Vorlagen-Datei)
- (fileadmin/vorlagen/homepage.html)
- lthtmlgt
- ltheadgt
- lt/headgt
- ltbodygt
- lt!-- DOCUMENT_BODY begin --gt
- lth1gtDemo-Sitelt/h1gt
- CONTENT
- lt!-- DOCUMENT_BODY end --gt
- lt/bodygt
- lt/htmlgt
- Anmerkung
- fileadmin/vorlagen ist ein übliches Verzeichnis,
im TLUH-Template liegen die Vorlagen in
typo3conf/ext/... (im fileadmin also nicht
sichtbar)
31HTML-Template in TypoScript
- TypoScript
-
- page PAGEpage.10 TEMPLATEpage.10
templateFILE template.filefileadmin/vorlag
en/homepage.html workOnSubpart
DOCUMENT_BODY marks CONTENT lt
styles.content.get -
32Anwendungs-Beispiele
- Einfacher Tag
- tt_content.text.20.parseFunc.tags.orange TEXT
- tt_content.text.20.parseFunc.tags.orange
- current 1
- wrap ltfont colororangegtlt/fontgt
-
- Interner Bereich mit Zugangsregeln über IP-Nummer
- page.10.subparts.SUB_CONTENT.10 gt
- IP 130.75.5.
- page.10.subparts.SUB_CONTENT.10 COA
- page.10.subparts.SUB_CONTENT.10
- 10 lt styles.content.get
-
- globals
33Konstanten
- Konstanten (Contants)
- im Constants-Feld eines Templates definierte
Werte - constante wert
- es gilt TypoScript-Syntax
- im Setup-Feld eingefügt
- constante
34Template-Strukturen
- Rootlevel-Templates
- im Template-Record ist Rootlevel aktiviert
- Konfiguration gilt innerhalb der gesamten
Rootline bis Werte in Sublevel-Templates
überschrieben oder ergänzt werden - Sublevel-Templates
- innerhalb einer Rootline mit bestehenden
Rootlevel-Template - überschrieben/ergänzen bestehenden
Template-Record - Basis-Templates
- enthalten TypoScript (und andere
Template-Record-Konfigurationen) - werden in Rootleve-Templates/Sublevel-Templates
eingebunden - schaffen Ordnung im TypoScript-Code
- Template on next level
- Template für die nächste Ebene
35Werkzeuge zur Template-Bearbeitung
- Überblick über die wichtigsten Werkzeuge zur
Template-Bearbeitung - an Hand eines Standard-Templates
36Template-Werkzeuge
- Werkzeuge im Template-Module
- Pull-down-Menü
- Constant Editor
- Info/Modify
- TypoScript Objekt Browser (TSOB)
- Template Analyzer
37TypoScript Object Browser (TSOB)
- zeigt TypoScript-Objekte und Properties
- Ändern, Hinzufügen von Properties
- Kontrolle und Anpassung bei der
TypoScript-Entwickling
38Template Analyzer
- Anzeigen der Template Hierarchie
- Quelltext
39Admin-Panel
40typnum id und type
- Jede Seite wird aufgerufen mit
- http//domain/index.php?idxx
- wobei xx die Seiten-ID der Seite in Typo3 ist
- Zusätzlicher Parameter kann type sein
- http//domain/index.php?idxxtypen
- n ist der Wert für den Ausgabetyp der Seite
- Der Ausgabetyp wird mit der PAGE-Propertyp
typeNum festgelegt - Standard-Wert ist 0 (und kann beim Aufruf
entfallen)
41page.typeNum
- Beispiel
- Zwei Ausgabe-Typen für eine Seite
- page PAGE
- page.typeNum 0
- page.bodyTag ltBODY bgColor"bgCol"gt
- page.10 HTML
- page.10.value zf
- page.10.value.case upper
- zweiteAusgabe PAGE
- BEACHTE SYNTAX
- zweiteAusgabe
- typeNum 30
- bodyTag ltBODY bgColoryellowgt
- 10 TEXT
- 10.value Ausgabe mit typeNum 30
-