blog.bartlweb - a technologist's external brain

Die Reihenfolge der wichtigsten Wraps in TYPO3

Die Konfigurationssprache Typoscript bietet unter TYPO3 die Möglichkeit komplexe Ausgaben zu erzeugen. Eines der größten Misterien dabei sind die Wraps, representiert durch die Konfigurations-Option stdWrap. Im folgenden möchte ich die Verschachtelung hinter den einzelnen Optionen des stdWraps auflösen (Im Folgenden sind nicht alle verfügbaren Wraps dargestellt, sondern nur jende die ich des öfteren selbst nutze). Genaue Infos finden sich unter http://www.typo3.net/tsref/functions/stdwrap/ und http://www.typo3.net/tsref/menu_objects/tmenuitem/.

TEXT/HTML

Auf die Objekte TEXT und HTML lässt sich die Funktion stdWrap anwenden. Diese vereint neben den reinen Wraps auch weitere Möglichkeiten wie das Einbinden von Datenquellen oder Bedingungen.

<outerWrap>
  <wrap3>
    <prepend />
    <wrap2>
      <noTrimWrap>
        <wrap>
          <innerWrap2>
            <innerwrap>
              CONTENT
            </innerWrap>
          </innerWrap2>
        </wrap>
      </noTrimWrap>
    </wrap2>
    <append />
  </wrap3>
</outerWrap>

TMENUITEM

Das für das Erstellen von Menüs benötigte Objekt TMENUITEM bietet etwas andere Möglichkeiten des wrappens.

</wrapItemAndSub>
  <allWrap>
    <before />
    <linkWrap>
      MENUITEM
    </linkWrap>
    <after />
  </allWrap>
  SUBMENUITEMS
