¿Cómo combinar mi sistema de registro de PHP con el registro de Joomla?
session login (2)
Esto funciona para joomla 1.6-2.5 (y prob 3.0 pero no probado). no creo que esto funcione en Joomla 1.5
Entonces, en su archivo de modelo, realice una función que tenga algo así como: Utiliza la cantidad mínima de campos (Nombre, correo electrónico, nombre de usuario, contraseña) ... y uso el correo electrónico como nombre de usuario
<?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.
}
}
?>
Así que eso funciona si estás dentro de joomla ... idealmente dentro de un archivo de modelo de un componente ... De lo contrario, puedes cargar el marco joomla y luego ejecutar ese código cargando este siguiente sniplet de código:
// 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
Tengo un sistema PHP personalizado.
Estoy intentando hacer un calendario con RSVP y otras funciones, pero noté que Joomla tiene complementos avanzados. Mi pregunta es cómo puedo enviar datos de mi formulario de registro personalizado a Joomla DB.
¿Y también cómo pueden mis usuarios acceder a las páginas protegidas de Joomla (sesiones) cuando utilizan mi formulario de inicio de sesión personalizado?
¿Es posible?
Todo esto es posible
Parece que desea tomar un formulario de inicio de sesión existente y convertirlo en un módulo de inicio de sesión personalizado de Joomla. Aquí hay un enlace a la documentación de Joomla sobre cómo crear un módulo personalizado.
http://docs.joomla.org/How_do_you_create_a_custom_module%3F
Aquí hay otro acerca de cómo modificar el módulo de inicio de sesión de Joomla.
http://docs.joomla.org/Customising_the_Login_Form_module
No hay una manera rápida de enseñarle cómo hacer esto, pero comenzaría por aprender la estructura del Módulo Joomla y desmantelar (una copia de seguridad) del mod_login de Joomla existente (módulo de inicio de sesión) para que pueda entender cómo funciona.
Entonces es solo una tarea de combinar tu página de inicio de sesión de PHP personalizada.
No cortado y seco, pero definitivamente es posible.
Una búsqueda rápida en Google arrojó muchos resultados con personas que intentaban modificar el proceso de inicio de sesión de Joomla. Te recomiendo que te unas a los foros de Joomla y comiences a leer todo lo que puedas sobre él.