Im Moment habe ich keine Zeit zum Schreiben von typo3 Einträgen. Es passiert schon sehr viel, ich habe einige Sites an denen ich arbeite, aber irgendwie kommt momentan kein Material für einen Eintrag zusammen. Dafür passiert in letzter Zeit einiges mit meiner Extension pro_industrydb. Zum einen gibt es Weiterentwicklungswünsche, da komme ich leider nicht zu. Zum anderen gibt es auch mal Lob und Feedback. Das freut mich sehr, denn ich finde diesen ganzen Communitygedanken einfach grossartig und freue mich, wenn andere Leute von meiner Arbeit profitieren.
Jetzt gabs auch mal ein Update mit ein paar Fixes. Ich würde mich sehr darüber freuen, wenn meine Extension genutzt wird und dazu ein paar Kommentare verfasst werden.
Beiträge der Kategorie TYPO3
Bild aus dem Header als Hintergrund verwenden
Manchmal ist es notwenig, Bilder aus dem Media-Feld der Seite als Hintergrund zu verwenden, gelegentlich als Gifbuilder-Objekt. Dieses Beispiel rendert das Bild aus dem Media-Feld, versieht das ganze mit dem Untertitel/Titel der Seite und fügt noch ein farbiges Rechteck hinzu. Anschließend wird das ganze als Hintergrundbild in einen div mit der Id „header“ eingefügt. Vorteil dieses Verfahrens ist, dass der Header semantisch richtig und nicht als Bild dargestellt wird.
temp.header = COA
temp.header {
1 = TEXT
1.field = media
1.listNum = 0
1.wrap =
5.field = subtitle//title
5.wrap =
|
10 = HTML
10.value =
15 = IMAGE
15.file = GIFBUILDER
15.file {
XY = 680,210
backColor = #999999
transparentBackground = 1
10 = TEXT
10.text.field = subtitle
10.text.listNum = 0
10.text.listNum.splitChar = |
10.fontColor = {$colorWhite}
10.fontSize = {$font.sizeHeaderSmall}
10.fontFile = {$font.headerSmall}
10.offset = 460,118
20 < .10
20.text.listNum = 1
20.fontSize = {$font.sizeHeaderBig}
20.fontFile = {$font.headerBig}
20.offset = 200,155
5 = BOX
5.dimensions = 0,120,300+[20.w],40
5.color = {$color80}
7 = BOX
7.dimensions = 0,160,485,60
7.color = {$color100}
}
80 = HTML
80.value =
}
Redirect nach Login/Logout in newloginbox
Problem: nach dem Login/Logout soll man auf einer bestimmten Seite landen, das Formular zu einloggen befindet sich jedoch auf allen Seiten. Oder man hat eine Vorschaltseite mit Sprachauswahl und wenn man eingeloggt in einem geschlossenen Bereich surft und sich dann ausloggt, dann landet man auf eben dieser Vorschaltseite, was nicht schön ist.
Das Loginformular kann über das Template in TypoScript inkludiert werden oder auch als ein Content-Element von einer bestimmten Seite eingefügt werden. Hauptsache über TypoScript, geht auch nicht anders, wenn man es auf jeder Seite haben möchte.
Es gibt im Template für newloginbox ein verstecktes Feld mit dem Namen redirect, das Problem ist, dass es leer ist. Es gibt einige Extensions, die eine Umleitung anbieten, das Problem ist, dass die Seite auf die umgeleitet wird, im GET-Parameter angegeben werden muss. Das ist manchmal schwierig. Oder es gibt eine Extension, auf der man dem Benutzer oder der Gruppe eine Seite zuweisen kann, das löst aber nicht das Problem beim Logout.
Meine Lösung ist daher: Aus dem Template den Form-Tag entfernen (mit Start- und Endtag) und das versteckte Feld zum Redirect. Dann das Feld über TypoScript wieder hinzufügen. Das Loginformular kann man als COA aufbauen. 10 ist der Form-Starttag, 20 die newloginbox, 30 das versteckte Feld und 40 der schließende Formtag. Über typolink kann man die URL in das Action-Attribut im Form-Tag und in das Value-Attribut des versteckten Feldes reinschreiben. Über Conditions definiert man dann einen anderen Wert im Action-Attribut, wenn jemand sich ausloggt, so kann man die Benutzer dann auf eine bestimmte Seite schicken. Ungefähr so…
temp = COA
temp.10 = TEXT
temp.10.typolink.parameter.data = TSFE:id
temp.10.typolink.returnLast = url
temp.10.typolink.wrap =
Vererbung der Metatags mit metatags (extended)
Die Extensions metatags ermöglicht es globale Metatags im TypoScript zu definieren, die auf allen Seiten im Header erscheinen. Man kann diese Tags aber auch in der Seite selbst angeben, dabei werden die globalen überschrieben. Das Problem ist, dass die Extension selbst keine Metatag-Vererbung mitbringt, d.h. es werden Metatags nur von der aktuellen Seite genommen. Vielleicht aber möchte man in einem Seitenbaumteil andere Metatags definieren, da möchte man nicht gleich ein Extension-Template anlegen.
Die Tags werden mit einer einer TypoScript konfiguration aus der aktuellen Seite gelesen. Dabei ist das Element vom Typ stdWrap und ist somit sehr flexibel. Hier das Original zum Auslesen der Keywords und Description aus der aktuellen Seite:
plugin.meta.local.description.field = description
plugin.meta.local.keywords.field = keywords
Damit man die Keywords bzw. Description von der übergeordneten Seite vererben lassen kann, muss man auf die Eigenschaft data im stdWrap zurückgreifen und das field löschen, da es den Wert in data überschreibt.
plugin.meta.local.description.field >
plugin.meta.local.keywords.field >
plugin.meta.local.description.data = levelfield:-1, description, slide
plugin.meta.local.keywords.data = levelfield:-1, keywords, slide
Damit diese Eigentschaften zur Verfügung stehen, muss man über Install-Tool die Felder keywords und description zu [FE][addRootLineFields] hinzufügen. Wäre soweit fertig, wenn die Extension die headerData nicht selbst am Anfang einbinden würde, was die ganzen Änderungen von eben zunichte macht. Daher muss man nach der „Neukonfiguration“ die headerData erneut zuweisen:
page.headerData.999 < plugin.meta
Druckversion mit TemplaVoila
Die Druckversion der Seite kann über 3 mögliche Wege gesteuert werden. Der erste ist das Einbinden eines Stylesheets mit der media-Attribut „print“. Da kann man bestimmte Bereiche ausblenden, wie z.B. Menü. Der Nachteil ist, dass es nicht in allen Browsern funktioniert könnte und im Hinblick auf Typo3-Performance muss einiges für die Seite gerendert und gerendert werden, was dann nicht angezeigt wird. Die zweite Möglichkeit ist das Type-Attribut in Typo3. Da kann man bestimmte Elemente bereits in Typo3 ausgeben oder die Seite komplett anders gestalten. Der Nachteil ist, dass es mit TemplaVoila nicht funktioniert, sobald man FCEs benutzt. Die dritte Möglichkeit ist über die Übergabe der GET-Variable print, die TemplaVoila dazu veranlaßt, ein anderes Template zu verwenden (falls eins definiert ist). In diesem Beispiel werden alle drei Methoden miteinander verknüpft.
Drucken Link mit TypoScript anlegen
Zunächst definiert man den Link in TypoScript im Haupttemplate, damit er auf jeder Seite angezeigt wird:
lib.specialnavigation {
30 = TEXT
30 {
value = Seite drucken
wrap =
stdWrap.typolink.parameter.data = TSFE:id
stdWrap.typolink.parameter.wrap = |,98 710×600
stdWrap.typolink.addQueryString = 1
stdWrap.typolink.additionalParams = &print=1&no_cache=1
stdWrap.typolink.JSwindow_params = status=0,menubar=0,scrollbars=1,location=0,toolbar=0
}
}
Die Druckversion geht in einem neuen Fenster auf. Die URL dazu ist die aktuelle Seite (mit allen Parametern, ergibt sich aus addQueryString) mit einem anderen Page Type (98) und den zusätzlichen Variablen print und no_cache. Nun kann man im TypoScript-Template die Druckversion mit typeNum 98 definieren und da ein anderes Stylesheet angeben und einen anderen Header. Hier ist ein Beispiel für eine Toolbar, die das Drucken de Dokuments und das Schließen des Fensters ermöglicht.
20 = TEXT
print = PAGE
print {
bodyTag =
typeNum = 98
includeCSS {
print = {$templateRoot}/css/print.css
print2 = {$templateRoot}css/print2.css
print2.media = print
}
10 = TEXT
10.value =
20.value = |
Neueste Kommentare