Programando Joomla de 1.0.x a 1.5.x

:: Al inicio de cada archivo:
En 1.0.x:
defined( '_VALID_MOS' ) or die( 'Restricted access' );
En 1.5.x:
defined('_JEXEC') or die('Restricted access');

:: Joomla 1.5 defines:

JPATH_BASE = /var/www/html
JPATH_ROOT = /var/www/html
JPATH_SITE = /var/www/html
JPATH_CONFIGURATION = /var/www/html
JPATH_INSTALLATION = /var/www/html/installation
JPATH_ADMINISTRATOR = /var/www/html/administrator
JPATH_XMLRPC = /var/www/html/xmlrpc
JPATH_LIBRARIES = /var/www/html/libraries
JPATH_PLUGINS = /var/www/html/plugins
JPATH_CACHE = /var/www/html/cache
JPATH_THEMES = /var/www/html/templates
DS = /
JPATH_COMPONENT = /var/www/html/components/com_user
JPATH_COMPONENT_SITE = /var/www/html/components/com_user
JPATH_COMPONENT_ADMINISTRATOR = /var/www/html/administrator/components/com_user

:: Para los includes/requires:
En 1.5.x:
require_once( JPATH_ROOT .DS.'components'.DS.'com_social_network'.DS.'social_network.class.php' );
ó
jimport( 'joomla.application.component.view');
Donde «joomla.application.component.view» importará el archivo: «/libraries/joomla/application/component/view.php».

:: Manejo de URLs:
1.0.x:
$mosConfig_live_site

1.5.x (forma 1):
JURI::root() Si estás en el BackEnd NO te devolverá http://elsitio.com/administrator/. Ya incluye el / al final de la URL y NO es necesario declarar como global a JURI.
JURI::base() Si estás en el BackEnd SÍ te devolverá http://elsitio.com/administrator/. Ya incluye el / al final de la URL y NO es necesario declarar como global a JURI.

1.5.x (forma 2):
$uri =& JFactory::getURI(); $uri devuelve un objeto con todas las partes que conforman la URL actual.

:: Variables post, get, request, etc.:

1.0.x:
$idReferred = mosGetparam( $_REQUEST, "idReferred", 62 );
1.5.x:
$idReferred = JRequest::getVar( "idReferred", 62 );

:: Usuarios:
1.0.x:
global $my;
1.5.x:
$my =& JFactory::getUser(); Devuelve un objeto representando al usuario actual.

Para dar acceso sólo para usuarios registrados (FrontEnd):
$my->id or JError::raiseError( 403, JText::_('ALERTNOTAUTH') );

:: En Admin components:
Para dar acceso sólo para usuarios registrados (FrontEnd):
1.0.x:
// ensure user has access to this function
if (!$acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' )) {
mosRedirect( 'index2.php', _NOT_AUTH );
}

1.0.15:
/*
* Make sure the user is authorized to view this page
*/
$user = & JFactory::getUser();
if (!$user->authorize( 'administration', 'edit', 'components', 'all' )) {
$mainframe->redirect( 'index.php', JText::_('ALERTNOTAUTH') );
}

:: Base de datos:
1.0.x:
global $database;
1.5.x:
$db = &JFactory::getDBO();
Si se piensa usar a lo largo de todo un componente/módulo manejado por una class, pondríamos en el constructor de la class algo así:
$this->_db = &JFactory::getDBO();
(De hecho muchas class ya traen el atributo $_db)

Adicionalmente: Joomla! 1.5 introduce el concepto de manejadores de dase de datos que permitirán conseguir el objeto de las base de datos para diferentes fuentes de base de datos. El siguiente ejemplo describe de forma clara y práctica este concepto. Asumimos que hemos modificado el archivo de configuración para contener los datos de acceso a una segunda Base de Datos MySQL (ver más adelante el tema del archivo de configuración):
$config = JFactory::getConfig();
$options = array(
'host' => $config->getValue('mydns_host'),
'user' => $config->getValue('mydns_user'),
'password' => $config->getValue('mydns_password'),
'database' => $config->getValue('mydns_db'),
'prefix' => $config->getValue('mydns_dbprefix'),
'select' => true );
$myDB = JDatabase::getInstance( $options );

:: Quitar el logo de joomla de la template de admin (1.5.x [khepri]):

En el archivo:
administrator/templates/khepri/css/general.css
en la línea 89: cambiar el nombre de la imagen j_header_left.png por j_header_left_rtl.png
En la línea 101: cambiar el padding 250px por 25px