Schnellnavigation:

Kategorien

« 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

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

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:

  1. ##### Konstanten definieren #####
  2. constants.MEINE_KONSTANTE= <span class="myClass">irgend ein Text</span>
  3.  

Verantwortlich dafür sind diese Einträge, die standardmäßig eingeschaltet sind:

  1. lib.parseFunc.constants=1
  2. 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:

  1. ##### Abkürzungen definieren
  2. lib.parseFunc_RTE.short {  
  3.     T3= <span class="test">Typo3</span>
  4. }

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.

30August2010

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:

  1. $GLOBALS['TSFE']->pSetup['bodyTagAdd']='onload="load()" onunload="GUnload()';

Mit

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;
  2. echot3lib_div::debug($GLOBALS['TSFE']->pSetup);

kann man sich die erste Ebene des $GLOBAL-Arrays ausgeben lassen:

  1. 0  id
  2. 1  type
  3. 2  idParts
  4. 3  cHash
  5. 4  no_cache
  6. 5  rootLine
  7. 6  page
  8. 7  contentPid
  9. 8  sys_page
  10. 9  jumpurl
  11. 10    pageNotFound
  12. 11    domainStartPage
  13. 12    pageAccessFailureHistory
  14. 13    MP
  15. 14    RDCT
  16. 15    page_cache_reg1
  17. 16    siteScript
  18. 17    fe_user
  19. 18    loginUser
  20. 19    gr_list
  21. 20    beUserLogin
  22. 21    workspacePreview
  23. 22    loginAllowedInBranch
  24. 23    ADMCMD_preview_BEUSER_uid
  25. 24    fePreview
  26. 25    showHiddenPage
  27. 26    showHiddenRecords
  28. 27    simUserGroup
  29. 28    TYPO3_CONF_VARS
  30. 29    TCAcachedExtras
  31. 30    tmpl
  32. 31    cacheTimeOutDefault
  33. 32    cacheContentFlag
  34. 33    cacheExpires
  35. 34    isClientCachable
  36. 35    all
  37. 36    sPre
  38. 37    pSetup
  39. 38    newHash
  40. 39    getMethodUrlIdToken
  41. 40    no_CacheBeforePageGen
  42. 41    tempContent
  43. 42    forceTemplateParsing
  44. 43    cHash_array
  45. 44    hash_base
  46. 45    pagesTSconfig
  47. 46    additionalHeaderData
  48. 47    additionalJavaScript
  49. 48    additionalCSS
  50. 49    JSeventFuncCalls
  51. 50    JSCode
  52. 51    JSImgCode
  53. 52    divSection
  54. 53    defaultBodyTag
  55. 54    debug
  56. 55    intTarget
  57. 56    extTarget
  58. 57    MP_defaults
  59. 58    spamProtectEmailAddresses
  60. 59    absRefPrefix
  61. 60    absRefPrefix_force
  62. 61    compensateFieldWidth
  63. 62    lockFilePath
  64. 63    ATagParams
  65. 64    sWordRegEx
  66. 65    sWordList
  67. 66    linkVars
  68. 67    excludeCHashVars
  69. 68    displayEditIcons
  70. 69    displayFieldEditIcons
  71. 70    sys_language_uid
  72. 71    sys_language_mode
  73. 72    sys_language_content
  74. 73    sys_language_contentOL
  75. 74    sys_language_isocode
  76. 75    applicationData
  77. 76    register
  78. 77    registerStack
  79. 78    cObjectDepthCounter
  80. 79    recordRegister
  81. 80    currentRecord
  82. 81    accessKey
  83. 82    imagesOnPage
  84. 83    lastImageInfo
  85. 84    uniqueCounter
  86. 85    uniqueString
  87. 86    indexedDocTitle
  88. 87    altPageTitle
  89. 88    pEncAllowedParamNames
  90. 89    baseUrl
  91. 90    anchorPrefix
  92. 91    cObj
  93. 92    content
  94. 93    clientInfo
  95. 94    scriptParseTime
  96. 95    TCAloaded
  97. 96    csConvObj
  98. 97    defaultCharSet
  99. 98    renderCharset
  100. 99    metaCharset
  101. 100  localeCharset
  102. 101  lang
  103. 102  langSplitIndex
  104. 103  labelsCharset
  105. 104  convCharsetToFrom
  106. 105  LL_labels_cache
  107. 106  LL_files_cache
  108. 107  config
  109. 108  no_cacheBeforePageGen
  110. 109  xhtmlDoctype
  111. 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:

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;
  2. echot3lib_div::debug($GLOBALS['TSFE']->config);

