如何在 Typoscript 设置中转义变量?
How to escape variables in Typoscript setup?
我正在尝试使用设置模板中的 Typoscript 使用额外的 HTML 元素和参数包装图像。
到目前为止,我已经设法用 HTML 包装元素,但我还想添加一些参数。当我尝试转义变量中的变量时出现问题 - 我无法从其中一个参数传递 UID。
示例如下:
lib.parseFunc_RTE {
tags.img = TEXT
tags.img {
current = 1
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
dataWrap = <a href="{parameters:src}" class="lightbox" title="file:{parameters:data-htmlarea-file-uid}:title" data-lightbox-caption="{file:120:title}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group"> | </a>
}
}
有问题的部分在这里:title="file:{parameters:data-htmlarea-file-uid}:title"
我已经尝试使用 {file:{parameters:data-htmlarea-file-uid}:title},但它仍然无法正常工作并在渲染中显示错误元素:
唯一可行的例子是当我硬编码 UID ({file:120:title}) 时,但它应该动态添加,因为有很多图像。
如何逃避这个“双重变量”?或者也许有另一种解决方案可以让它发挥作用?
============================================= =====
这是我的问题的完整解决方案,感谢 @Jo Hasenau
lib.parseFunc_RTE {
tags.img = COA
tags.img {
10 = TEXT
10 {
dataWrap = file:{parameters:data-htmlarea-file-uid}:title
wrap3 = <a href="{parameters:src}" class="lightbox" title="{|}"
insertData = 1
}
20 = TEXT
20 {
dataWrap = file:{parameters:data-htmlarea-file-uid}:description
wrap3 = data-lightbox-caption="{|}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group">
insertData = 1
}
30 = TEXT
30 {
current = 1
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
wrap = |</a>
}
}
}
您可以多次使用dataWrap
and/or insertData
,方法是使用stdWrap
函数的官方命令或挤入[=13 的另一个“级别” =] 功能与 stdWrap.functionName
在这种情况下,函数的顺序与 COA
相结合,将原始包装分成更小的块,并由另一个包装提供一些额外的大括号。
lib.parseFunc_RTE {
tags.img = COA
tags.img {
10 = TEXT
10 {
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
dataWrap = file:{parameters:data-htmlarea-file-uid}:title
wrap3 = <a href="{parameters:src}" class="lightbox" title="{|}" data-lightbox-caption="{file:120:title}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group">
insertData=1
}
20 = TEXT
20.current = 1
20.wrap = |</a>
}
}
preUserFunc
将首先执行,然后第一个 dataWrap
将创建实际的变量名,然后是 wrap3
以获得必要的花括号,最后由 insertData
将所有其他变量与生成的变量一起填写。
这段代码中的顺序只是为了更好的可读性,但 stdWrap 中函数调用的实际顺序在 PHP 代码中已经预定义,并且完全遵循官方文档中函数描述的顺序:https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Stdwrap.html
我正在尝试使用设置模板中的 Typoscript 使用额外的 HTML 元素和参数包装图像。
到目前为止,我已经设法用 HTML 包装元素,但我还想添加一些参数。当我尝试转义变量中的变量时出现问题 - 我无法从其中一个参数传递 UID。
示例如下:
lib.parseFunc_RTE {
tags.img = TEXT
tags.img {
current = 1
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
dataWrap = <a href="{parameters:src}" class="lightbox" title="file:{parameters:data-htmlarea-file-uid}:title" data-lightbox-caption="{file:120:title}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group"> | </a>
}
}
有问题的部分在这里:title="file:{parameters:data-htmlarea-file-uid}:title"
我已经尝试使用 {file:{parameters:data-htmlarea-file-uid}:title},但它仍然无法正常工作并在渲染中显示错误元素:
如何逃避这个“双重变量”?或者也许有另一种解决方案可以让它发挥作用?
============================================= =====
这是我的问题的完整解决方案,感谢 @Jo Hasenau
lib.parseFunc_RTE {
tags.img = COA
tags.img {
10 = TEXT
10 {
dataWrap = file:{parameters:data-htmlarea-file-uid}:title
wrap3 = <a href="{parameters:src}" class="lightbox" title="{|}"
insertData = 1
}
20 = TEXT
20 {
dataWrap = file:{parameters:data-htmlarea-file-uid}:description
wrap3 = data-lightbox-caption="{|}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group">
insertData = 1
}
30 = TEXT
30 {
current = 1
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
wrap = |</a>
}
}
}
您可以多次使用dataWrap
and/or insertData
,方法是使用stdWrap
函数的官方命令或挤入[=13 的另一个“级别” =] 功能与 stdWrap.functionName
在这种情况下,函数的顺序与 COA
相结合,将原始包装分成更小的块,并由另一个包装提供一些额外的大括号。
lib.parseFunc_RTE {
tags.img = COA
tags.img {
10 = TEXT
10 {
preUserFunc = Netresearch\RteCKEditorImage\Controller\ImageRenderingController->renderImageAttributes
dataWrap = file:{parameters:data-htmlarea-file-uid}:title
wrap3 = <a href="{parameters:src}" class="lightbox" title="{|}" data-lightbox-caption="{file:120:title}" data-lightbox-width="{parameters:width}" data-lightbox-height="{parameters:height}" rel="lightbox-group">
insertData=1
}
20 = TEXT
20.current = 1
20.wrap = |</a>
}
}
preUserFunc
将首先执行,然后第一个 dataWrap
将创建实际的变量名,然后是 wrap3
以获得必要的花括号,最后由 insertData
将所有其他变量与生成的变量一起填写。
这段代码中的顺序只是为了更好的可读性,但 stdWrap 中函数调用的实际顺序在 PHP 代码中已经预定义,并且完全遵循官方文档中函数描述的顺序:https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Stdwrap.html