如何应用电子邮件正文的模板 (tpl) 文件

发布于 2024-12-09 19:54:58 字数 886 浏览 0 评论 0原文

我的自定义模块中有此邮件功能

function mymodule_mail($key, &$message, $params) {
  switch ($key) {
    case 'notification':
      $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
      $message['subject'] = $params['subject'];
      $message['body'] = t('<table style="border:2px solid black;"><tr><td>MESSAGE BODY </td><td><b>'.$params['msg'].'</b></td></tr></table>');
      break;     
  }
}

在这里您可以清楚地看到对于消息正文我使用了一些 html 标签。

下面的代码调用邮件功能,该功能是在我的块中编写的。

$params = array(
      'subject' =>  'email subject',
      'msg' => 'message body',
);
drupal_mail('mymodule', 'notification', 'email address', language_default(), $params);

我想知道,是否有任何简单的方法可以为我的消息正文应用模板(.tpl.php)文件,以便我可以将所有 css 样式放入该 tpl 文件中。

任何建议将不胜感激。

I've this mail function in my custom module

function mymodule_mail($key, &$message, $params) {
  switch ($key) {
    case 'notification':
      $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
      $message['subject'] = $params['subject'];
      $message['body'] = t('<table style="border:2px solid black;"><tr><td>MESSAGE BODY </td><td><b>'.$params['msg'].'</b></td></tr></table>');
      break;     
  }
}

Here you can clearly see that for message body i'm using some html tags.

Below code invoke the mail function, which is written in my block.

$params = array(
      'subject' =>  'email subject',
      'msg' => 'message body',
);
drupal_mail('mymodule', 'notification', 'email address', language_default(), $params);

I want to know, is there any easy way to apply a template (.tpl.php) file for my message body so that i can put my all css styling within that tpl file.

Any suggestion would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鱼窥荷 2024-12-16 19:54:59

HTML 邮件模块 就是这样做的:-)

The HTML Mail module does just that :-)

三生路 2024-12-16 19:54:58

您需要为其设置一个主题调用

function mymodule_theme() {
    $path = drupal_get_path('module', 'mymodule') . '/templates';
    return array(
        'mymodule_mail_template' => array(
            'template' => 'your-template-file', //note that there isn't an extension on here, it assumes .tpl.php
            'arguments' => array('message' => ''), //the '' is a default value
            'path' => $path,
        ),
    );
}

现在您已经有了它,您可以更改分配正文的方式

$message['body'] = theme('mymodule_mail_template', array('message' => $params['msg']);

关键message需要与您在中提供的参数相匹配mymodule_theme(),它确实做到了。

现在,您只需在模块的 templates/ 文件夹中创建 your-template-file.tpl.php (您必须这样做),并且可以使用变量 $message 在你的模板中做任何你想做的事情。变量名称与您的主题参数名称相匹配。

正确设置模块后,请确保刷新缓存。我无法告诉你我第一次开始使用 Drupal 花了多长时间才意识到,以及我浪费了多少时间试图修复不存在的错误。

You'll need to set up a theme call for it

function mymodule_theme() {
    $path = drupal_get_path('module', 'mymodule') . '/templates';
    return array(
        'mymodule_mail_template' => array(
            'template' => 'your-template-file', //note that there isn't an extension on here, it assumes .tpl.php
            'arguments' => array('message' => ''), //the '' is a default value
            'path' => $path,
        ),
    );
}

Now that you have that, you can change the way you're assigning the body

$message['body'] = theme('mymodule_mail_template', array('message' => $params['msg']);

The key message needs to match the argument you supplied in mymodule_theme(), which it does.

Now you can just create your-template-file.tpl.php in the module's templates/ folder (you'll have to make that) and you can use the variable $message in your template to do whatever you'd like. The variable name matches your theme argument name.

After your module is set up properly, make sure to flush the cache. I can't tell you how long it took me to realize that the first time I started working with Drupal, and how much time I wasted trying to fix non-existent bugs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文