</wrapItemAndSub>

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

  1. Danke für die Auflistung. Wer es genau wissen will schaut am besten in den Code der StdWrap functions selbst:

    Interessant ist vor allen Dingen das dataWrap nach wrap2 und vor prepend, append und wrap3 ausgeführt wird

    typo3/sysext/cms/tslib/class.tslib_content.php bzw. letzlich in der typo3/sysext/frontend/classes/contentObject/ContentObjectRenderer.php

    public $stdWrapOrder = array(
    'stdWrapPreProcess' => 'hook',
    // this is a placeholder for the first Hook
    'cacheRead' => 'hook',
    // this is a placeholder for checking if the content is available in cache
    'setContentToCurrent' => 'boolean',
    'setContentToCurrent.' => 'array',
    'addPageCacheTags' => 'string',
    'addPageCacheTags.' => 'array',
    'setCurrent' => 'string',
    'setCurrent.' => 'array',
    'lang.' => 'array',
    'data' => 'getText',
    'data.' => 'array',
    'field' => 'fieldName',
    'field.' => 'array',
    'current' => 'boolean',
    'current.' => 'array',
    'cObject' => 'cObject',
    'cObject.' => 'array',
    'numRows.' => 'array',
    'filelist' => 'dir',
    'filelist.' => 'array',
    'preUserFunc' => 'functionName',
    'stdWrapOverride' => 'hook',
    // this is a placeholder for the second Hook
    'override' => 'string',
    'override.' => 'array',
    'preIfEmptyListNum' => 'listNum',
    'preIfEmptyListNum.' => 'array',
    'ifNull' => 'string',
    'ifNull.' => 'array',
    'ifEmpty' => 'string',
    'ifEmpty.' => 'array',
    'ifBlank' => 'string',
    'ifBlank.' => 'array',
    'listNum' => 'listNum',
    'listNum.' => 'array',
    'trim' => 'boolean',
    'trim.' => 'array',
    'strPad.' => 'array',
    'stdWrap' => 'stdWrap',
    'stdWrap.' => 'array',
    'stdWrapProcess' => 'hook',
    // this is a placeholder for the third Hook
    'required' => 'boolean',
    'required.' => 'array',
    'if.' => 'array',
    'fieldRequired' => 'fieldName',
    'fieldRequired.' => 'array',
    'csConv' => 'string',
    'csConv.' => 'array',
    'parseFunc' => 'objectpath',
    'parseFunc.' => 'array',
    'HTMLparser' => 'boolean',
    'HTMLparser.' => 'array',
    'split.' => 'array',
    'replacement.' => 'array',
    'prioriCalc' => 'boolean',
    'prioriCalc.' => 'array',
    'char' => 'integer',
    'char.' => 'array',
    'intval' => 'boolean',
    'intval.' => 'array',
    'hash' => 'string',
    'hash.' => 'array',
    'round' => 'boolean',
    'round.' => 'array',
    'numberFormat.' => 'array',
    'expandList' => 'boolean',
    'expandList.' => 'array',
    'date' => 'dateconf',
    'date.' => 'array',
    'strftime' => 'strftimeconf',
    'strftime.' => 'array',
    'age' => 'boolean',
    'age.' => 'array',
    'case' => 'case',
    'case.' => 'array',
    'bytes' => 'boolean',
    'bytes.' => 'array',
    'substring' => 'parameters',
    'substring.' => 'array',
    'removeBadHTML' => 'boolean',
    'removeBadHTML.' => 'array',
    'cropHTML' => 'crop',
    'cropHTML.' => 'array',
    'stripHtml' => 'boolean',
    'stripHtml.' => 'array',
    'crop' => 'crop',
    'crop.' => 'array',
    'rawUrlEncode' => 'boolean',
    'rawUrlEncode.' => 'array',
    'htmlSpecialChars' => 'boolean',
    'htmlSpecialChars.' => 'array',
    'doubleBrTag' => 'string',
    'doubleBrTag.' => 'array',
    'br' => 'boolean',
    'br.' => 'array',
    'brTag' => 'string',
    'brTag.' => 'array',
    'encapsLines.' => 'array',
    'keywords' => 'boolean',
    'keywords.' => 'array',
    'innerWrap' => 'wrap',
    'innerWrap.' => 'array',
    'innerWrap2' => 'wrap',
    'innerWrap2.' => 'array',
    'fontTag' => 'wrap',
    'fontTag.' => 'array',
    'addParams.' => 'array',
    'textStyle.' => 'array',
    'tableStyle.' => 'array',
    'filelink.' => 'array',
    'preCObject' => 'cObject',
    'preCObject.' => 'array',
    'postCObject' => 'cObject',
    'postCObject.' => 'array',
    'wrapAlign' => 'align',
    'wrapAlign.' => 'array',
    'typolink.' => 'array',
    'TCAselectItem.' => 'array',
    'space' => 'space',
    'space.' => 'array',
    'spaceBefore' => 'int',
    'spaceBefore.' => 'array',
    'spaceAfter' => 'int',
    'spaceAfter.' => 'array',
    'wrap' => 'wrap',
    'wrap.' => 'array',
    'noTrimWrap' => 'wrap',
    'noTrimWrap.' => 'array',
    'wrap2' => 'wrap',
    'wrap2.' => 'array',
    'dataWrap' => 'dataWrap',
    'dataWrap.' => 'array',
    'prepend' => 'cObject',
    'prepend.' => 'array',
    'append' => 'cObject',
    'append.' => 'array',
    'wrap3' => 'wrap',
    'wrap3.' => 'array',
    'orderedStdWrap' => 'stdWrap',
    'orderedStdWrap.' => 'array',
    'outerWrap' => 'wrap',
    'outerWrap.' => 'array',
    'insertData' => 'boolean',
    'insertData.' => 'array',
    'offsetWrap' => 'space',
    'offsetWrap.' => 'array',
    'postUserFunc' => 'functionName',
    'postUserFuncInt' => 'functionName',
    'prefixComment' => 'string',
    'prefixComment.' => 'array',
    'editIcons' => 'string',
    'editIcons.' => 'array',
    'editPanel' => 'boolean',
    'editPanel.' => 'array',
    'cacheStore' => 'hook',
    // this is a placeholder for storing the content in cache
    'stdWrapPostProcess' => 'hook',
    // this is a placeholder for the last Hook
    'debug' => 'boolean',
    'debug.' => 'array',
    'debugFunc' => 'boolean',
    'debugFunc.' => 'array',
    'debugData' => 'boolean',
    'debugData.' => 'array'
    );

    kommentieren

  2. sehr misteriös!

    kommentieren

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "3461" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.