大家好
之前遇到一個需求,是需要修改joomla的會員信件內容,因為原生的信件內容太過於簡單,或是有客製需求等等...。
 
那麼,要如何修改預設會員功能信件呢?
我們先了解一下joomla3是如何產生會員信件內容的,例如:註冊,啟用,忘記密碼...等等功能。
 
基本上就是用PHP 的 sprintf() 函數,然後配合"信件翻譯字串"
例如檔案:
 
Joomla3_1\language\語系代碼\語系代碼.com_users.ini
 
裡面有:
 
COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY="%s 您好:\n 感謝您於 %s 網站註冊。您的帳號已經建立且需啟動後才能使用。\n您可點選下列連結或是複製 - 貼上於瀏覽器網址列:\n%s\n啟動帳號後您可用以下資料登入%s 網站:\n帳號:%s\n密碼:%s"
也就是信件內容是經由翻譯檔案 加上 sprintf() 產生的
所以要注意的是 "參數順序"
例如:第一個是 %s 代表的是"會員名稱"
 
那如果我要修改信件內容至HTML格式
其實有些要修改
必須將預設的PHPmailer (joomla3都是用PHPmailer 寄信)
設定改成預設是 html
 
$mail->isHTML(true);
那要如何設定呢?
兩個方向
 
1.自己新增一個外掛,在會員寄信動作之前先呼叫
 
$mailer = JFactory::getMailer();
$mailer->isHTML(true);
JFactory::$mailer = $mailer;



2.直接修改joomla 原生的呼叫
libraries/joomla/factory.php
裡面的 createMailer() 修改預設設定
 
好!
假設我們已經解決html格式問題
那我們如何修改模板呢?
要注意的就是
如果有雙引號,記得改成 "_QQ_" 
例如以下這樣
 
COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY="<span style="_QQ_"color:red"_QQ_">%s 您好 </span> :<br> 感謝您於 %s 網站註冊。您的帳號已經建立且需啟動後才能使用。<br> 您可點選下列連結或是複製 - 貼上於瀏覽器網址列:<br> %s <br> 啟動帳號後您可用以下資料登入%s 網站:<br> 帳號:%s <br> 密碼:%s"


然後千萬要記得測試
因為翻譯這邊使用HTML格式很容易有錯誤發生,如果有錯誤,信件內容就會是空的,空的信件就會無法送出,這點要注意。
 
差不多是這樣子
給大家參考囉,感恩。