Codelistings
Seite 37/38
Installation unter Linux mit einem Paket Ihrer Wahl
user@domain:~$ cd /var/www user@domain:/var/www$ wget [URL zum TYPO3-Kern] user@domain:/var/www$ wget [URL zum dummy-Paket] user@domain:/var/www$ tar xfz typo3_src-X.X.tar.gz user@domain:/var/www$ tar xfz dummy-X.X.tar.gz user@domain:/var/www$ mv dummy-X.X t3site user@domain:/var/www$ chgrp -R www-data typo3_src-X.X/ t3site/ user@domain:/var/www$ chmod -R g+w,o-rwx typo3_src-X.X/ t3site/ user@domain:/var/www$ rm typo3_src-X.X.tar.gz user@domain:/var/www$ rm dummy-X.X.tar.gz
Seite 39
Benutzer des Webservers herausfinden
<?php passthru("whoami"); ?>
Seite 46/47
Installation über Absetzen von Systemkommandos mittels PHP
<?php //~ Geben Sie hier den Namen Ihres Projektes an. $project = 't3site'; //~ Geben Sie hier den sf.net Mirrors an. Z.B.: mesh, switch, ovh etc. $mirror = 'mesh'; //~ Geben Sie hier die gewünschte Version an $version = '4.0'; //~ --- ENDE DER KONFIGURATION --- //~ Benutzereingaben sichern $project = escapeshellarg(escapeshellcmd($project)); $mirror = escapeshellcmd($mirror); //~ Zu ladende Dateien definieren. $files = array( 'dummy' => 'dummy-'.$version, 'src' => 'typo3_src-'.$version); //~ Endungen der zu ladenden Dateien definieren $ext = '.tar.gz'; //~ URL zu sf.net mit dem gewählten Mirror erzeugen $uri = "http://$mirror.dl.sourceforge.net/sourceforge/typo3/"; //~ Fehler umleiten. Wichtig: String beginnt mit Leerzeichen $stderr = ' 2>&1'; //~ Trenner zwischen den verschiedenen Ausgaben $divider= str_pad('',100,'-')."\n"; //~ Ausgabe von der Kommandozeile kommt als Plain-Text. header('Content-Type: text/plain'); foreach($files as $file) { //~ Download. Wiederaufnehmen (-c) und mehrfach versuchen (--tries=5) system('wget -c --tries=5 '.escapeshellarg($uri.$file.$ext).$stderr); echo $divider; //~ Datei schreibbar für alle machen (o+rw). //~ Andernfalls wäre sie per FTP nicht mehr löschbar. system('chmod o+rw ./'.$file.$ext.$stderr); echo $divider; //~ extrahiere (-x) Dateien aus den mit //~ gzip-gepackten (-z) Archiven (-f) und //~ liefere erweiterte Ausgabe (-v). system('tar -zxvf ./'.$file.$ext.$stderr); echo $divider; //~ Entpacktes Verzeichnis und Inhalt (-R) //~ lesbar und schreibbar für alle machen (o+rw). system('chmod o+rw -R ./'.$file.$stderr); echo $divider; } //~ dummy-$version in den gewünschten Namen ($project) umbenennen. system("mv ./{$files['dummy']} $project"); ?>
Seite 52-54
Ubuntu Komplett-Installationsanleitung
user@domain:~$ wget http://typo3.sunsite.dk/software/linux/graphicsmagick-X.X.X_i386-static-2.tar.gz user@domain:~$ tar xfz graphicsmagick-X.X.X_i386-static-2.tar.gz user@domain:~$ chmod 0755 graphicsmagick-X.X.X/bin/gm user@domain:~$ sudo mv graphicsmagick-X.X.X/ /usr/bin/graphicsmagick user@domain:~$ sudo mysqladmin -u root password geheim user@domain:~$ cd /etc/php5/apache2 user@domain:/etc/php5/apache2$ sudo cp php.ini php.ini~ user@domain:/etc/php5/apache2$ sudo gedit php.ini [...Änderungen an der php.ini vornehmen] user@domain:~$ sudo apache2ctl restart user@domain:~$ sudo su user@domain:~$ cd /var/www [...normale Installation...]
Seite 256
Seitenhintergrund abhängig vom Layout schwarz einfärben
[globalVar = TSFE:page|layout = 1] page.bodyTag = <body bgcolor="#000000"> [end]
Seite 257
Inhalt des Feldes newUntil verwenden und formatieren
temp.mindesthaltbarkeit = TEXT temp.mindesthaltbarkeit { // nur, wenn das Feld einen Eintrag enthält fieldRequired = newUntil field = newUntil strftime = bis %d.%m.%Y zum Verzehr geeignet }
Tag der Woche ausgeben (mit/ohne Lokalisierung)
// ohne Lokalisierung temp.zeita = TEXT temp.zeita.field = tstamp temp.zeita.date = l // mit Lokalisierung temp.zeitb = TEXT temp.zeitb.field = tstamp temp.zeitb.strftime = Heute haben wir %A
Seite 289/290
Inhaltselement "Table" benutzerdefiniert formatieren
/* Tabelle mit rotem Rand versehen */ table.contenttable-0 { border: 1px Solid red; } /* Hintergrund der Tabellenzeilen alternierend dunkelrot und grau einfärben */ table.contenttable tr.tr-even { background: crimson; } table.contenttable tr.tr-odd { background: gray; } /* Erste Zeile und erste Spalte der Tabelle dunkelrot einfärben */ table.contenttable tr.tr-0, table.contenttable tr td.td-0 { background: crimson; } /* Letzte Zeile und letzte Spalte der Tabelle dunkelrot einfärben */ table.contenttable tr.tr-last, table.contenttable tr td.td-last { background: crimson; }
Seite 296
Beispiel eines Kontaktformulars
Name: | *name=input,40,40 | [Name oder Firma] E-Mail: | *email=input,40 Adresse: | address=textarea,40,10 Kontaktaufnahme: | *contact_by=radio | E-Mail=email, Rückruf=phon Produkt: | *product=select,1 | Bitte wählen=, A, B, C Datei: | attachment=file Datenspeicherung: | save=check | 1 | formtype_mail=submit | Abschicken | html_enabled=hidden | 1 | subject=hidden | Nachricht über Webseite
Seite 316
Benutzerdef. Fkt.: Name des angemeldeten Benutzers ausgeben
<?php function user_print_name() { $TSconfig = $GLOBALS["TSFE"]->fe_user->getUserTSconf(); if (!empty($TSconfig["user."]["printName"])) { return $GLOBALS["TSFE"]->fe_user->user["name"]; } } ?>
Seite 317
Benutzerdefinierte Funktion (Seite 316) laden und ausführen
temp.userName = USER_INT temp.userName { includeLibs = fileadmin/scripts/user_print_name.inc.php userFunc = user_print_name }
Seite 338
Standardsprache auf Deutsch (Deutschland) festlegen
config { sys_language_uid = 0 language = de locale_all = german htmlTag_langKey = de-DE }
Seite 347
Konfiguration für Formatierung
//~ Definition der zur Auswahl stehenden Klassen //~ Diese müssen auch in der Stylesheet-Datei existieren RTE.classes { wichtig { //~ Name, der die Klasse im Auswahlfeld repräsentiert name = Wichtig //~ Anzeige der Klasse im Dropdown value = border: 1px Solid red; } } //~ Konfiguration des RTE RTE.default { //~ Stylesheet-Datei, die die Klassendefinitionen enthält contentCSS = fileadmin/test.css //~ Klassen, die in der Datenbank gespeichert werden dürfen proc.allowedClasses = wichtig //~ Klassen, die bei Absätzen zur Verfügung stehen classesParagraph = wichtig }
Inhalt von fileadmin/test.css
p.wichtig { border: 1px Solid red; }
Seite 348
Konfiguration für Formatierung
//~ Definition der zur Auswahl stehenden Klassen //~ Diese müssen auch in der Stylesheet-Datei existieren RTE.classes { beispiel { //~ Name, der die Klasse im Auswahlfeld repräsentiert name = Beispiel //~ Anzeige der Klasse im Dropdown value = color: blue; } } //~ Konfiguration des RTE RTE.default { //~ Stylesheet-Datei, die die Klassendefinitionen enthält contentCSS = fileadmin/test.css //~ Klassen, die in der Datenbank gespeichert werden dürfen proc.allowedClasses = beispiel //~ Klassen, die bei Absätzen zur Verfügung stehen classesCharacter = beispiel }
Inhalt von fileadmin/test.css
span.beispiel { color: blue; }
Seite 359/360
Benutzerdefinierte Elemente im RTE verwenden
RTE.default.userElements { 10 = Verschiedenes 10 { 1 = TYPO3 Logo 1.description = Das TYPO3 Logo wird eingefügt. 1.content = <img src="###_URL###typo3/gfx/loginlogo_transp.gif"> 2 = Text hochstellen 2.description = Markierter Text wird als Code ausgezeichnet. 2.mode = wrap 2.content = <code>|</code> 3 = In Großbuchstaben umwandeln 3.description = Markierter Text wird in GB umgewandelt. 3.mode = processor 3.submitToScript = fileadmin/toUpper.php } }
Inhalt von fileadmin/toUpper.php
<?php ?>
Seite 367
Admin Panel konfigurieren
admPanel { enable.edit = 1 module.edit.forceDisplayFieldIcons = 1 module.edit.forceDisplayIcons = 1 hide = 1 }
Seite 381
Schritt 4, Formular
Name: |*name=input,40 |Geben Sie Ihren Namen ein! E-Mail: |email=input,40 Nachricht: |*message=textarea,30,5 |Geben Sie Ihre Nachricht ein! |formtype_mail=submit |Abschicken |subject=hidden |Nachricht von der Webseite XY
Seite 383
Beispiel-CSS für das im Kapitel gezeigte Formular
fieldset.csc-mailform { border: 0; } fieldset.csc-mailform .csc-mailform-field label { display: block; font-weight: bold; } fieldset.csc-mailform #mailformname, fieldset.csc-mailform #mailformmessage { color: red; }
Seite 404
Inhalt von fileadmin/test.css
* { font-family: sans-serif; } * BODY { background-color: Silver; } * A { color: Red; } * A:hover { font-weight: bold; }
Seite 405
CSS Editor Konfiguration
CSS_editor = Template Stile CSS_editor.ch { /* Kindelemente */ alle = Alle Elemente alle.selector = * alle.attribs = font-family,font-size,color alle.example = Dies ist Beispieltext alle.ch { /* Kindelemente */ koerper = Seitenkörper koerper.selector = BODY koerper.attribs = background-color koerper.example = Hintergrundfarbe-Test links = Links links.selector = A links.attribs = LINKS links.example = Hallo <a href= "# ">Welt</a> links.exampleStop = 1 links.ch { /* Kindelemente */ ueber = Über dem Link ueber.selector = +:hover ueber.attribs = LINKS,font-weight } } }
Seite 409
Marker-Beispiel
<html> <body> <h1>###SEITENTITEL###</h1> <!-- ###INHALT### begin --> Dieser Bereich wird komplett ersetzt. Anders als der Seitentitel, dürfen diese Marker daher in Kommentaren stehen. <!-- ###INHALT### end --> </body> </html>
Seite 410
Inhalt von fileadmin/template.html (I)
<html> <head> <title>Template XYZ</title> </head> <body> <!-- ###MY_BODY### begin --> <h1>###MY_HEADLINE###</h1> <div class="content"> <!-- ###MY_CONTENT### begin --> Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt <!-- ###MY_CONTENT### end --> </div> <!-- ###MY_BODY### end --> </body> </html>
Seite 411
Verarbeitung des Templates fileadmin/template.html (I)
temp.myTemplate = TEMPLATE temp.myTemplate { template = FILE template.file = fileadmin/template.html workOnSubpart = MY_BODY marks { MY_HEADLINE = TEXT MY_HEADLINE.field = title } subparts { MY_CONTENT < styles.content.get } } page.10 < temp.myTemplate
Seite 414
Inhalt von fileadmin/template.html (II)
<html> <head> <title>Template</title> <meta name="author" content="Joscha Feth"> </head> <body> <div class="headline">Titel</div> <div class="menu">Menü</div> <div class="content">Inhalt</div> </body> </html>
Seite 414/415
Verarbeitung des Templates fileadmin/template.html (II)
plugin.tx_automaketemplate_pi1 { content = FILE content.file = fileadmin/template.html relPathPrefix = fileadmin/ elements { BODY.all = 1 BODY.all.subpartMarker = DOCUMENT_BODY HEAD.all = 1 HEAD.all.subpartMarker = DOCUMENT_HEADER HEAD.rmTagSections = title DIV.all = 1 } }
Seite 417
Erweitertes Template-Parsing
# temporäres Template-Objekt für den body-Bereich erstellen temp.myTemplate = TEMPLATE temp.myTemplate { # Das Template-Objekt mit Template Code füllen template =< plugin.tx_automaketemplate_pi1 # nur auf dem Bereich DOCUMENT_BODY arbeiten workOnSubpart = DOCUMENT_BODY subparts { # Den headline-Bereich durch ein TEXT-Objekt ersetzen headline = TEXT # Das TEXT-Objekt soll den Seitentitel beinhalten headline.field = title # Den menu-Bereich durch ein HMENU-Objekt ersetzen menu = HMENU menu.1 = TMENU menu.1.NO = 1 # Inhaltselemente in den content-Bereich einfügen content < styles.content.get } } # temporäres Template-Objekt für den head-Bereich erstellen temp.headTemplate = TEMPLATE temp.headTemplate { # Das Template-Objekt mit Template Code füllen template =< plugin.tx_automaketemplate_pi1 # nur auf dem Bereich DOCUMENT_HEADER arbeiten workOnSubpart = DOCUMENT_HEADER } # PAGE-Objekt erstellen page = PAGE # Temporäres Template-Objekt des body-Bereichs in <body>einfügen page.10 < temp.myTemplate # Temporäres Template-Objekt des head-Bereichs in <head> einfügen page.headerData.10 < temp.headTemplate
Seite 422
Inhalt von fileadmin/templates/template.html
<html> <head> <title>TemplaVoila Template</title> <meta name="author" content="Joscha Feth"> </head> <body> <div id="menu" class="menu"> <div class="act"><a href="#">A</a></div> <div class="no"><a href="#">B</a></div> <div class="no"><a href="#">C</a></div> </div> <div id="content" class="content">Inhalt</div> </body> </html>
Seite 436
Inhalt von fileadmin/templates/tld.domain/main.html
<html> <head> <title>Example</title> <link rel="stylesheet" type="text/css" href="styles/web.css"> <script src="scripts/test.js" type="text/javascript"></script> </head> <body onload="test();"> <div id="n" class="navigation"> Navigation </div> <div class="cbody"> <div id="h" class="header">Header</div> <div id="c" class="content">Inhalt</div> <div class="footer"> Last change: <span id="d" class="yyyy_mm_dd">YYYY-MM-DD</span> – <a id="p" href="#">Print this page</a> </div> </div> </body> </html>
Seite 437
Inhalt von fileadmin/templates/tld.domain/styles/web.css
div { border: 1px Dashed grey; margin: 5px; } div.navigation, div.cbody { float: left; }
Inhalt von fileadmin/templates/tld.domain/scripts/test.js
function test() { alert("Hallo Welt!"); }
Seite 458
TemplaVoilà-Objekt auf der Seite einbinden
page = PAGE page.10 = USER page.10.userFunc = tx_templavoila_pi1->main_page
Seite 459
Menü-Code für Feld field_navigation
temp.myNavigation = HMENU temp.myNavigation.1 = TMENU temp.myNavigation.1 { NO = 1 NO.after = <br /> }
Seite 463
Local Processing für Feld field_header
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3DataStructure> <ROOT type="array"> <el type="array"> <field_header type="array"> <tx_templavoila type="array"> <TypoScript> 10 = IMAGE 10.file = GIFBUILDER 10.file { XY = 200,20 10 = TEXT 10.text.current = 1 10.text.ifEmpty = TEXT 10.text.ifEmpty.data = page:subtitle // page:title 10.text.case = upper 10.niceText = 1 10.offset = 0,14 10.fontSize = 14 } </TypoScript> </tx_templavoila> </field_header> </el> </ROOT> </T3DataStructure>
Seite 470
Datum der letzten Änderung der Seite
temp.lastChange = TEXT temp.lastChange { data = register : SYS_LASTCHANGED date = Y-m-d }
Seite 472
Link zur Druckversion generieren
temp.printLink = TEXT temp.printLink.typolink { parameter.data = page:uid returnLast = url additionalParams = &print=1 additionalParams.htmlSpecialChars = 1 } [globalVar = GP:print > 0] temp.printLink.typolink.additionalParams > [global]
Seite 474
Inhalt von fileadmin/templates/tld.domain/print.html
<html> <head> <title>Example (Print)</title> </head> <body onload="print();"> <div class="header">Header</div> <hr/> <div class="content">Inhalt</div> <hr/> <div class="footer"> Last change: <span class="yyyy_mm_dd">YYYY-MM-DD</span> - <a href="#">Back to web version</a> </div> </body> </html>
Seite 475
Local Processing für Feld field_header (Print-Version)
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3DataStructure> <ROOT type="array"> <el type="array"> <field_header type="array"> <tx_templavoila type="array"> <TypoScript> <![CDATA[ 10 = TEXT 10 { current = 1 ifEmpty = TEXT ifEmpty.data = page:subtitle // page:title case = upper wrap = <h1>|</h1> } ]]> </TypoScript> </tx_templavoila> </field_header> </el> </ROOT> </T3DataStructure>
Seite 478
Inhalt von fileadmin/templates/tld.domain/flexgrid.html
<html> <head> <title>Example (FlexGrid)</title> </head> <body> <table class="flexsquare"> <tr class="upper"> <td class="left">Oben links</td> <td class="right"> <img width="200" height="200" src=""> </td> </tr> <tr class="lower"> <td class="left"> <img width="200" height="200" src=""> </td> <td class="right">Unten rechts</td> </tr> </table> </body> </html>
Seite 483
Inhalt von fileadmin/templates/tld.domain/flexlist.html
<div class="flexlist"> <h1 class="flexlist_header">Personenliste</h1> <ul class="flexlist_people"> <li class="flexlist_person"> <a class="flexlist_person_link" href="#">Ich</a> </li> </ul> </div>
Seite 499
Standardsprache auf Deutsch (Deutschland) festlegen
config { # Sprache festlegen, wichtig für die korrekte Anzeige von Labels language = de # Locale festlegen – wichtig für Formatierung von Datum/Uhrzeit locale_all = german # Wichtig für korrekte lang-Attribute htmlTag_langKey = de-DE }
Seite 507
GIFBUILDER-Beispiel
# GIFBUILDER-Objekt erstellen gfx = GIFBUILDER gfx { # Größe der Bilddatei festlegen XY = [10.w]+4,[10.h]+2 # Offset festlegen offset = 0,[10.h]-4 # Neues TEXT-Objekt erstellen 10 = TEXT 10 { # Untertitel oder falls nicht vorhanden Seitentitel anzeigen text.field = subtitle // title # Schriftartendatei festlegen fontFile = fileadmin/Bluehigh.ttf # Schriftgröße festlegen fontSize = 24 # Schriftfarbe festlegen fontColor = gray # Antialiasing aktivieren, benötigt ImageMagick/GraphicsMagick niceText = 1 } } # PAGE-Objekt erstellen page = PAGE # IMAGE-Objekt mit GIFBUILDER als Quelle erstellen page.10 = IMAGE # IMAGE-Objekt auf Seite einblenden page.10.file < gfx
Seite 509
niceText-Beispiel
temp.niceTest = IMAGE temp.niceTest { file = GIFBUILDER file { XY = [10.w]+10,[10.h]+10 10 = TEXT 10 { fontSize = 72 fontFile = fileadmin/Bluehigh.ttf offset = 0,50 text.data = page:title niceText = 1 # Hier an-/ausschalten für Vergleich } } }
Seite 513
directory-Spezialmenü
temp.menu = HMENU temp.menu.special = directory # IDs der Seiten, deren Kindelemente angezeigt werden sollen temp.menu.special.value = 11,22 temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
list-Spezialmenü
temp.menu = HMENU temp.menu.special = list # IDs der Seiten, die im Menü angezeigt werden sollen temp.menu.special.value = 11,22,33 temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
Seite 514
updated-Spezialmenü
temp.menu = HMENU temp.menu.special = updated temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
rootline-Spezialmenü
temp.menu = HMENU temp.menu.special = rootline temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
Seite 515
browse-Spezialmenü
temp.menu = HMENU temp.menu.special = browse # Elemente, die im Menü zur Verfügung stehen sollen temp.menu.special.items = prev|next # Links nach Ihrer Funktion benennen temp.menu.special { prev.fields.title = vorherige Seite next.fields.title = nächste Seite }
keywords-Spezialmenü
temp.menu = HMENU temp.menu.special = keywords temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
language-Spezialmenü
temp.menu = HMENU temp.menu.special = language # IDs der Sprachen, deren lokalisierte Seiten verlinkt werden sollen temp.menu.special.value = 0,1,2 temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
Seite 516
userdefined-Spezialmenü
temp.menu = HMENU temp.menu.special = userdefined temp.menu.special.file = fileadmin/my_menu.inc.php temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
Inhalt von fileadmin/my_menu.inc.php
<?php $menuItemsArray[] = array('title' => 'Alles', 'uid' => 1); $menuItemsArray[] = array('title' => 'Lüge', 'uid' => 3); ?>
Inhalt von fileadmin/my_menu.inc.php (mit Unterpunkten)
<?php $menuItemsArray[] = array( 'title' => 'Alles', 'uid' => 1); $menuItemsArray[] = array( 'title' => 'nur', 'uid' => 2, '_SUB_MENU' => array( array( 'title' => 'Lüge', 'uid' => 3))); ?>
Seite 517
userfunction-Spezialmenü
# Datei mit Klasse/Funktion laden includeLibs.user_myMenu = fileadmin/user_myMenu.inc.php temp.menu = HMENU temp.menu.special = userfunction temp.menu.special.userFunc = user_myMenu temp.menu.1 = TMENU temp.menu.1 { NO = 1 NO.after = <br /> }
Inhalt von fileadmin/user_myMenu.inc.php
<?php function user_myMenu($content,$conf) { return array( array( 'title' => 'Alles', 'uid' => 1), array( 'title' => 'Lüge', 'uid' => 2)); } ?>
Seite 520
<ul>-Menü
# HMENU-Objekt erstellen temp.menu = HMENU temp.menu { # TMENU-Objekt erstellen 1 = TMENU 1 { # Jedes TMENU mit <ul> umschließen wrap = <ul>|</ul> # Normalen Zustand definieren NO = 1 NO { # jedes Element und Sub-Elemente mit <li> umschließen wrapItemAndSub = <li>|</li> # Das title-Attribut der Links einstellen ATagTitle.field = subtitle // title } # Aktiven Zustand definieren ACT = 1 # Aktiven von normalem Zustand kopieren ACT < .NO # Aktive Elemente kennzeichnen ACT.ATagParams = style="color: red;" } # Konfiguration von erster Ebene für zweite Ebene kopieren 2 < .1 # Konfiguration von erster Ebene für dritte Ebene kopieren 3 < .1 # Hier für beliebig viele weitere Ebenen kopieren (z.B. 4 < .1) }
Seite 521/522
expAll-Beispiel
temp.myNavigation = HMENU temp.myNavigation { 1 = TMENU 1 { NO = 1 NO.before = |-> NO.after = <br /> expAll = 1 } 2 < .1 2.NO.before = | |-> }
Seite 522/523
GMENU-Beispiel
# HMENU-Objekt erzeugen temp.menu = HMENU # GMENU-Menüobjekt hinzufügen temp.menu.1 = GMENU temp.menu.1 { # Normalen Zustand definieren NO = 1 NO { # Größe des GIF-Bildes einstellen XY = [10.w]+2,[10.h]+4 # Versatz für Inhalt festlegen offset = 0,10 # TEXT-Objekt innerhalb des GIFBUILDER-Objekts definieren 10 = TEXT 10 { # Textinhalt festlegen text.field = subtitle // title # Inhalte zentrieren align = center } } # Rollover Zustand definieren RO = 1 # Einstellungen vom Normalzustand kopieren RO < .NO RO { # Hintergrund bei Mouseover rot einfärben backColor = red } }
Seite 531
Benutzernamen in der Listenansicht fett auszeichnen
plugin.tx_newloginbox_pi3.listView.customProcessing { username = TEXT username.field = username username.wrap = <strong>|</strong> }
Seite 535-539
Inhalt von fileadmin/form.html
<!-- ###TEMPLATE_FORM### begin --> <form method="post" action="index.php" enctype="multipart/form-data"> <input type="hidden" name="id" value="###PID###"> <input type="hidden" name="submitted" value="1"> ###ERROR### <ul class="form"> ###error_name### <li> Name:<br /> <input type="text" name="name" value="###value_name###"> </li> ###error_email### <li> E-Mail:<br /> <input type="text" name="email" value="###value_email###"> </li> <li> Kontakt:<br /> <input type="radio" name="via" value="E-Mail" ###checked_via_E-Mail###> via E-Mail <input type="radio" name="via" value="Phon" ###checked_via_Phon###> via Telefon </li> <li> <input type="submit"> </li> </ul> </form> <!-- ###TEMPLATE_FORM### end --> <!-- ###TEMPLATE_ERROR### begin --> <!-- ###ERROR_START### begin --> Es gab folgende Fehler: <ul class="formerror"> <!-- ###ERROR_START### end --> <!-- ###ERROR_email### begin --> <li class="error">Bitte geben Sie Ihre E-Mail-Adresse ein!</li> <!-- ###ERROR_email### end --> <!-- ###ERROR_name### begin --> <li class="error">Bitte geben Sie Ihren Namen ein!</li> <!-- ###ERROR_name### end --> <!-- ###ERROR_END### begin --> </ul> <!-- ###ERROR_END### end --> <!-- ###TEMPLATE_ERROR### end --> <!-- ###TEMPLATE_SUBMITTED_OK### begin --> Danke für deine Nachricht ###value_name###! <!-- ###TEMPLATE_SUBMITTED_OK### end --> <!-- ###TEMPLATE_EMAIL_USER### begin --> Hallo ###name###, Wir haben deine Nachricht bekommen! Deine E-Mail-Adresse: ###email###. Wir kontaktieren dich per ###via###. <!-- ###TEMPLATE_EMAIL_USER### end --> <!-- ###TEMPLATE_EMAIL_RECEIVER### begin --> ###name### (###email###) kontaktieren via ###via###! <!-- ###TEMPLATE_EMAIL_RECEIVER### end -->
Seite 541
Fakultative Eingabefelder dynamisch ermitteln
temp.req = name [globalVar = GP:via=E-Mail] temp.req := addToList(email) [end] [globalVar = GP:via=Phon] temp.req := addToList(number) [end] plugin.tx_thmailformplus_pi1.default.email_requiredfields < temp.req
Seite 544
Stilinformationen für das Kontaktformular
ul.form { margin: 0; padding: 0; list-style: none; } ul.formerror li, ul.form li.error { color: red; } ul.form li.error { font-size: 10px; }
Seite 556
Wieder verwendbarer Menü-Code
temp.navi = HMENU temp.navi { 1 = TMENU 1 { wrap = <ul>|</ul> NO = 1 NO { wrapItemAndSub = <li class="no">|</li> ATagTitle.field = subtitle // title stdWrap.htmlSpecialChars = 1 } ACT = 1 ACT < .NO ACT.wrapItemAndSub = <li class="act">|</li> IFSUB = 1 IFSUB < .NO IFSUB.doNotLinkIt = 1 ACTIFSUB = 1 ACTIFSUB < .ACT ACTIFSUB.doNotLinkIt = 1 } 2 < .1 }
Seite 560
Seiten-Navigation
lib.top_navi < temp.navi lib.top_navi.entryLevel = 0 lib.top_navi.2 >
Seite 561
Produktsortiments-Navigation
lib.left_navi < temp.navi lib.left_navi { special = directory special.value = 5 # ID der “Sortiment” Seite 1.expAll = 1 1.NO.doNotLinkIt = 1 }
Seite 562
Info-Navigation
lib.info_navi < temp.navi lib.info_navi { special = directory special.value = 38 # ID der “Info” Seite 2 > }
Seite 568/569
GIF-Bild mit Überschrift
temp.headline = IMAGE temp.headline { altText.data = page:subtitle // page:title file = GIFBUILDER file { XY = [10.w]+2,[10.h]+2 transparentBackground = 1 10 = TEXT 10 { text.data = page:subtitle // page:title fontFile = {$font} fontSize = 20 offset = 0,16 niceText = 1 } } }
Seite 571
RTE für Einfügen des Ø-Zeichens konfigurieren
RTE.default.userElements { 10 = Zeichen 10 { 1 = Durchschnitt-Zeichen 1.description = Das Durchschnitt-Zeichen wird eingefuegt. 1.content = Ø # … Hier weitere Zeichen einfügen } } RTE.default.showButtons = user
Seite 572
Sitemap zusammenfügen
lib.myObject = COBJ_ARRAY lib.myObject { wrap = <ul>|</ul> 1 < lib.top_navi 1.1.wrap = | 2 < lib.left_navi 2 { excludeUidList = 7 # ID der „Suche“-Seite im Sortiment 1.wrap = | } 3 < lib.info_navi 3.1.wrap = | }
Seite 576
Standard-Menü definieren
temp.ul_menu = TMENU temp.ul_menu { # Jedes TMENU mit <ul> umschließen wrap = <ul>|</ul> # Normalen Zustand definieren NO = 1 NO { # jedes Element und Sub-Elemente mit <li> umschließen wrapItemAndSub = <li class="no">|</li> # Das title-Attribut der Links einstellen ATagTitle.field = subtitle // title stdWrap.htmlSpecialChars = 1 } # Aktiven von normalem Zustand kopieren ACT < .NO # Aktive Elemente kennzeichnen ACT.wrapItemAndSub = <li class="act">|</li> }
Seite 577
Menü im Kopfbereich
temp.head_menu = HMENU temp.head_menu.special = list # ids: Startseite, Kundenlogin/Kundenbereich, FAQ, AGBs, Anfrage temp.head_menu.special.value = 2,3,17,22,16,20 temp.head_menu.1 < temp.ul_menu
Seite 580-583
Hauptnavigation
temp.menu_1 = HMENU temp.menu_1.entryLevel = 1 temp.menu_1.1 = GMENU temp.menu_1.1 { NO = 1 NO { ATagTitle.field = subtitle // title XY = 170,20 wrap = <div class="item">|</div> backColor = #F7F7F7 5 = IMAGE 5 { file = {$pfeil_r} offset = 7,0 align = 0,c } 10 = TEXT 10 { text.field = title offset = 18,14 fontFile = {$font} niceText = 1 } 20 = BOX 20 { dimensions = 0,0,170,1 color = white } } CUR < .NO CUR.backColor = #D0DCE4 RO < .CUR RO.5.file = {$pfeil_u} ACTIFSUB < .RO ACTIFSUB { 7 < .20 7.dimensions = 0,19,170,1 } USR < .CUR USR { 20.color = #E4180D 7 < .20 7.dimensions = 0,19,170,1 10.fontColor = #E4180D 5 < .20 5.dimensions = 7,7,5,5 } } temp.menu_1.2 < temp.ul_menu temp.menu_1.2 { SPC < .NO SPC.doNotShowLink = 1 SPC.wrapItemAndSub = <li class="spc">|</li> } temp.menu_1.3 < temp.menu_1.2
Seite 584
Produktnavigation
temp.model_menu = HMENU temp.model_menu { entryLevel = -2 1 < temp.ul_menu 1.ACT.doNotLinkIt = 1 }
Seite 585
Brotkrümelnavigation (Breadcrumbs navigation)
temp.yah = HMENU temp.yah { special = rootline special.range = 1| 1 = TMENU 1 { NO = 1 NO.allWrap = || » |*| NO.stdWrap.htmlSpecialChars = 1 CUR < .NO CUR.doNotLinkIt = 1 } }
Seite 587
TypoScript-Setup
config { htmlTag_langKey = de-DE xhtml_cleaning = all spamProtectEmailAddresses = 3 language = de locale_all = german simulateStaticDocuments = 1 simulateStaticDocuments_pEnc = md5 simulateStaticDocuments_pEnc_onlyP = tx_mininews_pi1[showUid],cHash simulateStaticDocuments_noTypeIfNoTitle = 1 }
Seite 589
Link zum Impressum
temp.impressum_link = TEXT temp.impressum_link.typolink.parameter = sp_impressum
Link zu den Kundenmeinungen
temp.client_link = TEXT temp.client_link.typolink { parameter = sp_kunden returnLast = url }
Seite 590
Link zur Druckversion
temp.printLink = TEXT temp.printLink.typolink { parameter.data = page:uid returnLast = url additionalParams = &print=1 additionalParams.htmlSpecialChars = 1 }
Seite 592-594
Button-Template
temp.button = HMENU temp.button.special = list temp.button.1 = GMENU temp.button.1 { NO = 1 NO { ATagTitle.field = subtitle // title XY = [40.w]+16,18 10 = IMAGE 10.file = {$buttonPath}middle_no.gif 10.offset = 8,0 10.tile = 20 20 = IMAGE 20.file = {$buttonPath}left_no.gif 30 = IMAGE 30.file = {$buttonPath}right_no.gif 30.align = r 40 = TEXT 40 { offset = 8,13 fontColor = black text.field = subtitle // title fontFile = {$font} } } RO < .NO RO { 10.file = {$buttonPath}middle_ro.gif 20.file = {$buttonPath}left_ro.gif 30.file = {$buttonPath}right_ro.gif 40.fontColor = #AEAEAE } }
Seite 595
Benutzerdefinierten Seitentitel erzeugen und verwenden
temp.myTitle = HMENU temp.myTitle { special = rootline special.range = 2| wrap = <title>Schattenprofi.de - Qualität zu günstigen Preisen|</title> 1 = TMENU 1 { NO = 1 NO.allWrap = :: | NO.stdWrap.htmlSpecialChars = 1 NO.doNotLinkIt = 1 } } page.headerData.5 < temp.myTitle config.noPageTitle = 1
Seite 597/598
Bild für Seitenüberschrift erzeugen
temp.site_title = IMAGE temp.site_title { altText.data = page:subtitle // page:title file = GIFBUILDER file { XY = [10.w]+2,[10.h]+2 transparentBackground = 1 10 = TEXT 10 { text.data = page:subtitle // page:title text.case = upper fontFile = {$font} offset = 0,10 niceText = 1 } } }
Seite 604
HTML-Template für das Schattenprofi::3cols Template-Objekt
<table class="t-3cols"> <tr class="t-3cols-cols"> <td class="t-3cols-left">Linke Spalte</td> <td class="t-3cols-middle">Mittlere Spalte</td> <td class="t-3cols-right">Rechte Spalte</td> </tr> <tr class="t-3cols-buttons"> <td class="t-3cols-left-button"><img src=""></td> <td class="t-3cols-middle-button"><img src=""></td> <td class="t-3cols-right-button"><img src=""></td> </tr> </table>
Seite 605
HTML-Template für das Schattenprofi::3cols::Print TO
<div class="t-3cols"> <div class="t-3cols-left">Linke Spalte</div> <hr /> <div class="t-3cols-middle">Mittlere Spalte</div> <hr /> <div class="t-3cols-right">Rechte Spalte</div> </div>
Seite 611
HTML-Template für das Schattenprofi::Product::Print TO
<div class="product"> <h1> »<span class="name">Name</span> </h1> <h2>Markisentyp</h2> <hr /> <img src="" width="270" height="135" alt="Vorschau"> <img src="" width="240" height="34" alt="Slogan"/> <img src="images/neu.gif" width="58" height="57" alt="Neu!"/> <hr /> </div>
Seite 612
Druckversion anpassen
[globalVar = GP:print > 0] lib.site_title = TEXT lib.site_title.data = page:subtitle // page:title lib.site_title.wrap = <h1>|</h1> temp.yah.1.NO.doNotLinkIt = 1 tt_content.multimedia.20 > temp.printLink.typolink.additionalParams > [else] lib.site_title < temp.site_title [global]
Seite 624/625
Vorbereitung für mehrsprachige Seiten
config { # Sprachvariable festlegen linkVars = L # Kein Rückfall auf Standardsprache, falls Lokalisierung fehlt sys_language_mode = strict # Systemsprache UID 0 -> Englisch sys_language_uid = 0 language = en locale_all = english # Systemabhängig htmlTag_langKey = en }
Seite 626/627
Sprachweiche
[globalVar = GP:L = 1] # Sprache mit UID 1 -> Deutsch config.sys_language_uid = 1 config.language = de config.locale_all = german config.htmlTag_langKey = de-DE config.sys_language_mode = content_fallback ; 0,3 [globalVar = GP:L = 2] # Sprache mit UID 2 -> Chinesisch config.sys_language_uid = 2 config.language = zh config.locale_all = chinese-simplified config.htmlTag_langKey = zh-Hans [globalVar = GP:L = 3] # Sprache mit UID 3 -> Französisch config.sys_language_uid = 3 config.language = fr config.locale_all = french config.htmlTag_langKey = fr # […] hier können noch beliebig viele Bedingungen folgen [global] # Ende der Bedingungen
Seite 632/633
Spezialisiertes HMENU (language)
# Hierarchisches Menü erzeugen lib.langMenu = HMENU lib.langMenu { # Spezialfunktion anwenden -> Sprachen special = language # Auszuwählende Sprachen (IDs) angeben special.value = 0,1,3 # TMENU-Objekt erzeugen 1 = TMENU 1 { # Das ganze Menü mit <ul> umschließen wrap = <ul>|</ul> # Normalen Menüzustand aktivieren NO = 1 NO { # Elemente mit <li> umschließen und normal kennzeichnen linkWrap = <li class="no">|</li> # Titel durch lokal. Namen der Sprachen überschreiben stdWrap.override = English || Deutsch || Français } # Aktiven Menüzustand aktivieren ACT = 1 # Einstellungen von normalem Menüzustand kopieren ACT < .NO # Elemente mit <li> umschließen, aber aktiv kennzeichnen ACT.linkWrap = <li class="act">|</li> # Benutzerdefinierten Menüzustand 1 aktivieren USERDEF1 = 1 # Einstellungen von normalem Menüzustand kopieren USERDEF1 < .NO # Menüelemente sollen nicht verlinkt werden USERDEF1.doNotLinkIt = 1 } } # PAGE-Objekt erstellen page = PAGE # Menü in PAGE-Objekt einfügen page.10 < lib.langMenu
Seite 636
Sprachauswahl bei Two-Tree-Methode
temp.lng_menu = HMENU temp.lng_menu { wrap = <ul>|</ul> 1 = TMENU 1.NO = 1 1.NO.allWrap = <li>|</li> } # PAGE-Objekt erstellen page = PAGE # Sprachmenü in die Seite einfügen page.10 < temp.lng_menu

