カスタム PHP システムがあります。
RSVP などの機能でカレンダーを作ろうとしているのですが、Joomla には高度なプラグインがあることに気付きました。私の質問は、カスタム登録フォームから Joomla DB にデータを送信する方法です。
また、カスタム ログイン フォームを使用している場合、ユーザーはどのようにして Joomla で保護されたページ (セッション) にアクセスできますか?
可能です?
カスタム PHP システムがあります。
RSVP などの機能でカレンダーを作ろうとしているのですが、Joomla には高度なプラグインがあることに気付きました。私の質問は、カスタム登録フォームから Joomla DB にデータを送信する方法です。
また、カスタム ログイン フォームを使用している場合、ユーザーはどのようにして Joomla で保護されたページ (セッション) にアクセスできますか?
可能です?
これはすべて可能です。
既存のログインフォームを取得して、カスタムJoomlaログインモジュールに変換したいようです。カスタムモジュールの作成方法に関するJoomlaのドキュメントへのリンクは次のとおりです。
http://docs.joomla.org/How_do_you_create_a_custom_module%3F
Joomlaログインモジュールの変更に関するもう1つの方法があります。
http://docs.joomla.org/Customising_the_Login_Form_module
これを行う方法を簡単に教える方法はありませんが、Joomlaモジュールの構造を学び、既存のJoomla mod_login(ログインモジュール)を分解して(ログインモジュール)、それがどのように機能するかを理解することから始めます。
次に、カスタムPHPログインページをマッシュアップするだけのタスクです。
カットして乾かすことはありませんが、間違いなく可能です。
Googleですばやく検索すると、Joomlaのログインプロセスを変更しようとする人々から多くの結果が得られました。Joomlaボードに参加して、できるだけ多くのことを読み始めることをお勧めします。
これは joomla 1.6-2.5 (および prob 3.0 ですが、テストされていません) で機能します。これがJoomla 1.5で機能するとは思わない
したがって、モデルファイルで、次のような関数を作成します。これは、最小限のフィールド(名前、電子メール、ユーザー名、パスワード)を使用します...そして、電子メールをユーザー名として使用します
<?php
//create or link joomla user
JModel::addIncludePath(JPATH_BASE.'/components/com_users/models');
$params = JComponentHelper::getParams('com_users');
$forMYSQL = array();
$forMYSQL['id'] = '';
$forMYSQL['name'] = JRequest::getVar('fname').JRequest::getVar('name');
$forMYSQL['username'] = JRequest::getVar('email');
$forMYSQL['email'] = JRequest::getVar('email');
$forMYSQL['groups'][0] = 2; //Registered user group,
//$forMYSQL['groups'][1] = 8; //Super Admin user group
$forMYSQL['password'] = JUserHelper::genRandomPassword(); //Random password.
$forMYSQL['password2'] = $forMYSQL['password'];
//If a email is found....
$query = sprintf("SELECT * FROM `#__users` WHERE `email`='%s'", $forMYSQL['email']);
$this->_db->setQuery($query);
$checkuser = $this->_db->loadObject();
if ($checkuser->id > 0) {
//E-mail in use already NOT CREATING....
} else {
//EMAIL NOT USED... CREATING Joomla user
$userModel =& $this->getInstance('User', 'UsersModel');
$userModel->save($forMYSQL);
$newuid = $userModel->getState('user.id');
if ($newuid > 0) {
//User created.
} else {
//ERROR USER NOT CREATED.
}
}
?>
これは、joomla の内部にある場合に機能します。理想的には、コンポーネントのモデル ファイルの内部にある場合です。それ以外の場合は、joomla フレームワークをロードしてから、次のコード スニペットをロードしてそのコードを実行できます。
// START: Initialize Joomla framework
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(__FILE__)); //This needs to point to the root of your joomla
// Including Required Files
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
// Create the Application
$mainframe =& JFactory::getApplication('administrator');
$mainframe->initialise();
$user =& JFactory::getUser();
define( '_JEXEC', 1 );
//Including Required Joomla libarys
jimport('joomla.application.component.model');
jimport('joomla.application.component.modelitem');
jimport('joomla.application.component.modellist');
// END: Initialize Joomla framework