我如何自动获取文章的作者电子邮件?
场景是这样的:您在文章内发布了一个表单,提交表单时需要向作者发送电子邮件。
有两种实现方法,具体取决于您的用例场景:
- 将电子邮件存储在字段中以备将来参考
- 如果您不需要存储电子邮件地址,请在发送过程中获取它
方法1:存储电子邮件
- 您将需要在表单中添加一个隐藏字段。假设它将被命名为authorEmail
- 在相关字段的“ 默认值”区域中,添加以下代码:
- 我们将需要将提取的电子邮件地址添加到“用户”或“管理员”电子邮件配置区域的收件人列表中。只需转到用户或管理员电子邮件区域,然后在TO区域中输入字段占位符即可(例如):{authorEmail:value}
// <code>
//获取数据库连接。
$ db = JFactory :: getDbo ();
//从URL获取当前的文章ID。
$ articleId = JRequest :: getInt ('id' );
//设置查询。
$ db- > setQuery (“从#__content WHERE`id` ='”中选择SELECT created_by 。$ db- > escape ($ articleId )。“'” );
$ createdBy = $ db- > loadResult ();
if ($ createdBy ) {
//根据created_by列值获取用户。
$ user = JFactory :: getUser ($ createdBy );
//返回电子邮件地址。
return $ user- > get ('email' );
}
// </ code>
方法2:动态调整收件人
如果您不想存储作者电子邮件,则此方法很有用。该脚本需要放置在“ PHP电子邮件脚本”选项卡中,具体取决于要使用的电子邮件类型,在“ 发送用户电子邮件”之前调用的脚本或“ 发送管理电子邮件”之前调用的脚本中。我们假定将使用管理员电子邮件:
//获取数据库连接。
$ db = JFactory :: getDbo ();
//从URL获取当前的文章ID。
$ articleId = JRequest :: getInt ('id' );
//设置查询。
$ db- > setQuery (“从#__content WHERE`id` ='”中选择SELECT created_by 。$ db- > escape ($ articleId )。“'” );
$ createdBy = $ db- > loadResult ();
if ($ createdBy ) {
//根据created_by列值获取用户。
$ user = JFactory :: getUser ($ createdBy );
//更改收件人。$ adminEmail ['to']包含收件人的电子邮件地址。
$ ADMINEMAIL [ '到' ] = $用户- > 获取('电子邮件' );
}