Feature: #66269 - Fluid: Remove ViewHelper xmlns-attributes and specified html tag
See forge#66269
Description
With the introduction of using xmlns: attributes to include ViewHelpers, it is possible to have IDE support for Fluid templates. However, the problem is that the xmlns: attributes and the corresponding tag will also be rendered, which is not desired most of the time. A workaround to avoid this is to use sections. However, this solution is counter-intuitive, is not available in layouts and causes extra processing overhead.
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">
<f:section name="content">
</f:section>
Impact
The xmlns:* attributes for valid ViewHelper namespaces will now be removed before rendering. Such ViewHelper namespaces follow this URI pattern:
http://typo3.org/ns/<phpNamespace>
Examples:
http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers
http://typo3.org/ns/GeorgRinger/News/ViewHelpers
xmlns attributes for non-ViewHelper namespaces will be preserved.
Furthermore an additional data-attribute to HTML-Tags is introduced.
data-namespace-typo3-fluid="true"
If this attribute is specified on the HTML-Tag, the HTML-tag itself won't be rendered as well. (Also a corresponding closing tag will not be rendered for that template.) This is useful for various IDEs and HTML auto-completion.
Examples
Include ViewHelper namespaces on an existing tag (e.g. root xml tag) via xmlns attributes for Fluid and News extension.
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
xmlns:foo="http://typo3.org/foo">
<f:if condition="{newsItem.title}">
<f:then>
<n:titleTag>{newsItem.title}</n:titleTag>
</f:then>
<f:else>
<n:titleTag>News-Detail</n:titleTag>
</f:else>
</f:if>
</root>
Output is then
<root xmlns:foo="http://typo3.org/foo" >
...
</root>
Include ViewHelper namespaces with HTML-tag and a data-namespace-typo3-fluid="true" attribute via xmlns attributes for Fluid and News extension.
<html data-namespace-typo3-fluid="true"
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">
<f:if condition="{newsItem.title}">
<f:then>
<n:titleTag>{newsItem.title}</n:titleTag>
</f:then>
<f:else>
<n:titleTag>News-Detail</n:titleTag>
</f:else>
</f:if>
</html>
The output contains everything excluding the HTML-tag.