encapsLines¶
This function is a sub-function of stdWrap and can be used like this:
page.20 = TEXT
page.20 {
value (
First line of text
Some <div>text</div>
<p>Some text</p>
<div>Some text</div>
<B>Some text</B>
)
stdWrap.encapsLines {
encapsTagList = div, p
remapTag.P=DIV
}
}
Properties¶
encapsTagList¶
- Property
- encapsTagList
- Data type
- list of strings
- Description
- List of tags which qualify as encapsulating tags. Must be lowercase.
- Example
-
encapsTagList = div, p
Copied!This setting will recognize the highlighted lines below as encapsulated lines:
First line of text Some <div>text</div> <p>Some text</p> <div>Some text</div> <B>Some text</B>
Copied!
remapTag.[tagname]¶
- Property
- remapTag.[tagname]
- Data type
- string
- Description
-
Enter a new tag name here if you wish the tag name of any encapsulation to be unified to a single tag name.
For instance, setting this value to
remapTag.P=DIV
would convert:<p>Some text</p> <div>Some text</div>
Copied!to :
<div>Some text</div> <div>Some text</div>
Copied!([tagname] is in uppercase.)
addAttributes.[tagname]¶
- Property
- addAttributes.[tagname]
- Data type
- (array of strings)
- Description
-
Attributes to set in the encapsulation tag.
([tagname] is in uppercase.)
addAttributes.P.setOnly = exists
Copied!- exists
- This will set the value ONLY if the property does not already exist.
- blank
- This will set the value ONLY if the property does not already exist OR is blank ("").
- Default
- Always override/set the value of the attributes.
- Example
-
addAttributes.P { style = padding-bottom: 0px; margin-top: 1px; margin-bottom: 1px; align = center }
Copied!
removeWrapping¶
- Property
- removeWrapping
- Data type
- boolean
- Description
-
If set, then all existing wrapping will be removed.
This:
First line of text Some <div>text</div> <p>Some text</p> <div>Some text</div> <b>Some text</b>
Copied!becomes this:
First line of text Some <div>text</div> Some text Some text <b>Some text</b>
Copied!
wrapNonWrappedLines¶
- Property
- wrapNonWrappedLines
- Data type
- wrap
- Description
- Wrapping for non-encapsulated lines
- Example
-
wrapNonWrappedLines = <p>|</p>
Copied!This:
First line of text <p>Some text</p>
Copied!becomes this:
<P>First line of text</P> <p>Some text</p>
Copied!
innerStdWrap_all¶
- Property
- innerStdWrap_all
- Data type
- stdWrap
- Description
- Wraps the content inside all lines, whether they are encapsulated or not.
encapsLinesStdWrap.[tagname]¶
- Property
- encapsLinesStdWrap.[tagname]
- Data type
- stdWrap
- Description
-
Wraps the content inside all encapsulated lines.
([tagname] is in uppercase.)
defaultAlign¶
- Property
- defaultAlign
- Data type
- string / stdWrap
- Description
- If set, this value is set as the default "align" value of the wrapping
tags, both from encapsTagList,
bypassEncapsTagList
and nonWrappedTag
nonWrappedTag¶
- Property
- nonWrappedTag
- Data type
tagname
- Description
- For all non-wrapped lines, you can here set a tag in which they
should be wrapped. Example would be "p". This is an alternative to
wrapNonWrappedLines
and has the advantage that its attributes are set byaddAttributes
as well asdefaultAlign
. Thus you can match the wrapping tags used for non-wrapped and wrapped lines more easily.
Examples¶
<p>
tag is used to encapsulate each line¶
encapsLines {
encapsTagList = div,p
remapTag.DIV = P
wrapNonWrappedLines = <p>|</p>
innerStdWrap_all.ifEmpty =
}
This example shows how to handle content rendered by TYPO3 and
stylesheets where the <p>
tag is used to encapsulate each line.
Say, you have made this content with the rich text editor:
This is line # 1
[Above is an empty line!]
<div style="text-align: right;">This line is right-aligned.</div>
After being processed by encapsLines with the above configuration, the content looks like this:
<p>This is line # 1 </p>
<p> </p>
<p>[Above is an empty line!] </p>
<p style="text-align: right;">This line is right-aligned.</p>
Each line is nicely wrapped with <p>
tags. The line from the database
which was already wrapped (but in <div>
tags) has been converted to
<p>
, but keeps its alignment. Overall, notice that the rich text editor
ONLY stored the line which was in fact right-aligned - every other line from the
RTE was stored without any wrapping tags, so that the content in the database
remains as human readable as possible.
Advanced example¶
# Make sure nonTypoTagStdWrap operates
# on content outside <typolist> and <typohead> only:
tt_content.text.20.parseFunc.tags.typolist.breakoutTypoTagContent = 1
tt_content.text.20.parseFunc.tags.typohead.breakoutTypoTagContent = 1
# ... and no <br> before typohead.
tt_content.text.20.parseFunc.tags.typohead.stdWrap.wrap >
# Setting up nonTypoTagStdWrap to wrap the text with p tags
tt_content.text.20.parseFunc.nonTypoTagStdWrap >
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines {
encapsTagList = div,p
remapTag.DIV = P
wrapNonWrappedLines = <p style="margin: 0 0 0;">|</p>
# Forcing these attributes onto the encapsulation tags if any
addAttributes.P {
style=margin: 0 0 0;
}
innerStdWrap_all.ifEmpty =
}
# Finally removing the <br> tag after the content...
tt_content.text.20.wrap >
This is an example of how to wrap the table field tt_content.bodytext
with <p>
tags, setting the line distances to regular space like that
generated by a <br>
tag, but staying compatible with the RTE features
such as assigning classes and alignment to paragraphs.