2012-07-16 54 views
3

我在'管理用戶字段'&添加了一個字段,當一封電子郵件發送給管理員通知他們新的用戶註冊時,我想包括這個新字段。Virtuemart /用戶字段

我已經編寫了一些代碼來從#__vm_user_info中獲取這個新字段,它位於/administrator/components/com_virtuemart/classes/ps_shopper.php中的_sendMail函數中,並且將該變量添加到$ message2中。

ASEND_MSG已被修改爲接受參數,但是當創建用戶時,該字段未包含在發送給管理員的電子郵件中。當我查看錶格時,數據就在那裏。因此,爲了排除故障,我在select語句中硬編碼了一個用戶名,並添加了另一個用戶&爲硬編碼用戶發送了正確的值,而不是剛添加的用戶。我現在認爲這是MySQL的提交問題,因此我在嘗試獲取值之前在代碼中放置了一個sleep(4)...沒有運氣。

任何人都可以爲我閃耀一些光?

LarryR ....

回答

1
  1. 管理員/組件/ com_virtuemart/classses/ps_shopper.php

之前需要 「返回true」 行與函數add()下面的代碼添加:

/* ** * ** * ** * ** * ** * ** * ** * ** * *** ** * ** * ** * ** * ** * ** * ** * **/ $ pwd = $ _POST ['password'];

  $db = JFactory::getDBO(); 

     $query = "SELECT id, name, email, username" 

     . "\n FROM #__users" 

     . "\n ORDER by id DESC LIMIT 1" 

     ; 

     $db->setQuery($query); 

     $rows = $db->loadObjectList(); 

     $namee = $rows[0]->name; 

     $emaill = $rows[0]->email; 

     $usern = $rows[0]->username; 

     $pwd; 

     $lid = $rows[0]->id; 

     $dbv = new ps_DB; 

      echo $query = "SELECT *" 

     . "\n FROM #__{vm}_user_info" 

     . "\n WHERE user_id=$lid" 

     ; 

     $dbv->setQuery($query); 

     $fid = $db->loadObjectList(); 



    $field = $fid[0]->extra_field_1; 

    $user  = clone(JFactory::getUser()); 

    $usersConfig = &JComponentHelper::getParams('com_users'); 

    if ($usersConfig->get('allowUserRegistration') == '0') { 

     JError::raiseError(403, JText::_('Access Forbidden')); 

     return false; 

    } 

    // If user activation is turned on, we need to set the activation information 

    $useractivation = $usersConfig->get('useractivation'); 

    if ($useractivation == '1') 

    { 

     jimport('joomla.user.helper'); 

     $user->set('activation', md5(JUserHelper::genRandomPassword())); 

     $user->set('block', '1'); 

    } 

    $component = 'com_user'; 

    $activation_link = $mosConfig_live_site."/index.php?option=$component&task=activate&activation=".$user->get('activation'); 



    $this->_sendMail($namee , $emaill, $usern, $pwd, $activation_link); 

    /************************************************** Spinz ********************************************/ 

注意:這裏我們爲用戶郵件創建了用戶名和密碼的郵件功能。

  1. 管理員/組件/ com_virtuemart/classses/ps_shopper.php

需要註釋的功能register_save() 「返回true」 行前行:

// Send the registration email 

//$this->_sendMail($name, $email, $username, $password, $activation_link); 

注:這裏生成的郵件函數我們需要評論該郵件函數,並在第一點中在ps_shopper.php的add()函數中創建另一個郵件函數。

  1. administrator/components/com_virtuemart/classses/ps_shopper。php

需要在函數_sendmail()的jos_vm_user_info表中使用以下代碼獲取額外的附加字段(extra_field_1),並將該字段通過郵件發送給用戶。

/****************************************************************/ 


    $db = JFactory::getDBO(); 

     $query = "SELECT id, name, email, username" 

     . "\n FROM #__users" 

     . "\n ORDER by id DESC LIMIT 1" 

     ; 

     $db->setQuery($query); 

     $rows = $db->loadObjectList(); 

     $lid = $rows[0]->id; 

     $dbv = new ps_DB; 

     $query = "SELECT *" 

     . "\n FROM #__{vm}_user_info" 

     . "\n WHERE user_id=$lid" 

     ; 

     $dbv->setQuery($query); 

     $fid = $db->loadObjectList(); 



    $field = $fid[0]->extra_field_1; 



    $subject = sprintf ($VM_LANG->_('SEND_SUB',false), $name, $mosConfig_sitename); 

    $subject = vmHtmlEntityDecode($subject, ENT_QUOTES); 

    if ($mosConfig_useractivation=="1"){ 

     $message = sprintf ($VM_LANG->_('USEND_MSG_ACTIVATE',false), $name, $mosConfig_sitename, $activation_link, $mosConfig_live_site, $username, $pwd, $field); 

    } else { 

     $message = sprintf ($VM_LANG->_('PHPSHOP_USER_SEND_REGISTRATION_DETAILS',false), $name, $mosConfig_sitename, $mosConfig_live_site, $username, $pwd, $field); 

    } 

/* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***/

注:

  1. 初始化變量 「$場」 獲得使用查詢額外添加的字段值。然後額外的字段值由郵件的消息部分分配(初始化變量$字段,在virtmart中增加一個額外字段的值)。

  2. 管理員/組件/ com_virtuemart /語言/普通/英語

替換消息爲以下代碼:

  1. 'USEND_MSG_ACTIVATE'=>「%s,您好

感謝您在%s註冊。您的帳戶已創建並且必須先啓用才能使用。 要激活賬號點擊以下鏈接或在您的瀏覽器,它複製粘貼: %S

激活後,您可以使用下面的用戶名和密碼登錄到%s:

用戶名 - %S 密碼 - %S 度 - %s'的

2.'PHPSHOP_USER_SEND_REGISTRATION_DETAILS '=>' %s您好,

謝謝您%s的註冊。您的客戶帳戶已創建。 您可以使用下面的用戶名和密碼登錄到%s:

用戶名 - %S 密碼 - %S 度 - %S ' 注:指定由

  1. 額外的附加價值語言文件中的字符串%s。

  2. virtuth中包含額外添加字段值的字符串值的消息。

  3. 程度顯示添加額外的字段