Typo3 - Baukasten
Auf Daten zugreifen
Die stdWrap Eigenschaft steht vielen Objekten zur Verfügung. Wenn Sie vorhanden ist ist Sie der Problemlöser für fast alle Probleme :-).
Standardeinstellungen
Bilder Menü
siehe: Typo3 - Bildermenü
Einfaches Menü mit 1 Ebene (CSS)
siehe: Menue als CSS formatierte Liste
Menü mit 2 Ebenen als verschachtelte Liste
Dieses Menü ist besonders für vertikale Navigationen geeignet
Constants
# Einstieg Level 1 navi-L12-startID = 1 navi-L12-delimiter = | navi-L12-delimiter =
Setup
### Top Navigation ###
temp.navi-L12 = HMENU
temp.navi-L12 {
#stdWrap.case = lower
special = directory
# Seitenid für den Einstieg
special.value = {$navi-L12-startID}
# Ebene für den Einstieg (nicht vergessen wg. 2. Level)
entryLevel = 1
1 = TMENU
1{
noBlur = 1
wrap = <ul>|</ul>
NO = 1
NO.linkWrap = |*| <li>|{$navi-L12-delimiter}</li> |*| <li>|</li>
ACT = 1
ACT.linkWrap = |*| <li class="on">|{$navi-L12-delimiter}</li> |*| <li class="on">|</li>
ACTIFSUB = 1
#Wenn Unterpunkte dann li aufmachen
ACTIFSUB.linkWrap = <li class="on">|
}
2 = TMENU
2{
noBlur = 1
NO = 1
#Unterpunkt also neue ul und danach li zu (von L1 geöffnet)
wrap = <ul>|</ul></li>
NO.linkWrap = |*| <li>|{$navi-L12-delimiter}</li> |*| <li>|</li>
ACT = 1
ACT.linkWrap = |*| <li class="on">|{$navi-L12-delimiter}</li> |*| <li class="on">|</li>
#ACTIFSUB = 1
#ACTIFSUB.linkWrap = <li class="on">|</li>
}
}
Menü mit 2 Ebenen als separate Listen
Dieses Menü ist besonders für horizontale Navigationen geeignet. Da die 2. Ebene relativ angegeben wird muß man bei mehreren Navigationsbäumen aufpassen, daß evt. ein Untermenü einer anderen Navigation (anderer Baum) ebenfalls angezeigt wird. Das läßt sich z.B. umgehen in dem man das Navitemplate erst im Unterbaum setzt oder indem man im Hauptbaum eine Bedingung setzt ([PIDinRootline = 123])
Ebene 1 ist im Prinzip eine einfache Liste: Constants
# Navi nur Level1 #Startpunkt navi_startID = 1 #Trennzeichen für horizontale Navi: naviL1-delimiter = |
Setup
### Top Navigation ###
temp.naviL1 = HMENU
temp.naviL1 {
#stdWrap.case = lower
special = directory
# Seitenid für den Einstieg
special.value = {$navi_startID}
1 = TMENU
1.noBlur = 1
1.wrap = <ul>|</ul>
1.NO = 1
1.NO.linkWrap = |*| <li>|{$naviL1-delimiter}</li> |*| <li>|</li>
1.ACT = 1
1.ACT.linkWrap = |*| <li class="on">|{$naviL1-delimiter}</li> |*| <li class="on">|</li>
#1.ACTIFSUB = 1
#1.ACTIFSUB.linkWrap = <li class="on">|</li>
}
Für Ebene 2 wird eine weitere Liste generiert wenn man sich in einem bestimmten Level befindet: Constants
# Navigation nur ab Level x als ul (Standard entry Level1=2.Level) #Trennzeichen für horizontale Navi: naviLx-delimiter = | naviLx-entryLevel = 1
Setup
temp.naviLx = HMENU
temp.naviLx {
# Seitenbaumebene ab Level 1 darstellen (2. Ebene)
entryLevel = {$naviLx-entryLevel}
# Level 2
1 = TMENU
1{
noBlur = 1
wrap = <ul>|</ul>
NO = 1
# Für horizontale Navi mit delimiter bei vertikal einfach nichts setzen
NO.linkWrap = |*| <li>|{$naviLx-delimiter}</li> |*| <li>|</li>
ACT = 1
# Für vertikale Navi ohne delimiter...
#ACT.linkWrap = <li class="on">|</li>
# und horizontal mit delimiter
ACT.linkWrap = |*| <li class="on">|{$naviLx-delimiter}</li> |*| <li class="on">|</li>
#ACTIFSUB = 1
#ACTIFSUB.linkWrap = <li class="on">|
}
}
Menü als CSS formatierte Liste (allgemein)
Menue als CSS formatierte Liste
CSS-Flyout Menü
Extensions
Autoparser (automaketemplate und Templateswitcher (tx_rlmptmplselector) konfigurieren
Der Template - Switcher benötigt automaketemplate (oder man arbeitet direkt mit TS-Templates). Am besten gleich beide in einem Basis Template konfigurieren:
### SET UP TEMPLATE SELECTOR ###
plugin.tx_rlmptmplselector_pi1 {
// Define the paths leading to our HTML template files
templatePathMain = fileadmin/dinos/templates/main/
templatePathSub = fileadmin/dinos/templates/sub/
// Define the filenames used as the default HTML templates
defaultTemplateFileNameMain = main.html
defaultTemplateFileNameSub = sub01.html
// If there is a page having no template selected, use a template
// selected earlier in the rootline. If there is none, use the default
inheritMainTemplates = 1
inheritSubTemplates = 1
}
### Autoparser Konfigurieren (alle IDs als Marker) ###
plugin.tx_automaketemplate_pi1{
# content = FILE
# content.file = fileadmin/templates/main/main.html
content < plugin.tx_rlmptmplselector_pi1
elements {
BODY.all = 1
BODY.all.subpartMarker = DOCUMENT_BODY
HEAD.all = 1
HEAD.all.subpartMarker = DOCUMENT_HEADER
HEAD.all.rmTagSections = title
DIV.all = 1
TD.all = 1
}
relPathPrefix = fileadmin/dinos/templates/main/
}
News - Modul
Hier gibt es fertige Konfigurationen: News (tt_news)
eCards - sr_sendcard
# The Fast Way:
# plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE = @import url("fileadmin/dinos/templates/css/srsendcard.css");
# But better is this (more flexible lesser Overhead)
plugin.tx_srsendcard_pi1._CSS_DEFAULT_STYLE >
[PIDinRootline = 14]
page.includeCSS.file2 = fileadmin/dinos/templates/srsendcard/srsendcard.css
[global]
plugin.tx_srsendcard_pi1{
templateFile = fileadmin/dinos/templates/srsendcard/srsendcard.tmpl
locale_all = de_DE
oldYear = 2006
# Vorschauseite (wenn gewünscht)
# previewPID = your_page_id
enableHTMLMail = 1
siteEmail = info@start-reutlingen.de
siteName = Erben der Dinos
# musicDir = EXT:sr_sendcard/music
#cardMusicFiles = autumnleaves.mid, OverTheRainbow.mid, Pomp_and_Circumstance.mid
disableMusic = 1
maxCol = 2
imageSmallWidth = 150
imageSmallHeight = 150
imageBigWidth = 300
imageBigHeight = 300
#logo
#logoAlignHor = right
#logoAlignVert = bottom
#useAlternateImageOnPrint
### For use with other pids use this one too
#createPID
#formPID
#previewPID
#useCAPTCHA = 0
#viewPID
#printPID
### Erscheinungsbild ###
cardStamp = fileadmin/dinos/templates/srsendcard/stamp.gif
#date_stdWrap
disableSendDate = 1
cardBgcolors = #FFFFFF,#A00A1C,#FF993F
cardFontcolors = #000000, #FFFFFF,#A00A1C
#disableFontcolors
#disableFontfaces
#disableCardOptions
#graphicMess
#graphicMessWidth
#graphicMessFontFiles
#graphicMessFontSizes
#fontDir
#doNotShowCardCaptions
cardPresentationOrder = manual
salutation = informal
#disableBgcolors = 1
}
Zufallsbild tx_ccrandomimage
TypoScript - Setup
### zufallsbild erzeugen ###
includeLibs.tx_ccrandomimage = EXT:cc_random_image/pi1/class.tx_ccrandomimage_pi1.php
// USER_INT means 'no caching'
temp.randomImage = USER_INT
temp.randomImage{
userFunc = tx_ccrandomimage_pi1->main
path = fileadmin/randomImage/
fileExt = jpg,jpeg,gif,png
#Das Render Objekt ist ein content object array (COA) mit einem Bild
#Vor dem Rendern werden die ###FILE_x### marker mit den Bildern aus path ersetzt
renderObj = COA
renderObj {
10 = IMAGE
10.file = ###FILE_1###
// ... weitere Bilder wenn benötigt
}
}
Nützliche TS-Templates
Ein CSS-Template mit Markern nutzen
Ein CSS File wird eingelesen, enthaltene Marker dynamisch ersetzt und die Styles im Headerbereich der Seite als Inline-Styles eingebunden.
Constants
color1 = FFE292 color2 = F68D6F color3 = FABD9E backgroundImage = fileadmin/templates/main/images/navBack-grey.gif
Setup
# das Objekt zunächst als Bibliothek zur späteren Verwendung
lib.stylesheet.default = TEMPLATE
lib.stylesheet.default {
# template einlesen
template = FILE
template.file=fileadmin/templates/main/colors.css
# Platzhalter ersetzten
marks{
COLOR1 = TEXT
COLOR1.value = {$color1}
COLOR2 = TEXT
COLOR2.value = {$color2}
COLOR3 = TEXT
COLOR3.value = {$color3}
NAVBACK = TEXT
NAVBACK.value = {$backgroundImage}
}
}
# Stylesheet in Header eintragen
page.headerData{
90 = COA
90{
wrap = <style type="text/css"><!-- | --></style>
50 < lib.stylesheet.default
}
}
}
Bild aus Media-Feld auslesen
temp.mediaFieldImage=IMAGE
temp.mediaFieldImage.file {
import.data = levelmedia: 2,slide
import = uploads/media/
import.listNum = 0
#width = 270
#height= 300
}
Logo mit Verlinkung auf die Homepage (1.2)
Constants
# Link für das Logo # Zahl (Seiten-ID), URL (www.zielseite.de) oder Email-Adresse logoLink = 1 logoFile = fileadmin/templates/images/logo.gif
Setup
# Fügt ein Logo mit Link ein
temp.logo = IMAGE
temp.logo {
#file = /fileadmin/dinos/templates/main/images/logo-rt.gif
file = {$logoFile}
stdWrap.typolink.parameter = {$logoLink}
}
Copyright mit immer aktuellem Jahr
TypoScript Setup
temp.copyright = COA
temp.copyright{
5= TEXT
5.value = ©
10 = TEXT
#HeUte Timestamp einlesen
10.data = date:U
10.data.strftime = %Y
}
Datum der letzten Änderung anzeigen
Constants
lastChangePrefix = Letzte Änderung:
Setup
temp.lastChange = COA
temp.lastChange.5 = TEXT
temp.lastChange.5.value={$lastChangePrefix}
temp.lastChange.10 = TEXT
temp.lastChange.10.register:SYS_LASTCHANGED
temp.lastChange.10.strftime = %d.%m.%Y