3

「ユーザー フィールドの管理」にフィールドを追加しました。新しいユーザー登録を通知するメールが管理者に送信されたときに、この新しいフィールドを含めたいと思います。

/administrator/components/com_virtuemart/classes/ps_shopper.php の #__vm_user_info からこの新しいフィールドを取得するコードを _sendMail 関数で記述し、変数を $message2 に追加しました。

ASEND_MSG はパラメーターを受け入れるように変更されましたが、ユーザーの作成時に管理者への電子メールにフィールドが含まれていません。表を見てみると、そこにはデータがあります。そのため、トラブルシューティングのために、select ステートメントでユーザー名をハードコーディングし、別のユーザーを追加しました。追加したばかりのユーザーではなく、ハードコードされたユーザーに正しい値が送信されました。これは MySQL のコミットの問題であると考えているので、値を取得する前にコードに sleep(4) を追加しました...うまくいきません。

誰かが私のためにこれに光を当てることができますか??

ラリーR....

4

1 に答える 1

1
  1. 管理者/コンポーネント/com_virtuemart/classses/ps_shopper.php

「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

「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

次のコードを使用して、関数 _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」を初期化し、クエリを使用して追加のフィールド値を取得します。次に、追加のフィールド値がメールのメッセージ セクションによって割り当てられます。

  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. 美徳マートで余分に追加されたフィールド値の文字列値を持つメッセージ。

  3. 度は、追加された追加フィールドを示します

于 2012-07-26T18:14:46.680 に答える