如何在 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