根据下拉列表中的选择将 TYPO3 EXT:powermail 邮件发送给不同的收件人
Send TYPO3 EXT:powermail mail to different receivers depending on selection in a dropdown
我经常需要根据表单中选择字段的选择将 powermail-form 发送给不同的接收者。
我正在使用 TYPO3 7.6.x 和 Powermail 3.3.0
如何做到这一点?
在 EXT:powermail 的 slackchannel 中@alex-kellner 的帮助下,我找到了一个非常简单的解决方案:
基本上需要 2 个步骤:
步骤1
select 字段中选项的值。
您需要在 select 字段中为您的选项添加值。这可以通过将管道 |
添加到您的选项并简单地添加值
来完成
MyRecieverEmail 1 | 1
MyRecieverEmail 2 | 2
MyRecieverEmail 3 | 3
除此之外,您还需要知道您的字段的标记/变量/个别字段名。您可以在字段的 extended
选项卡中找到该名称。
如果需要,您还可以为该字段指定一个 "own" 变量名。该变量用 {}
包装,但您不会在步骤 2
中使用这些
步骤 2
现在您需要在设置字段中添加一些 TS。
背景信息:基本上这会更改表单的接收者:
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com
现在您需要检查在表单中选择了哪个选项。这是通过全局条件完成的:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
其中 yourVariableFieldname
是字段中 extended
选项卡中的单个字段名称,1
是第一个选项的值 (MyRecieverEmail 1)
通过使用此 TS,如果在表单中选择第一个选项 MyRecieverEmail 1
,表单将发送到您的@email.com:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com
[global]
您现在可以根据需要添加任意多的条件。完整的例子是:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourfirst@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yoursecond@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 3]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourthird@email.com
[global]
请注意,这将负责在您的 TYPO3-Install 中考虑到此 TS 的每个字段名称为 {yourVariableFieldname} 的字段。
如果您以多种形式完全像这样使用此字段,这将很有用。
如果您不想由它负责,您有 2 个选项可以避免这种情况:
仅将 TS 放置在表单所在的页面上。
您可以将此添加到您的全局条件中:
&& [globalString = GP:tx_powermail_pi1|mail|form = 123]
其中 123
是表单的 ID。
这看起来像这样:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2] && [globalString = GP:tx_powermail_pi1|mail|form = 123]
从 9.5 开始是这样的:
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]
应该有效
这对我有用:
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]
plugin.tx_powermail.settings.setup {
receiver.overwrite {
email.value = MYEMAIL
email = TEXT
}
}
[END]
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 2 ]
plugin.tx_powermail.settings.setup {
receiver.overwrite {
email.value = MYEMAIL2
email = TEXT
}
}
[END]
我经常需要根据表单中选择字段的选择将 powermail-form 发送给不同的接收者。 我正在使用 TYPO3 7.6.x 和 Powermail 3.3.0 如何做到这一点?
在 EXT:powermail 的 slackchannel 中@alex-kellner 的帮助下,我找到了一个非常简单的解决方案:
基本上需要 2 个步骤:
步骤1
select 字段中选项的值。
您需要在 select 字段中为您的选项添加值。这可以通过将管道 |
添加到您的选项并简单地添加值
MyRecieverEmail 1 | 1
MyRecieverEmail 2 | 2
MyRecieverEmail 3 | 3
除此之外,您还需要知道您的字段的标记/变量/个别字段名。您可以在字段的 extended
选项卡中找到该名称。
如果需要,您还可以为该字段指定一个 "own" 变量名。该变量用 {}
包装,但您不会在步骤 2
步骤 2
现在您需要在设置字段中添加一些 TS。
背景信息:基本上这会更改表单的接收者:
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com
现在您需要检查在表单中选择了哪个选项。这是通过全局条件完成的:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
其中 yourVariableFieldname
是字段中 extended
选项卡中的单个字段名称,1
是第一个选项的值 (MyRecieverEmail 1)
通过使用此 TS,如果在表单中选择第一个选项 MyRecieverEmail 1
,表单将发送到您的@email.com:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com
[global]
您现在可以根据需要添加任意多的条件。完整的例子是:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourfirst@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yoursecond@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 3]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourthird@email.com
[global]
请注意,这将负责在您的 TYPO3-Install 中考虑到此 TS 的每个字段名称为 {yourVariableFieldname} 的字段。 如果您以多种形式完全像这样使用此字段,这将很有用。 如果您不想由它负责,您有 2 个选项可以避免这种情况:
仅将 TS 放置在表单所在的页面上。
您可以将此添加到您的全局条件中:
&& [globalString = GP:tx_powermail_pi1|mail|form = 123]
其中 123
是表单的 ID。
这看起来像这样:
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2] && [globalString = GP:tx_powermail_pi1|mail|form = 123]
从 9.5 开始是这样的:
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]
应该有效
这对我有用:
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]
plugin.tx_powermail.settings.setup {
receiver.overwrite {
email.value = MYEMAIL
email = TEXT
}
}
[END]
[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 2 ]
plugin.tx_powermail.settings.setup {
receiver.overwrite {
email.value = MYEMAIL2
email = TEXT
}
}
[END]