在 direct_mail 个简报中使用 tt_address 个字段
Use tt_address fields in direct_mail newsletter
我正在使用 TYPO3 6.2.11
、tt_address 2.3.5
和 direct_mail 4.0.1
,并从内部 TYPO3 页面向我发送了一些测试新闻稿。一切正常。
现在,我想从 tt_address
-table 发送一些数据字段,例如 name
或 title
。
我将在我的页面内容中使用的 tt_address-MARKER 的名称是什么?
我还在 direct_mail-Extension 处将以下内容添加到 [basic.addRecipFields]
:
name,first_name,last_name,email,description,title
但是没有任何反应。我无法在我的 direct_mail 时事通讯中使用 tt_address-fields。希望有人能帮帮我,谢谢。
另一个机会是使用 fe_user
-data 作为我的时事通讯 (felogin)。我如何在我的模板中使用 password
或 username
之类的 felogin 字段?
您需要在字段前加上 USER_
前缀,并将标记包裹在 ###
中。所以例如如果您想使用电子邮件地址,请填写 ###USER_email###
。您可以在 Direct Mail documentation.
中找到所有可能性
关于发送密码的注意事项:这将是一个巨大的安全风险,但无论如何这是不可能的,因为 fe_users 的密码至少存储在数据库中(现在也加密)。但是您可以使用 ###SYS_AUTHCODE###
标记生成一个验证码,您可以在 "edit profile" 扩展中使用它来让用户更新他的订阅。
如果您需要来自其他来源的字段或您正在动态计算的数据,您还可以创建自己的扩展并实施直邮 mailMarkersHook。
ext_localconf.php:
// Direct Mail personalization hook
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/direct_mail']['res/scripts/class.dmailer.php']['mailMarkersHook']['userunilunewsletterrendering'] =
'My\Extension\Hook\DirectMail->mailMarkersHook';
EXT:extension/Classes/Hook/DirectMail.php:
<?php
namespace My\Extension\Hook;
class DirectMail {
public function mailMarkersHook($params, \DirectMailTeam\DirectMail\Dmailer $dmailer) {
$params['markers']['###USER_SALUTATION###'] = $this->getPersonalizedSalutation($params['row']);
return $params;
}
/**
* @param $row
* @return string
*/
protected function getPersonalizedSalutation($row) {
$personalizedSalutation = 'Dear Sir or Madam';
if (!empty($row['last_name']) && !empty($row['gender'])) {
if ($row['gender'] === 'm') {
$personalizedSalutation = 'Dear Mr. ' . $row['last_name'];
} elseif ($row['gender'] === 'f') {
$personalizedSalutation = 'Dear Ms. ' . $row['last_name'];
}
}
return $personalizedSalutation;
}
}
我正在使用 TYPO3 6.2.11
、tt_address 2.3.5
和 direct_mail 4.0.1
,并从内部 TYPO3 页面向我发送了一些测试新闻稿。一切正常。
现在,我想从 tt_address
-table 发送一些数据字段,例如 name
或 title
。
我将在我的页面内容中使用的 tt_address-MARKER 的名称是什么?
我还在 direct_mail-Extension 处将以下内容添加到 [basic.addRecipFields]
:
name,first_name,last_name,email,description,title
但是没有任何反应。我无法在我的 direct_mail 时事通讯中使用 tt_address-fields。希望有人能帮帮我,谢谢。
另一个机会是使用 fe_user
-data 作为我的时事通讯 (felogin)。我如何在我的模板中使用 password
或 username
之类的 felogin 字段?
您需要在字段前加上 USER_
前缀,并将标记包裹在 ###
中。所以例如如果您想使用电子邮件地址,请填写 ###USER_email###
。您可以在 Direct Mail documentation.
关于发送密码的注意事项:这将是一个巨大的安全风险,但无论如何这是不可能的,因为 fe_users 的密码至少存储在数据库中(现在也加密)。但是您可以使用 ###SYS_AUTHCODE###
标记生成一个验证码,您可以在 "edit profile" 扩展中使用它来让用户更新他的订阅。
如果您需要来自其他来源的字段或您正在动态计算的数据,您还可以创建自己的扩展并实施直邮 mailMarkersHook。
ext_localconf.php:
// Direct Mail personalization hook
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/direct_mail']['res/scripts/class.dmailer.php']['mailMarkersHook']['userunilunewsletterrendering'] =
'My\Extension\Hook\DirectMail->mailMarkersHook';
EXT:extension/Classes/Hook/DirectMail.php:
<?php
namespace My\Extension\Hook;
class DirectMail {
public function mailMarkersHook($params, \DirectMailTeam\DirectMail\Dmailer $dmailer) {
$params['markers']['###USER_SALUTATION###'] = $this->getPersonalizedSalutation($params['row']);
return $params;
}
/**
* @param $row
* @return string
*/
protected function getPersonalizedSalutation($row) {
$personalizedSalutation = 'Dear Sir or Madam';
if (!empty($row['last_name']) && !empty($row['gender'])) {
if ($row['gender'] === 'm') {
$personalizedSalutation = 'Dear Mr. ' . $row['last_name'];
} elseif ($row['gender'] === 'f') {
$personalizedSalutation = 'Dear Ms. ' . $row['last_name'];
}
}
return $personalizedSalutation;
}
}