2010-06-13 20 views
5

Tôi đang sử dụng mô-đun trả lời tự động Drupal - và tôi muốn sử dụng thẻ để tôi có thể bao gồm tên người dùng đã đăng ký trong các email được gửi đi ...Drupal Autoresponder với Mô-đun Mã

Có ai biết làm thế nào điều này có thể đạt được?

Cảm ơn bạn đã được trợ giúp.

Shane

Trả lời

4

Cảm ơn cho điều đó - câu trả lời của bạn là rất gần ....

Các UID mô-đun trả lời tự động không liên quan đến các UID người dùng để mã của bạn được đưa vào một tên người dùng khác nhau ... Vì vậy, tôi đã thay đổi nó để tìm thay vào đó, người dùng từ địa chỉ email.

// 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); 

Có thực sự, tôi sẽ gửi dưới dạng bản vá cho yêu cầu khác của tôi và hy vọng nó có thể giúp người khác.

Nhiều Cảm ơn

Shane

+1

1 để theo dõi - Tôi không nhìn vào lược đồ và chỉ đảm nhận 'tiêu chuẩn' sử dụng uid:/ –

+0

Về câu hỏi/nhận xét, mặc dù: Có phải người dùng ẩn danh cho phép để đăng ký là tốt? Đây sẽ là một lý do chính đáng cho bảng 'autoresponder_users' riêng biệt và điều đó có nghĩa là bạn phải thêm séc vào 'tra cứu người dùng bằng thư' trong trường hợp không tìm thấy người dùng Drupal tương ứng. ('user_load()' sẽ trả về FALSE trong trường hợp đó.) –

+0

Xin chào Henrik, Rất biết ơn về lược đồ - bạn đã chỉ cho tôi đúng hướng mặc dù :-) Và tôi coi trọng quan điểm của bạn về người dùng ẩn danh - nhưng tôi đã nghĩ rằng, vì vậy nó chỉ dành cho người dùng có một tài khoản, suy nghĩ tốt mặc dù! Cảm ơn sự giúp đỡ của bạn. Shane – Shane

3

EDIT sau khi câu trả lời riêng của OP: Sau đây là dựa trên giả định rằng các $u->uid đề cập đến 'tiêu chuẩn' Drupal user id, đó là không đúng! Vì vậy, người ta phải tìm ra người sử dụng Drupal tương ứng bằng các phương tiện khác, nếu có thể - xem the OPs answer for details về vấn đề này ...


tôi đã không kiểm tra nó, nhưng nhìn vào mã nguồn trả lời tự động, bạn sẽ có thể thêm (người dùng) thay thế thẻ trong autoresponder_mail() chức năng bằng cách chèn đoạn code sau đây trước khi chuẩn bị của cơ thể văn bản đơn giản (trước dòng 392 trong phiên bản 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); 

Ngoài ra, bạn có thể thực hiện một cuộc gọi hàm trước đó trong autoresponder_cron(), trong while ($message db_fetch_object($result_messages)) vòng lặp, trước khi if (autoresponder_mail($u, $message)) gọi (dòng 366), sử dụng $ message thay vì $ 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); 

Trong trường hợp công trình này, bạn có thể muốn gửi nó như một bản vá to the already existing feature request for this. (Tôi đoán bạn là 'keyzo'/'shane' đã trả lời ở đó;)

Nếu nó hoạt động và bạn sẽ tạo một bản vá, thực hành 'chuẩn' để thêm gợi ý về thay thế mã thông báo có thể tới (các) định dạng thông báo trong autoresponder_mail_edit_create_form().