Inicio arrow Recursos Técnicos arrow Cómo enlazar tus aplicaciones webs externas a Joomla 1.5
lunes, 15 de marzo de 2010
 
 
Cómo enlazar tus aplicaciones webs externas a Joomla 1.5 PDF Imprimir E-Mail
Introducción

No es la primera vez que en el foro me encuentro la siguiente pregunta:
¿Cómo recupero el usuario de Joomla para meterlo en mi aplicación php que he cargado en un wrapper?

Además de esto, ya me ha surgido más de una vez, que he necesitado usar una aplicación php externa a Joomla, y recuperar la ruta de mi web o cualquier otro dato, y era un auténtico fastidio tener que poner tanto código y ensuciar mi componente.

El Tutorial es para Joomla 1.5, sin embargo, para Joomla 1.0 sería bastante análogo.

Resumen del proceso

La idea que vamos a explicar se resume en lo siguiente:
Cargaremos en un fichero .php el código que Joomla tiene en su index.php para cargar el framework, una vez hecho esto, el fichero lo colocamos en la carpeta raíz de Joomla y lo llamamos con un include desde la utilidad externa en la que queramos recuperar el framework. Ahora podremos usar cualquier función o definición de Joomla.

Paso a Paso
Imaginemos que nuestro objectivo es imprimir en pantalla el ID del Usuario que está logueado en nuestro sistema Joomla, así como su UserName.

La aplicación desde la cual queremos hacer esto está ubicada en
http://www.miweb.com/aplicacion/index.php
y nuestro Joomla:
http://www.miweb.com/joomla
  1. Creamos un fichero llamado ecojoom15.php en http://www.miweb.com/joomla, con el siguiente código:
    Código PHP:
    // Código tomado del index.php de Joomla 1.5, ningún derecho reservado
     
              define( '_JEXEC', 1 );
     
              define('JPATH_BASE', dirname(__FILE__) );
     
              define( 'DS', DIRECTORY_SEPARATOR );
     
              require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
     
              require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
     
              $mainframe =& JFactory::getApplication('site');

  1. Agregaremos las siguientes líneas a nuestro fichero www.miweb.com/aplicacion/index.php
    Código PHP:
    include('../joomla/ecojoom15.php');
     
              $user = JFactory::getUser();
     
              echo "Usuario " . $user->username . " con id: " . $user->id . " conectado a Joomla";


Notas Finales
Pueden ocurrir errores inesperados si la línea:
Código PHP:
include('../joomla/ecojoom15.php');

La ponemos después de que nuestra aplicación externa haya impreso cosas, por eso es mejor ponerla al principio del todo y quitarnos de problemas.

Seguridad
Gracias a los consejos de javiparati, me doy cuenta de que en este código hay un gran problema de seguridad, y es que, se podría acceder al componente sin pasar por Joomla, o sea, directamente. Para solventar este problema, habría que hacer las comprobaciones pertinentes (si nuestro usuario necesita estar identificado para acceder, o ser administrador), dentro del código de nuestra aplicación externa: www.miweb.com/aplicacion/index.php

Podríamos añadir dos líneas para comprobar que el usuario está identificado en Joomla y sino no dejarlo entrar en el sistema:
Código PHP:
include('../joomla/ecojoom15.php');
 
    if (JFactory::getUser()->usertype == NULL)
 
        JError::raiseError(1,"No puede acceder a esta página sin estar logueado en Joomla.");
 
    $user = JFactory::getUser();
 
    echo "Usuario " . $user->username . " con id: " . $user->id . " conectado a Joomla";

Sin embargo, aunque esta solución nos asegure el acceso no deseado, creo que no es lo suficientemente elegante. Si encuentro algo mejor os lo comento, se aceptan sugerencias.

Esto es todo, espero que les sirva, estaría agradecido de que me reportasen cualquier error.

 Texto original: "Cómo enlazar tus aplicaciones webs externas a Joomla 1.5 (Tutorial) ", por Hidabe - Joomla Spanish developer.
 Traducido por: Equipo de Traducción y Documentación de Joomla! Spanish.

 
Siguiente >

Foros Joomla! Spanish