Автоответчик Drupal с модулем Token - PullRequest
5 голосов
/ 13 июня 2010

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

Кто-нибудь знает, как этого можно достичь?

Спасибо за любую помощь.

Шейн

Ответы [ 2 ]

4 голосов
/ 14 июня 2010

Спасибо за это - ваш ответ был очень близок ....

UID модуля автоответчика не связан с UID пользователя, поэтому ваш код вводил другое имя пользователя ... Поэтому я изменил его, чтобы вместо этого найти пользователя по адресу электронной почты.

// load the full user object
$user = user_load(array('mail' => $u->mail));
// Replace user tokens in mail body
$mail->body = token_replace($mail->body, 'user', $user);

Да, действительно, я отправлю его как патч для моего другого запроса, и, надеюсь, он может помочь кому-то еще.

Большое спасибо

Шейн

3 голосов
/ 13 июня 2010

РЕДАКТИРОВАТЬ после отдельного ответа от OP: Следующее основано на предположении, что $u->uid относится к «стандартному» идентификатору пользователя Drupal, , что неверно! Итакнужно найти соответствующего пользователя Drupal другими способами, если это возможно - см. подробности ответа OPs об этом ...


Я не проверял его, но смотрю наисходный код автоответчика, вы должны иметь возможность добавить (пользовательскую) замену токена в функцию autoresponder_mail(), вставив следующий код перед подготовкой тела простого текста (перед строкой 392 в выпуске 6.x-1.0-alpha1):

// load the full user object
$user = user_load($u->uid);
// Replace user tokens in mail body
$mail->body = token_replace($mail->body, 'user', $user);

В качестве альтернативы , вы можете сделать это одним вызовом функции ранее в autoresponder_cron(), в цикле while ($message db_fetch_object($result_messages)), перед вызовом if (autoresponder_mail($u, $message)) (строка 366), используя$ message вместо $ mail:

// load the full user object
$user = user_load($u->uid);
// Replace user tokens in mail body
$message->body = token_replace($message->body, 'user', $user);

В случае, если это работает, вы можете отправить его в виде патча к уже существующему запросу функции для этого .(Я полагаю, что вы - 'keyzo' / 'shane', который уже ответил там;)

Если это сработает и вы собираетесь создать патч, было бы "стандартной" практикой добавить подсказку о возможномзамена токена в формах определения сообщений в autoresponder_mail_edit_create_form().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...