Virtuemart /用户字段

时间:2012-07-16 00:06:17

标签: joomla1.5 virtuemart

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

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

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

任何人都可以为我发光吗??

... LarryR

1 个答案:

答案 0 :(得分:1)

  1. 管理员/组件/ com_virtuemart / classses / ps_shopper.php
  2. 需要在“return 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
    2. 需要在“return true”行之前注释函数register_save()中的行:

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

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

      1. 管理员/组件/ com_virtuemart / classses / ps_shopper.php
      2. 需要在函数_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,其中的值在virtuemart中添加了额外的字段)。

        2. 管理员/组件/ com_virtuemart /语言/普通/英语

        3. 替换以下代码的消息:

          1. 'USEND_MSG_ACTIVATE'=&gt; '你好%s,
          2. 感谢您在%s注册。您的帐户已创建,必须先激活才能使用。 要激活帐户,请单击以下链接或将其复制粘贴到浏览器中: %S

            激活后,您可以使用以下用户名和密码登录%s:

            用户名 - %s 密码 - %s 学位 - %s'

            2.'PHPSHOP_USER_SEND_REGISTRATION_DETAILS'=&gt; '你好%s,

            感谢您在%s注册。您的客户帐户已创建。 您可以使用以下用户名和密码登录%s:

            用户名 - %s 密码 - %s 学位 - %s “ 注意:

            1. 语言文件中字符串%s分配的额外添加值。

            2. 在virtuemart中具有额外添加字段值的字符串值的消息。

            3. 学位显示添加的额外字段