Usarte.org

Intentando conocer joomla!, he mirado varios de sus directorios en especial joomla/liraries/joomla, que es donde esta la mayor parte de las clases usadas, y includes que es donde estan las definiciones y funciones muy especificas que recurrentemente se usan. Sin embargo no me he podido hacer una estructura de los directorios de joomla! y eso no me ha permitido lograr comprender muchos de los demas archivos existentes, cual directorio es mas importante o sus archivos tienen que ser primero llamados que otros, como se interrelacionan los archivos, etc.

Agradeceria una introducción en esta parte

Compartir

Responde a esto

Respuestas a esta discusión

Hola, creo que lo que quieres es algo muy extenso para podertelo explicar en un post, pero voy a intentar darte los puntos más claves para ver como nos va.

Como ya sabes Joomla! se divide en back-end(administrador) y front-end(Presentación del sitio). Cada parte esta separada en cuanto a directorios. Como cualquier sistema en internet todo comienza con el archivo index.php. En este archivo se definen algunas constantes que determinan ciertos puntos importates en la ejecución de Joomla!, como lo es "_JEXEC" que es la llave para poder entrar a cualquier aechivo de Joomla!. Aparte de esto llama al archivo "administrator/includes/defines.php" y el más importante de todos, el archivo "administrator/includes/framework.php". Allí se encuentran todas las inclusiones a los paquetes vitales para que Joomla! funcione entre los que estan JFactory(el que se encarga de devolver las referencias de los objetos que se van a utilizar), JRegistry( La base para la parte de i18n, internacionalización), JObject(La base para la creación de Objetos, componentes, modulos, plugins y demás), JHTML, etc.

La verdad no me quiero extender mucho en esto ya que tendria que dar conceptos sobre POO muy largos, pero básicamente el archivo principal es el "Framework.php", ya que de allí se instancian clases y se llaman algunos paquetes importantes. Los que están en la carpeta libraries son paquetes que son llamados principalmente por los componentes y plugins con la funcion Jimport.

Espero te halla dado idea de lo que es el inmenso código fuente de Joomla! y si no me hice entender me avisas.

Un Saludo.

Responde a esto

claro que si me ha servido, sin embargo no entiendo aun varias cosas.
Estos son los primeros defines que se hacen y no entiendo como asocian DIRECTORY_SEPARATOR al slash y he buscado que es lo que hace dirname(__FILE__) pero no he encontrado una respuesta clara, otra es cual es la idea de definir JEXEC como 1?

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );

Sobre todo esto se me ha hecho muy confuso

Responde a esto

Hola de nuevo:

1. DIRECTORY_SEPARATOR, es una constantes nativa de PHP, osea que no es definida por Joomla!, como tu lo haz dicho esta constante contiene el separador de directorios del sistema operativo del servidor. SI es sisteam Unix "/" y si es windows "\".

2. __FILE__, es también una constante nativa de PHP que muestra la ruta del sistema del archivo que se está ejecutando en el momento. La ruta del sistema es diferente a la ruta http, esta puede ser si es un sistema Unix "/var/www/..." o si es Windows "C:\Apache2\...".

3. _JEXEC es una constante que es definida por Joomla al principio del cada index.php(Tanto el del sitio como es del administrador). Esta constante se encarga de que solo Joomla! pueda acceder al contenido de los archivos y ejecutarlos. Es por ello que en cada archivo de Joomla! y sus componentes encuentras esto:

defined( _JEXEC ) or die(...);

Lo que hace esta línea es verificar si la constante está definida y si no termina la ejecución enviando un texto al navegador. La constante se define a uno por que en informatica cualquier número distinto a cero(0) equivale a verdadero lo cual servirá para después ejecutar la línea en donde se pide la definición de la constante, osea la de arriba "define(_JEXEC) or die(..)". Esto es muy obvio ya que si la pones a cero(0) la función la determinara como no definida.


Te voy a poner un ejemplo del funcionamiento de esta constante:

El index.php define la constante asignadole un valor verdadero, osea el número 1.
Luego el index.php incluye al archivo framework.php que en su primera línea llama a la función defined para verificar la existencia de la constante. Si esa verificación no exististiera, se correria el riesgo de que un tercero acceda a estos archivos por medio del navegador y obligue a la ejecución de un código que no está preparado para ello( Por que le hace faltan variables o scripts que deberian haber sido incluidos antes que este).

En conclusión la constante _JEXEC es un sistema de seguridad para el código fuente y siempre que ingresemos un archivo a Joomla!, ya sea plantilla, componente, módulo o plugin, es recomendable tener esta linea al inicio.

Espero haberme hecho entender y si no igual espero cualquier duda o comentario.

Responde a esto

Oe que buenas explicaciones, me agrada que sea explicito, y yo estoy acostumbrado a generar una idea logica de las cosas por lo que hago bastantes pregutnas cuando no entiendo, espero que eso no le moleste.

Me pareceria una falla de seguridad lo de JEXEC ya que un tercero que conozca esto simplemente con poner la linea de verificacion al comienzo ya puede acceder a los archivos por medio del navegador, no?.

En /includes
La definicion de JPATH_BASE es relativa o respecto a "/"? ( yo uso linux).
No se si este bien pero en principio pensaria que JPATH_ROOT=JPATH_BASE, hay necesidad?, creo que lo que se hace en defines.php en definir el directorio donde se encuentran los archivos mas no la ruta de los archivos mismos. Por ejemplo cual es al diferencia ademas del nombre del directorio de JPATH_ROOT.DS.'installation'
y JPATH_BASE.DS.'templates' ?

Bueno hay para terminar el index.php, no entiendo la linea de JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;

las cosas que le parezcan triviales si quiere simplemente deme un link o palabra para encontrar esa informacion, aunque si quiere explicarmela mucho mejor, (avanzo mas rapido). y gracias

Responde a esto

donde esta definida al funcion jimport?

Responde a esto

RSS

© 2009   Creado por Natalia Vivas en Ning.   Crear tu propia red social

Emblemas  |  Reportar un problema  |  Privacidad  |  Términos de servicio

Iniciar sesión en el chat