Kategorien
- [-]Developer (104)
- API (15)
- Backend (17)
- Extensions (29)
- HTML & CSS (4)
- Typoscript (33)
- [-]Redaktionelles (21)
- Anleitungen (9)
- Tipps (8)
- [-]Sonstiges (50)
- SEO (8)
Schlagwortwolke
« | April 2024 | » | ||||
---|---|---|---|---|---|---|
S | M | T | W | T | F | S |
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Letzte Nachrichten
- DSGVO
- 26.05.2018 18:39
- Trackingtools und Datenschutzerklärung
- 14.03.2014 23:07
- 1:n und n:1 Relationen in Extbase
- 06.12.2013 12:04
- Erste Abmahnungen wegen Google Analytics
- 04.10.2013 12:11
Letzte Kommentare
- Das liegt daran, dass die captcha.php versucht, das halbe...
- 05.12.2017 00:41
- Hallo, danke für den tollen Beitrag. Kann man die...
- 22.10.2015 10:05
- Vielen Dank für den Austausch guter Artikel. Es ist eine...
- 17.08.2015 10:58
- Hallo Peter, danke für die Extension. Ich habe sie auf...
- 27.08.2014 12:51
In eigener Sache
Peter Linzenkirchner, Lisardo EDV Beratung in Augsburg. Freelance und Partner für Design- und Webagenturen in Augsburg und München. Pixelgenaue Templates, valides HTML, barrierearm. TYPO3-Projekte, Extension-Programmierung und mehr ...
Es besteht die Möglichkeit Konstanten zu definieren, die im RTE bzw. in allen Texteingabefeldern verwendet werden können. Diese Konstanten werden im RTE einfach in dieser Schreibweise eingefügt: ###MEINE_KONSTANTE###. Bei der Ausgabe im Frontend können diese Konstanten gegen einen vorgegeben Text oder gegen ein HTML-Snippet ersetzt werden.
Dazu müssen die Konstanten lediglich auf der obersten Ebene im Setup des TypoScript-Templates definiert werden:
- ##### Konstanten definieren #####
- constants.MEINE_KONSTANTE= <span class="myClass">irgend ein Text</span>
Verantwortlich dafür sind diese Einträge, die standardmäßig eingeschaltet sind:
- lib.parseFunc.constants=1
- lib.parseFunc_RTE.constants=1
Damit wird sowohl im RTE wie in allen Texteingabefeldern die Ersetzung der Konstanten eingeschaltet. Das gilt auch für die Eingabefelder von Extensions, soweit diese durch eine der beiden Funktionen geparst werden.
Platzhalter oder Abkürzungen
Neben diesen Konstanten können Abkürzungen oder Ausdrücke definiert werden, die bei der Ausgabe ins Frontend ersetzt oder expandiert werden. Diese Abkürzungen oder Platzhalter müssen im TypoScript-Setup zunächst definiert werden:
- ##### Abkürzungen definieren
- lib.parseFunc_RTE.short {
- T3= <span class="test">Typo3</span>
- }
Dabei ist darauf zu achten, dass diese Definition diesmal nicht global erfolgt sondern lokal; um sie also auch in anderen Textfeldern verwenden zu können müssen sie für die normale parseFunc nochmals definiert werden.
Im RTE muss nur die Abkürzung oder der Platzhalter eingegeben werden – es ist keine weitere Auszeichnung erforderlich. Im obigen Beispiel wird ein alleinstehendes »T3« im Frontend automatisch durch »Typo3« in einem span-Tag ersetzt. Allerdings sollte dabei bedacht werden, dass diese Abkürzungen immer ersetzt werden; sinnvoll wären also nur eindeutige Abkürzungen.
Weiterführende Links
Der Abschnitt über die ParseFunc im TSconfig.
GLOBALS TSFE
Über GLOBAL[‘TSFE’] kann man bei der Extension-Programmierung mehr oder weniger auf das gesamte TypoScript-Setup von Typo3 zugreifen. Man kann aktuelle Konfigurationen abfragen oder auch ändern, so dass sich die Ausgabe ins Frontend abhängig vom installierten Plugin auf jeder Seite ändern kann.
Zum Beispiel können damit zusätzliche JavaScript- oder CSS-Definitionen im Kopfbereich ausgegeben werden (siehe CSS und JavaScript im Kopfbereich ausgeben) oder der Bodytag erweitert werden. Folgende Zeile fügt z. B. auf jeder Seite, auf der das Plugin installiert wirde, dem Body-Tag einen onload-Befehl hinzu, wie er für Google-Maps benötigt wird:
- $GLOBALS['TSFE']->pSetup['bodyTagAdd']='onload="load()" onunload="GUnload()';
Mit
- $GLOBALS['TYPO3_DB']->debugOutput=true;
- echot3lib_div::debug($GLOBALS['TSFE']->pSetup);
kann man sich die erste Ebene des $GLOBAL-Arrays ausgeben lassen:
- 0 id
- 1 type
- 2 idParts
- 3 cHash
- 4 no_cache
- 5 rootLine
- 6 page
- 7 contentPid
- 8 sys_page
- 9 jumpurl
- 10 pageNotFound
- 11 domainStartPage
- 12 pageAccessFailureHistory
- 13 MP
- 14 RDCT
- 15 page_cache_reg1
- 16 siteScript
- 17 fe_user
- 18 loginUser
- 19 gr_list
- 20 beUserLogin
- 21 workspacePreview
- 22 loginAllowedInBranch
- 23 ADMCMD_preview_BEUSER_uid
- 24 fePreview
- 25 showHiddenPage
- 26 showHiddenRecords
- 27 simUserGroup
- 28 TYPO3_CONF_VARS
- 29 TCAcachedExtras
- 30 tmpl
- 31 cacheTimeOutDefault
- 32 cacheContentFlag
- 33 cacheExpires
- 34 isClientCachable
- 35 all
- 36 sPre
- 37 pSetup
- 38 newHash
- 39 getMethodUrlIdToken
- 40 no_CacheBeforePageGen
- 41 tempContent
- 42 forceTemplateParsing
- 43 cHash_array
- 44 hash_base
- 45 pagesTSconfig
- 46 additionalHeaderData
- 47 additionalJavaScript
- 48 additionalCSS
- 49 JSeventFuncCalls
- 50 JSCode
- 51 JSImgCode
- 52 divSection
- 53 defaultBodyTag
- 54 debug
- 55 intTarget
- 56 extTarget
- 57 MP_defaults
- 58 spamProtectEmailAddresses
- 59 absRefPrefix
- 60 absRefPrefix_force
- 61 compensateFieldWidth
- 62 lockFilePath
- 63 ATagParams
- 64 sWordRegEx
- 65 sWordList
- 66 linkVars
- 67 excludeCHashVars
- 68 displayEditIcons
- 69 displayFieldEditIcons
- 70 sys_language_uid
- 71 sys_language_mode
- 72 sys_language_content
- 73 sys_language_contentOL
- 74 sys_language_isocode
- 75 applicationData
- 76 register
- 77 registerStack
- 78 cObjectDepthCounter
- 79 recordRegister
- 80 currentRecord
- 81 accessKey
- 82 imagesOnPage
- 83 lastImageInfo
- 84 uniqueCounter
- 85 uniqueString
- 86 indexedDocTitle
- 87 altPageTitle
- 88 pEncAllowedParamNames
- 89 baseUrl
- 90 anchorPrefix
- 91 cObj
- 92 content
- 93 clientInfo
- 94 scriptParseTime
- 95 TCAloaded
- 96 csConvObj
- 97 defaultCharSet
- 98 renderCharset
- 99 metaCharset
- 100 localeCharset
- 101 lang
- 102 langSplitIndex
- 103 labelsCharset
- 104 convCharsetToFrom
- 105 LL_labels_cache
- 106 LL_files_cache
- 107 config
- 108 no_cacheBeforePageGen
- 109 xhtmlDoctype
- 110 xhtmlVersion
Viele der Einträge kommen bekannt vor und man kann sich denken, worum es dabei geht. Wenn man sich für eine Rubrik interessiert, kann man sie sich einzeln ausgeben lassen, z. B. das gesamte config-Setup:
- $GLOBALS['TYPO3_DB']->debugOutput=true;
- echot3lib_div::debug($GLOBALS['TSFE']->config);
TSFE mit Typoscript auslesen
Man kann über Typoscript alle Werte des TSFE auslesen, hier ein Beispiel mit lastImageInfo:
- temp.bildinfo=COA
- temp.bildinfo {
- 10=IMAGE
- # Das Bild muss existieren!
- # Bildbreite
- 20=TEXT
- 20.data=TSFE:lastImageInfo|0
- # Höhe
- 30=TEXT
- 30.data=TSFE:lastImageInfo|1
- # Typ
- 40=TEXT
- 40.data=TSFE:lastImageInfo|2
- # Pfad
- 50=TEXT
- 50.data=TSFE:lastImageInfo|3
- # Pfad zum Originalbild
- 60=TEXT
- 60.data=TSFE:lastImageInfo|origFile
- # Datum und Zeit des Uplaods
- 70=TEXT
- 70.data=TSFE:lastImageInfo|origFile_mtime
- }
Weiterführende Links:
- Auslesen von Informationen des IMAGE
- Auslesen von Informationen aus dem typolink Objekt
- Auslesen von client Informationen
- Andere nützliche Informationen
Ein Anwendungsbeispiel wäre die Bildergalerie mit reinem TypoScript von Georg Ringer bei typo3blogger.de
Formularfelder von mailform vorbelegen
Es ist möglich, die Felder eines Mailformulars mit GET-Variablen vorzubelegen. Das muss allerdings mit Hilfe von TypoScript vorbereitet werden.
Folgendes Beispiel geht davon aus, dass das Formular mit der Variablen ?prod=xx aufgerufen wird. xx enthalt die uid eines News-Eintrags. Anhand der übergebenen uid soll das Formular mit dem Titel des News-Eintrags vorbelegt werden.
- tt_content.mailform {
- # Kann auch an anderer Stelle erfolgen -
- # das Register ist global
- 15=LOAD_REGISTER
- 15 {
- # REGISTER hat stdWrap-Eigenschaften, hier cObject
- # Dadurch ist es möglich, das Register mit einer
- # Datenbankabfrage zu füllen, was
- # hier passiert mit Hilfe von RECORDS
- produktname.cObject=RECORDS
- # Contentobjekt RECORDS wird aufgerufen
- produktname.cObject {
- # source: Liste von uid. Mit stdWrap-
- # Eigenschaften.
- # data: stdWrap vom Typ getText
- source.data=GPvar:prod
- # tables: Liste der Tabellen
- tables=tt_news
- # Mit source und tables wird der Datenbank-Inhalt
- # abgefragt.
- # Dieser Inhalt muss jetzt noch gerendert werden.
- # conf.[Tabelle]: Configarray zum Rendern des
- # Inhalts (cObject)
- conf.tt_news=TEXT
- conf.tt_news {
- field=title
- }
- }
- }
- }
- # Nötig, damit der die Variable auch wirklich ersetzt wird
- tt_content.mailform.20.data.insertData=1
- # Cache muss deaktiviert sein
- config.no_cache=1
Im Formular kann so auf den Wert zugegriffen werden:
- Name: | *Name=input,40
- Firma: |Firma=input,40
- Straße: |Strasse=input,40
- PLZ/Ort: |Ort=input,40
- Telefon: |Telefon=input,40
- E-Mail: | *email=input,40| |EMAIL
- Produkt: |Produkt=input,40|{register:produktname}
- Ihre Nachricht: |Mitteilung=textarea,40,8
Extension debuggen
Einige Möglichkeiten, während der Entwicklung einer Extension den Quellcode zu debuggen.
Ein Array ordentlich ausgeben:
- t3lib_div::debug($data);
Wenn es mehrere Debugs sind, kann man sie benennen:
- t3lib_div::debug($data,'Array vorher');
- $data['Name']='Dampf';
- $data['Alter']=32;
- t3lib_div::debug($data,'Array nachher');
Datenbankabfragen:
- $GLOBALS['TYPO3_DB']->debugOutput=true;
Beim Anlegen von Kopien oder von neuen Sprachen wird in leere Titel-Felder immer der String »( Copy x ) eingefügt. Das stört beim Kopieren von vielen Einträgen oder beim schnellen Anlegen von Übersetzungen ganz enorm.
Mit Hilfe eines Eintrag im Page TSconfig in der Root-Seite kann das verhindert bzw. ausgeschaltet werden:
- TCEMAIN.default.disablePrependAtCopy = 1