powermailセットアップの送信ページにリンクを配置しようとしています。
これは簡単な作業だと思うかもしれませんが、我慢してください。
私のPowermailフォームには、ページIDとページタイトルが事前に入力された2つの非表示フィールドがあります。
これらは、メールを送信した後、後で戻りたいページに属しています。これらの値をフォームに入力することで、プロセスで必要なときにいつでもアクセスできるようにしたいと思いました。
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 ViewHelpersを使用できるようになったと主張していることを考えると、すばらしいですが、次のように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をロールできるかもしれないと思いました。
しかし、カスタマイズしたPowermailテンプレートで使用できるように、そのViewHelperをシステムに通知するにはどうすればよいですか?
私は以前、エクステンション内でのみFluidを使用しました。Fluidadminフォルダー階層でViewHelperを使用したい場合、Fluidが名前で正しいViewHelperを検索する方法は明らかでした。
4.アプローチ
では、 RTEで使用して通常のリンクを使用しないのはなぜですか?<a href="http://www.page.com/?id={backto}">{backtotext}</a>
TYPO3はそれが違法な参照であることを認識し、すぐにリンクを次のように変えます:
そして結果の出力は単にリンクではありません。
だから、それもうまくいきません。
OK、ターゲットを<a href="http://www.page.com?id={backto}">{backtotext}</a>
(スラッシュを削除)に変更します。これで、URLは内部として認識されなくなり、。でマークされdata-htmlarea-external="1"
ます。これにより、私のリンクは実際に完全に評価され、レンダリングされます(イェーイ)。
ただし、現在は外部リンクのように扱われ、RealURLは影響を与えなくなり、外部リンクの_target
動作の影響を受けます。
なぜこれがそんなに難しいのですか?何がわからないの?