Как применить файл шаблона (tpl) для тела сообщения электронной почты - PullRequest
3 голосов
/ 13 октября 2011

У меня есть эта функция почты в моем пользовательском модуле

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.

Любое предложение будет с благодарностью.

Ответы [ 2 ]

6 голосов
/ 13 октября 2011

Вам нужно настроить вызов темы для него

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(), что он делает.

Теперь вы можете просто создать your-template-file.tpl.php в папке templates/ модуля (выЯ должен сделать это), и вы можете использовать переменную $message в своем шаблоне, чтобы делать все, что вы хотите.Имя переменной соответствует имени аргумента вашей темы.

После того, как ваш модуль настроен правильно, обязательно очистите кеш.Я не могу сказать вам, сколько времени мне потребовалось, чтобы понять, что я впервые начал работать с Drupal, и сколько времени я потратил впустую, пытаясь исправить несуществующие ошибки.

0 голосов
/ 13 октября 2011

Модуль HTML Mail делает именно это: -)

...