Instalar desde la Web (Para Desarrolladores)
From Joomla! Documentation
Joomla! 3.2 introdujo la nueva funcionalidad Instalar desde la web que permite dirigir las instalaciones de extensiones a las que se enumeran en JED. Hacer que tus extensiones que se enumeren en JED y esten disponible para Instalar desde la web es un proceso de dos pasos:
- Rellenar dos campos nuevos en JED
- Configurar tu sitio como corresponde
Rellenar dos campos nuevos en JED
Si editas tu extensión en el listado en JED podrás ver dos nuevos campos.
La primera es Download Type (Tipo de Descarga)', donde pueded seleccionar el tipo de descarga para la extensión dentro de las cuatro opciones propuestas:
- None (Ninguna)
- Free Direct Download Link (Enlace de Descarga Directa Gratuito):
- Free but Registration Required at Link (Gratuita, pero se Requiere Registración en el Enlace):
- Commercial Purchase Required at Link (Comercial se Requiere una Compra en el Enlace):
El segundo campo es Download/registration/purchase URL (URL de decarga/registración/compra) y puede contener una de las siguientes URL:
- Una URL a un archivo zip Por ej.: http://www.example.com/updates/com_extension_v9.9.zip
- Una URL a un XML de actualización Por ej.: http://www.example.com/updates/extension_update.xml
Ten en cuenta: el almacenamiento en caché del servidor de la funcionalidad "Instalar desde la Web" está establecido en 2-6 horas y entonces probablemente no verás los cambios de inmediato en el Lado Servidor de Joomla.
Si tu extensión es un servicio de enlace directo de descarga gratuito, en consecuencia, todo su trabajo está hecho y puedes omitir el segundo paso.
Aquí más detalles sobre el tipo de descarga.
Ninguna
Este es el caso más común hoy en día y básicamente significa que no puedes o no quieres proporcionar directamente la URL instalación de tu extensión. Sólo los campos obligatorios de JED están llenos y los campos de "Instalar desde la Web" quedan vacíos.
Cuando un usuario entra en su Lado Servidor y hace clic en la pestaña "Instalar desde la Web", tu extensión puede ser encontrada, se muestra el botón "Descargar", pero no hay botón "Instalar".
Enlace de Descarga Directa Gratuito
Esta es la opción a elegir si tu extensión está disponible gratuitamente, sin registro o compra. En "URL de descargar/registro/compra" debes poner la URL del XML de actualización o directamente la dirección URL del archivo zip.
Cuando un usuario entra en su Lado Servidor y hace clic en la pestaña "Instalar desde la Web", tu extensión puede ser encontrado y el botón "Instalar" aparece, por lo que el usuario puede simplemente hacer clic en instalar tu extensión.
Gratuita, pero se Requiere Registración en el Enlace
Esta es la opción a elegir si su extensión requiere registro para ser descargado. En "URL de descargar/registro/compra" debes poner la URL a la Página de Registro de tu sitio.
Cuando un usuario entra en su Lado Servidor y hace clic en la pestaña "Instalar desde la Web", tu extensión puede ser encontrada y el botón "Instalar" aparece; cuando el usuario hace clic en el botón instalar, será redirigido a la página de registro en tu sitio.
Si la configuración de tu sitio es correcta (consulta el Paso 2 de abajo) después del registro, el usuario debe ser redirigido de nuevo a su sitio para completar la instalación web.
Comercial se Requiere una Compra en el Enlace
Esta es la opción a elegir si tu extensión requiere ser comprada para ser descargado. En "URL de descargar/registro/compra" debes poner la URL a la Página de Compra de tu sitio.
Cuando un usuario entra en su Lado Servidor y hace clic en la pestaña "Instalar desde la Web", tu extensión puede ser encontrada y el botón "Instalar" aparece; cuando el usuario hace clic en el botón instalar, será redirigido a la página de compra en tu sitio.
Si la configuración de tu sitio es correcta (consulta el Paso 2 de abajo) después de la compra exitosa, el usuario debe ser redirigido de nuevo a su sitio para completar la instalación web.
[¿Qué acerca de la suscripción? ¿Es más similar a basados en registro o basado en comercial?]
Configuración de tu sitio
Como se dijo antes, si tu extensión está disponible gratuitamente, sin necesidad de registro o compra, no necesitas hacer nada más y puedes omitir este paso.
Configuración de su sitio y extensiones para descarga gratuita, pero se Requiere Registración en el Enlace de Extensión
Si requieres a un consumidor que se registre, entonces tienes que configurar tu sitio para procesar el registro del usuario.
Si no, el usuario llenará el registro y el último paso de instalación desde la web NO se ha completado.
Cómo trabaja instalación desde la web
Cuando el usuario hace clic en el botón de "Instalar", Joomla! suministra los siguientes parámetros:
- installat Por ej.: http://client.domain.com/administrator/index.php?option=com_installer&view=install
- installapp Por ej.: 99999
installat es la dirección URL de retorno e installapp es el ID JED de la extensión.
Para completar el paso instalar desde la web, el Lado Servidor del usuario tiene que recibir estos parámetros, procesar el registro y volver a la dirección URL de installat.
Mientras que el registro se completa y procesa, Joomla! queda a la espera de recibir la dirección URL del zip o un la URl de un XML de actualización. Cuando se recibe, Joomla!, finalmente completa la instalación.
Instalación Web con plugin jefreg
El plugin jefreg es la implementación de referencia. Un buen punto de partida que fue desarrollado específicamente para este propósito se puede encontrar aquí.
El plugin tiene dos parámetros:
- Archivos a descargar
- URL de Entrada
En el parámetro Archivos a Descargar, el primer parámetro que hay que establecer es señalar al plugin tus archivos XML de actualización de la extensión, archivos zip o script (uno por línea).
99999=>http://www.example.com/updates/com_extension_v9.9.zip
30458=>http://www.example.com/updates/extension_update.xml
77777=>http://www.example.com/updates/download.php
Si la línea comienza con un asterisco [*], se ignora y se deja manipular por los plugins que soportan descargas después que se haya recibido el pago. Ejemplos de tales plugins se pueden encontrar como ramas en el repositorio mencionado anteriormente.
Acerca de la URL de Entrada: este plugin está diseñado específicamente para el Componente Usuario de Joomla! (valor Predeterminado index.php?option=com_users&view=login) sin embargo también se integra bien con cualquier página de registro. Por ej.: Por caso, Community Builder, simplemente cambiando el punto de entrada de la URL en los parámetros del plugin -en general, es recomendable (por no decir obligatorio), señalar esto a tu página de inicio de sesión. Nota: un valor vacío de este parámetro de forma predeterminada apunta a la página de inicio de Sesión del Componente Usuario de Joomla.
Cómo construir un plugin jefreg
- Descarga los archivos desde github
- Copia los archivos de idioma en el sistema de directorio de plugins
- Zip todos los archivos y lo instalas con el Gestor de extensiones
Configurar tu sitio y extensiones para una Extensión Comercial
Esto tendrá más trabajo que el paso anterior. Se recomienda que descargues el mismo plugin -sin embargo, tendrás que integrar con el plugin extra para comprobar si el usuario ha comprado su extensión. Como diferentes extensiones implementan esto de formas muy diferentes es que se deja a los desarrolladores de extensiones implementar esta funcionalidad.
El plugin se puede utilizar para obtener los parámetros de installat e installapp, pero NO debe devolver la dirección URL del zip o XML de actualización onUserLogin. Cuando la compra se haya completado, la operación se puede volver a completar la web de la instalación.
Código fuente para la funcionalidad
Puedes contribuir con correcciones de errores y nuevas características para los siguientes repositorios:
- https://github.com/joomla-extensions/install-from-web-client (plugin cliente)
- https://github.com/joomla-extensions/install-from-web-server (parte del servidor)
- https://github.com/joomla-extensions/install-from-web-plugins (ejemplo de plugin a ser usado por desarrolladores)
- https://github.com/joomla/joomla-cms (CMS repo)