我正在尝试在我的 powermail 设置的提交页面上放置一个链接。
你会认为这是一项简单的任务,但请耐心等待。
我的 Powermail 表单有 2 个隐藏字段,其中预先填写了页面 ID 和页面标题。
这些属于我发送邮件后想要返回的页面。通过将这些值放入表单中,我希望在过程中需要它们时可以访问它们。
我从 TypoScript 中预填充这些隐藏字段,如下所示:
plugin.tx_powermail {
settings {
setup {
prefill {
// Hidden "back to" page ID. This is the page you may want to return to after sending a mail.
backto = TEXT
backto.data = GP:backTo
backto.if.isTrue.data = GP:backTo
backtotext = TEXT
backtotext.noTrimWrap = |Back to ||
backtotext.data = GP:title
backtotext.if.isTrue.data = GP:title
backtotext.htmlSpecialChars = 1
}
}
}
}
1.方法
鉴于 Powermail 声称您现在可以在您的内容部分中使用 Fluid ViewHelper,不过,很好,让我们使用 PageViewHelper,如下所示:
{f:link.page(pageUid:'{backto}')}
但是我的链接文本去哪里了?更多内联符号来救援!
{backtotext -> f:link.page(pageUid:'{backto}')}
渲染结果
似乎不完全支持内联表示法。我认为我很聪明,只需使用:
{f:link.page(pageUid:'{backto}')}{backtotext}
但这会使<a>
标签保持打开状态,这会产生非常不良的影响...
所以 - 我没有链接!
2.方法
所以我想我会简单地在 TypoScript 中构建链接并将其呈现在页面上
{f:cObject(typoscriptObjectPath:'lib.myBackLink')}
但是我看不到任何从 TS 中的(已发送)Powermail 表单访问变量的方法。所以我无权访问页面 ID 或标题。
3.方法
所以我想,如果默认的 PageViewHelper 只想将其子项呈现为其内容,也许我可以滚动自己的 ViewHelper 接受内容作为参数!
但是如何让系统知道 ViewHelper 以便我可以在自定义的 Powermail 模板中使用它?
我以前只在我的扩展中使用过 Fluid。很明显,Fluid 如何按名称查找正确的 ViewHelper,如果我想在我的文件管理文件夹层次结构中使用 ViewHelper,该怎么办?
4. 方法
那么,为什么不通过在 RTE 中使用来使用普通链接呢?<a href="http://www.page.com/?id={backto}">{backtotext}</a>
TYPO3 意识到这是一个非法引用,并迅速将链接转换为:
结果输出将根本不是链接。
所以,这也行不通。
好的,所以我将目标更改为<a href="http://www.page.com?id={backto}">{backtotext}</a>
(删除斜线)。现在该 URL 不再被识别为内部 URL,并标有data-htmlarea-external="1"
。这导致我的链接实际上被完全评估和呈现(耶)。
但它现在被视为外部链接,RealURL 不再影响它,它受外部链接_target
行为的影响。
为什么这么难?我不明白什么?