3

我在“管理用户字段”中添加了一个字段,当向管理员发送电子邮件通知他们新用户注册时,我想包含这个新字段。

我已经编写了一些代码来从 /administrator/components/com_virtuemart/classes/ps_shopper.php 中的 _sendMail 函数中的 #__vm_user_info 获取这个新字段,并将变量添加到 $message2。

ASEND_MSG 已修改为接受该参数,但在创建用户时,该字段不包含在发送给管理员的电子邮件中。当我去查看表格时,数据就在那里。因此,为了排除故障,我在 select 语句中硬编码了一个用户名,添加了另一个用户,并且为硬编码的用户发送了正确的值,而不是刚刚添加的用户。我现在认为这是 MySQL 的提交问题,所以在尝试获取值之前,我在代码中添加了 sleep(4) ......不走运。

任何人都可以为我阐明这一点吗?

拉里R....

4

1 回答 1

1
  1. 管理员/components/com_virtuemart/classses/ps_shopper.php

需要在函数 add() 中的“return true”行之前添加以下代码:

/ * ** * ** * ** * ** * ** * ** * ** * ** * *** ** * ** * ** * ** * ** * ** * ** * ** / $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. 管理员/components/com_virtuemart/classses/ps_shopper.php

需要在“return true”行之前注释函数 register_save() 中的行:

    // Send the registration email

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

注意:这里生成的邮件函数我们需要注释该邮件函数并在第一点在 ps_shopper.php 的 add() 函数中创建另一个邮件函数。

  1. 管理员/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. 使用查询初始化变量“$field”获取额外添加的字段值。然后,额外的字段值由邮件的消息部分分配。(初始化变量 $field 具有附加值的 drugmart 中的额外字段)。

  2. 管理员/组件/com_virtuemart/languages/common/english

替换以下代码的消息:

  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. 消息中包含额外添加的字段值的字符串值。

  3. 度数显示增加的额外字段

于 2012-07-26T18:14:46.680 回答