如何在 TYPO3 9.5 中使用 f:link.typolink viewhelper 将链接标题设置为 Linkte



我使用字段"header_link"的链接构建了一个自定义内容元素。

如何将该链接的标题设置为链接文本?

在流体模板中,我以这种方式使用 link.typolink viewhelper:

<f:link.typolink parameter="{data.header_link}" class="btn btn-primary" />

这导致

<a href="/page" title="link title" class="btn btn-primary">Page Title</a>

如何将链接标题设置为链接文本而不是页面标题?

自 TYPO3 10.3 以来可以这样完成

<f:link.typolink parameter="{data.header_link}" parts-as="parts">
{parts.title}
</f:link.typolink>

在更新日志文档中阅读更多内容

这些是您可以使用的所有部件

<f:link.typolink parameter="123 _top news title" parts-as="parts">
{parts.url}
{parts.target}
{parts.class}
{parts.title}
{parts.additionalParams}
</f:link.typolink>
<f:link.typolink parameter="{data.header_link}" title="Title Attribute">
Custom Link Text
</f:link.typolink>

结果在

<a href="/page" title="Title Attribute">
Custom Link Text
</a>

参考

  • https://fluidtypo3.org/viewhelpers/fluid/master/Link/TypolinkViewHelper.html

更新 1

(根据其他评论更新(

组合参数字符串t3://page?uid=123 - - "title"(parametertargetclasstitleadditional parameters(应该只对生成锚标记有影响。没有现成的方法可以将title部件用作流体模板中的变量。

为此,必须创建自定义的ViewHelper,例如

class ParameterPartViewHelper extends AbstractViewHelper
{
public function initializeArguments()
{
$this->registerArgument('part', 'string', 'Parameter part to be extracted', true);
} 
public function render(): string
{
$part = $this->arguments['part'] ?? null;
$typoLinkCodec = GeneralUtility::makeInstance(TypoLinkCodecService::class);
return $typoLinkCodes->decode($this->renderChildren())[$part] ?? '';
}

可以在流体中使用,例如像这样

<f:link.typolink parameter="{data.header_link}" title="Title Attribute">
{data.header_link -> my:parameterPart(part:'title')}
</f:link.typolink>

最新更新