TSFE mit Typoscript auslesen

Man kann über Typoscript alle Werte des TSFE auslesen, hier ein Beispiel mit lastImageInfo:

  1. temp.bildinfo=COA
  2. temp.bildinfo {
  3.   10=IMAGE
  4.   # Das Bild muss existieren!
  5.   10.file=fileadmin/img/bild.jpg
  6.  
  7.   # Bildbreite
  8.   20=TEXT
  9.   20.data=TSFE:lastImageInfo|0
  10.  
  11.   # Höhe
  12.   30=TEXT
  13.   30.data=TSFE:lastImageInfo|1
  14.  
  15.   # Typ 
  16.   40=TEXT
  17.   40.data=TSFE:lastImageInfo|2
  18.  
  19.   # Pfad 
  20.   50=TEXT
  21.   50.data=TSFE:lastImageInfo|3
  22.  
  23.   # Pfad zum Originalbild 
  24.   60=TEXT
  25.   60.data=TSFE:lastImageInfo|origFile
  26.  
  27.   # Datum und Zeit des Uplaods 
  28.   70=TEXT
  29.   70.data=TSFE:lastImageInfo|origFile_mtime
  30. }

Weiterführende Links:

Ein Anwendungsbeispiel wäre die Bildergalerie mit reinem TypoScript von Georg Ringer bei typo3blogger.de

Kategorien: API/Extensions  Kommentare 1
Tags: api, php, extension

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.

  1. tt_content.mailform {
  2.     # Kann auch an anderer Stelle erfolgen -
  3.     # das Register ist global
  4.  

  1.     15=LOAD_REGISTER
  2.     15 {
  3.       # REGISTER hat stdWrap-Eigenschaften, hier cObject
  4.       # Dadurch ist es möglich, das Register mit einer
  5.       # Datenbankabfrage zu füllen, was
  6.       # hier passiert mit Hilfe von RECORDS
  7.       produktname.cObject=RECORDS

  1.       # Contentobjekt RECORDS wird aufgerufen
  2.       produktname.cObject {
  3.           # source: Liste von uid. Mit stdWrap-
  4.           # Eigenschaften.
  5.           # data: stdWrap vom Typ getText
  6.           source.data=GPvar:prod
  7.           # tables: Liste der Tabellen
  8.           tables=tt_news
  9.           # Mit source und tables wird der Datenbank-Inhalt
  10.           # abgefragt.
  11.           # Dieser Inhalt muss jetzt noch gerendert werden.
  12.           # conf.[Tabelle]: Configarray zum Rendern des
  13.           # Inhalts (cObject)
  14.  

  1.           conf.tt_news=TEXT
  2.           conf.tt_news {
  3.               field=title
  4.           }
  5.       }
  6.   }
  7. }
  8. # Nötig, damit der die Variable auch wirklich ersetzt wird
  9. tt_content.mailform.20.data.insertData=1
  10. # Cache muss deaktiviert sein
  11. config.no_cache=1

Im Formular kann so auf den Wert zugegriffen werden:

  1. Name: | *Name=input,40
  2. Firma: |Firma=input,40
  3. Straße: |Strasse=input,40
  4. PLZ/Ort: |Ort=input,40
  5. Telefon: |Telefon=input,40
  6. E-Mail: | *email=input,40| |EMAIL
  7. Produkt: |Produkt=input,40|{register:produktname}
  8. Ihre Nachricht: |Mitteilung=textarea,40,8

30August2010

Extension debuggen

Einige Möglichkeiten, während der Entwicklung einer Extension den Quellcode zu debuggen.

Ein Array ordentlich ausgeben:

  1. $data= array("Name"=>"Hans","Alter"=>40,"Wohnort"=>"Augsburg");
  2. t3lib_div::debug($data);

Wenn es mehrere Debugs sind, kann man sie benennen:

  1. $data= array("Name"=>"Hans","Alter"=>40,"Wohnort"=>"Augsburg");
  2. t3lib_div::debug($data,'Array vorher');
  3.  
  4. $data['Name']='Dampf';
  5. $data['Alter']=32;
  6.  
  7. t3lib_div::debug($data,'Array nachher');

Datenbankabfragen: 

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;

 

 

Kategorien: API/Extensions  Kommentare 0
Tags: extension, php, debug

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:

  1. TCEMAIN.default.disablePrependAtCopy = 1

Weiterführende Links

Page TSconfig auf top3.org