2010-06-13 11 views
5

używam moduł autorespondera Drupal - i chcę użyć tokeny więc mogę zawierać nazwę użytkownika, który wniósł w ramach e-maili wysyłanych ...Drupal Autoresponder z Reklamowe Module

Czy ktoś wie jak to może być osiągnąć?

Dzięki za pomoc.

Shane

Odpowiedz

4

Dzięki za odpowiedź - że był bardzo blisko ....

Moduł autoresponder UID nie jest związany z UID użytkownika tak Twój kod został przynosząc inną nazwą użytkownika ... Więc zmieniłem go znaleźć zamiast tego użytkownik z adresu e-mail.

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

Tak, rzeczywiście, ja przedstawić go jako patch do mojego inny wniosek, i mam nadzieję, że może to pomóc komuś innemu.

Wiele Dzięki

Shane

+1

+1 do obserwacji - nie patrzeć na schemacie i po prostu przyjął „standard” Wykorzystanie UID:/ –

+0

Na pytanie/uwaga, chociaż: są anonimowi użytkownicy dozwolone również subskrybować? Byłby to dobry powód oddzielnej tabeli "autoresponder_users", a to oznaczałoby, że musiałbyś dodać czek do "wyszukiwania użytkownika przez pocztę" na wypadek, gdyby nie znaleziono odpowiedniego użytkownika Drupala. ("user_load()" zwróci FAŁSZ w takim przypadku.) –

+0

Cześć Henrik, Tak, doceniam schemat - wskazałeś mi jednak właściwy kierunek :-) Doceniam twoją opinię na temat anonimowych użytkowników - ale ja "Myślałem, że tak, więc tylko dla użytkowników posiadających konto, dobre myślenie! Dzięki za pomoc. Shane – Shane

3

EDIT po oddzielnym odpowiedzi przez OP:, co następuje w oparciu o założenie, że $u->uid odnosi się do „standardowej” Drupal identyfikator użytkownika, który nie jest poprawny! Więc trzeba znaleźć odpowiedni Drupal użytkownika za pomocą innych środków, jeśli to możliwe - patrz the OPs answer for details w tej sprawie ...


nie testowałem, ale patrząc na kodzie źródłowym autoresponder, powinieneś być w stanie dodać (użytkownika) token wymiany w funkcji autoresponder_mail() przez wstawienie następującego kod przed wytwarzania korpusu tekstowym (przed linią 392 na uwalnianie 6.x-1,0-alfa1):

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

Alternatywnie, możesz zrobić to jednym wywołaniem funkcji wcześniej w autoresponder_cron(), wewnątrz pętli while ($message db_fetch_object($result_messages)), przed wywołaniem if (autoresponder_mail($u, $message)) (linia 366), przy użyciu $ wiadomość zamiast $ 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); 

W przypadku, gdy działa, to może chcieć przesłać go jako plaster to the already existing feature request for this. (Domyślam się, że jesteś "keyzo"/"shane", który już tam odpowiedział;)

Jeśli to działa i masz zamiar stworzyć łatkę, byłoby to "standardową" praktyką, aby dodać podpowiedź na temat możliwej wymiany tokena do formularza (ów) definicji wiadomości w autoresponder_mail_edit_create_form().

Powiązane problemy