parseFunc
This object is used to parse some content for stuff like special typo tags, the makelinks-things and so on...
Properties
externalBlocks
externalBlocks
-
- Type
- list of tagnames / +properties
This allows you to pre-split the content passed to parseFunc so that only content outside the blocks with the given tags is parsed.
Extra properties:
.[tagname] {
- callRecursive: boolean. If set, the content of the block is directed into parseFunc again. Otherwise the content is passed through with no other processing than stdWrap (see below).
- callRecursive.dontWrapSelf: boolean. If set, the tags of the block is not wrapped around the content returned from parseFunc.
- callRecursive.alternativeWrap: Alternative wrapping instead of the original tags.
- callRecursive.tagStdWrap: stdWrap processing of the block-tags.
- stdWrap: stdWrap processing of the whole block (regardless of whether callRecursive was set.)
- stripNLprev: boolean. Strips off last line break of the previous outside block.
- stripNLnext: boolean. Strips off first line break of the next outside block.
- stripNL: boolean. Does both of the above.
- HTMLtableCells: boolean. If set, then the content is expected to be a table and every table-cell is traversed.
Below, "default" means all cells and "1", "2", "3", ... overrides for specific columns.
-
HTMLtableCells.[default/1/2/3/...] {
- HTMLtableCells.addChr10BetweenParagraphs: boolean. If set, then
all appearances of
</
will have aP><P> chr
inserted between them.(10)
ExampleThis example is used to split regular bodytext content so that tables and blockquotes in the bodytext are processed correctly. The blockquotes are passed into parseFunc again (recursively) and further their top/bottom margins are set to 0 (so no apparent line breaks are seen)
The tables are also displayed with a number of properties of the cells overridden
tt_content.text.20.parseFunc.externalBlocks { blockquote.callRecursive = 1 blockquote.callRecursive.tagStdWrap.HTMLparser = 1 blockquote.callRecursive.tagStdWrap.HTMLparser { tags.blockquote.fixAttrib.style.list = margin-bottom:0;margin-top:0; tags.blockquote.fixAttrib.style.always = 1 } blockquote.stripNLprev = 1 blockquote.stripNLnext = 1 table.stripNL = 1 table.stdWrap.HTMLparser = 1 table.stdWrap.HTMLparser { tags.table.overrideAttribs = border="0" style="margin-top: 10px;" tags.tr.allowedAttribs = 0 tags.td.overrideAttribs = class="table-cell" style="font-size: 10px;" } }
Copied!
short
short
-
- Type
- (array of strings)
If this property is set, you can replace a char or word in your text with the value of the according constant.
ExampleThis replaces all occurrences of "T3" with "TYPO3 CMS" and "T3web" with a link to typo3.org.
page.10 = TEXT page.10.value = Learn more about T3, look here: T3web page.10.parseFunc.short { T3 = TYPO3 CMS T3web = <a href="https://typo3.org">typo3.org</a> } # Output: Learn more about TYPO3 CMS, look here: <a href="https://typo3.org">typo3.org</a>
Copied!
plainTextStdWrap
plainTextStdWrap
userFunc
userFunc
-
- Type
- function name
This passes the non-tag content to a function of your own choice. Similar to, for example, postUserFunc in stdWrap, or typolink.userFunc.
Remember the function name must possibly be prepended
user_
.
nonTypoTagStdWrap
nonTypoTagStdWrap
-
- Type
- stdWrap
Like plainTextStdWrap. Difference:
parsefunc-
works on ALL non-tag pieces in the text. nonTypoTagStdWrap is post processing of all text (including tags) between special TypoTags (unlessplain Text Std Wrap breakout
is not set for the TypoTag).Typo Tag Content
nonTypoTagUserFunc
nonTypoTagUserFunc
-
- Type
- function name
Like userFunc. Differences is (like nonTypoTagStdWrap) that this is post processing of all content pieces around TypoTags while
user
processes all non-tag content. (Notice:Func breakout
must be set for the TypoTag if it's excluded fromTypo Tag Content non
).Typo Tag Content
makelinks
makelinks
-
- Type
- boolean
Convert web addresses prefixed with
http://
and mail addresses prefixed withmailto:
to links.
tags
tags
-
- Type
- tags
Here you can define custom tags that will parse the content to something.
allowTags
allowTags
-
- Type
- list of strings or "*"
Changed in version 13.2
Defining the TypoScript properties
allow
orTags deny
for the HTML processing viaTags std
is now optional.Wrap. parse Func Besides that, it is now possible to use
allow
.Tags = * List of tags, which are allowed to exist in code, use "*" for all. Security aspects are considered automatically by the HTML sanitizer, unless
html
is disabled explicitly.Sanitize If a tag is found in
allow
, the corresponding tag in denyTags is ignored!Tags ExampleThe example allows any tag, except
<u>
which will be encoded:10 = TEXT 10.value = <p><em>Example</em> <u>underlined</u> text</p> 10.parseFunc = 1 10.parseFunc { allowTags = * denyTags = u }
Copied!
denyTags
denyTags
-
- Type
- list of strings
List of tags, which may not exist in code! (use
*
for all.)Lowest priority: If a tag is not found in allowTags,
deny
is checked. If denyTags is notTags *
and the tag is not found in the list, the tag may exist!ExampleThis allows
<b>
,<i>
,<a>
and<img>
-tags to exist:tt_content.text.20.parseFunc { allowTags = b,i,a,img denyTags = * }
Copied!
if
if
-
- Type
- if
if "if" returns false, the input value is not parsed, but returned directly.
Example
This example takes the content of the field "bodytext" and parses it
through the makelinks-functions and substitutes all
<LINK>
and <TYPOLIST>
-tags with something else.
tt_content.text.default {
20 = TEXT
20.stdWrap.field = bodytext
20.stdWrap.wrap = | <br>
20.stdWrap.brTag = <br>
20.stdWrap.parseFunc {
makelinks = 1
makelinks.http.keep = path
makelinks.http.extTarget = _blank
makelinks.mailto.keep = path
tags {
link = TEXT
link {
stdWrap.current = 1
stdWrap.typolink.extTarget = _blank
stdWrap.typolink.target = {$cLinkTagTarget}
stdWrap.typolink.wrap = <p style="color: red; font-weight: bold;">|</p>
stdWrap.typolink.parameter.data = parameters : allParams
}
typolist < tt_content.bullets.default.20
typolist.trim = 1
typolist.field >
typolist.current = 1
}
}