TYPO3 - f:link.typolink 与 additionalAttributes 和条件?

TYPO3 - f:link.typolink with additionalAttributes and a condition?

我正在寻找解决方案,如何在 additionalAttributes 中包含查询?

静态:

<f:link.typolink parameter="{field.referenceLink}" title="{field.referenceTitel} - {field.referenceText}" additionalAttributes="{rel:'nofollow'}">
    Link
</f:link.typolink>

条件:

<f:variable name="nofollow"><f:if condition="{field.referenceLinkNofollow}"><f:then>{rel:'nofollow'}</f:then><f:else>{rel:'dofollow'}</f:else></f:if></f:variable>

下一个测试:

<f:section name="nofollow">
    <f:spaceless><f:if condition="{field.referenceLinkNofollow}"><f:then>{rel:'nofollow'}</f:then><f:else>{rel:'dofollow'}</f:else></f:if></f:spaceless>
</f:section>

不要这样工作:

<f:link.typolink parameter="{field.referenceLink}" title="{field.referenceTitel} - {field.referenceText}" additionalAttributes="{nofollow}">
    Link
</f:link.typolink>

错误:
参数“additionalAttributes”注册为“数组”类型,但在视图助手“TYPO3\CMS\Fluid\ViewHelpers\Link\TypolinkViewHelper”中为“字符串”类型。

一个选项可以是:

<f:variable name="nofollow" value="{f:if(condition: '{data.no_follow}', then: 'nofollow', else: '')}" />
<f:link.typolink parameter="https://example.com" title="Title" additionalAttributes="{rel: '{nofollow}'}">
  Link
<f:link.typolink>

假设变量 {data.no_follow} 表示后端用户可以在页面属性中更改的设置(“关注此页面”)。

第一行将 Fluid 模板中的变量 nofollow 设置为值 'nofollow''' (empty),取决于页面 属性 设置。我使用 If-ViewHelper 的内联符号来实现此目的。然后在 LinkTypolink-ViewHelper 中使用变量 {nofollow} 作为 additionalAttributes.

rel= 属性的值

由于删除了空值,因此 rel= 属性仅在有值时显示。

如果 {field.referenceLink} 和 {field.referenceLinkNofollow} 包含所需数据,这也应该有效。

    <f:link.typolink parameter="{field.referenceLink}"
                     additionalAttributes="{f:if(condition: '{field.referenceLinkNofollow}', then: '{rel:'nofollow'}')}"
    >Linktext</f:link.typolink>

谢谢,成功了!

<f:variable name="nofollow" value="{f:if(condition: '{field.referenceLinkNofollow}', then: 'nofollow', else: '')}" />

流体:

<f:link.typolink parameter="{field.referenceLink}" title="{field.referenceTitel}" additionalAttributes="{rel: '{nofollow}'}">