Joomla

Joomla es un Sistema de gestión de contenidos (en inglés Content Management System, o CMS) que permite desarrollar sitios web dinámicos e interactivos. Permite crear, modificar o eliminar contenido de un sitio web de manera sencilla a través de un Panel de Administración. Es un software de código abierto, desarrollado en PHP y liberado bajo licencia GPL. Este administrador de contenidos puede utilizarse en una PC local (en Localhost), en una Intranet o a través de Internet y requiere para su funcionamiento una base de datos creada con un gestor de bases de datos (MySQL es lo más habitual), así como de un servidor HTTP Apache.

Su nombre es una pronunciación fonética para anglófonos de la palabra swahili jumla, que significa "todos juntos" o "como un todo". Se escogió como una reflexión del compromiso del grupo de desarrolladores y la comunidad del proyecto.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

La idea es crear un repositorio espejo en GitHub del repositorio de virtuemart que esta Subversion.Esto surge despues de ver y preguntar en este hilo del foro de Virtuemart. Nunca trabaje con SVN, soy de GIT. :-)

Lo primero que hacemos es bajarnos el repositorio SVN en local con:

git svn clone https://dev.virtuemart.net/svn/virtuemart

Esta ruta la sacamos de https://docs.virtuemart.net/tutorials/development/100-svn-download.html

OJO:
Tiene que tene instalado el paquete git-svn, si no tuvieras
sudo apt install git-svn

Entonces empieza descargar todo el repositorio y todo su historial, en este caso tarda bastante ya que es muy grande, lleva muchos años el repositorio.

Una vez terminado, una de la primeras preguntas que me hago es, donde tiene guarda la ruta del SVN que clono, ya que con "git remote" no aparece nada.

Buscando informacion en "git svn --help", encuentro:

▶ git svn info 
Path: .
URL: https://dev.virtuemart.net/svn/virtuemart/trunk/virtuemart
Repository Root: https://dev.virtuemart.net/svn/virtuemart
Repository UUID: 87cc427b-4a1e-0410-b729-b2260ec0f063
Revision: 10338
Node Kind: directory
Schedule: normal
Last Changed Author: Milbo
Last Changed Rev: 10338
Last Changed Date: 2020-07-06 11:18:18 +0200 (lun, 06 jul 2020)

Con esto es suficiente por ahora.

Creo una rama llamada svn, para tener todo igual en esa rama, luego vero como sincronizarla.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Con :

  • Php 7.2
  • Joomla 3.9.21
  • Virtuemar 3.8.4 10335

me da un error al intentar cambiar el estado de algunos pedidos.

[Sun Aug 30 20:08:50.604004 2020] [php7:warn] [pid 6369] [client ::1:43724] PHP Warning: strtoupper() expects parameter 1 to be string, object given in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 314, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders
[Sun Aug 30 20:08:50.604083 2020] [php7:warn] [pid 6369] [client ::1:43724] PHP Warning: strpos() expects parameter 1 to be string, object given in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 361, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders
[Sun Aug 30 20:08:50.604106 2020] [php7:error] [pid 6369] [client ::1:43724] PHP Recoverable fatal error: Object of class stdClass could not be converted to string in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 364, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders

 

El problema creo que solo surge en los pedido que tiene un estado creado por nosotros. ( lo texteare mas)

Buscamos cual puede ser la causa y es el fichero administrator/components/com_virtuemart/models/orderstatus.php

Donde veo con la ultima actualizacion de virtuemart cambiaron esto:

diferencias orderstatus

Si dejo la version en rojo (la anterior) , funciona perfectamente.

Bueno, creare un tema en foro de virtuemart, a ver que me comentas.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Imaginaros queréis añadir un modulo a una extensión o componente de Joomla , pero no queréis y no debéis cambiar el código de ese componente, pues podéis hacerlo en vuestro override de la plantilla de ese componente/ extensión.

Por ejemplo nosotros queremos poner en un modulo en el formulario que trae componente contactos antes del botón de enviar ( añadir una clausula de privacidad, por ejemplo ). Pues hacemos los siguiente:

  1. Creamos un modulo tipo personalizado con el texto y le ponemos una posición única (nombre nuestra posición por ejemplo "clausula_contacto"), es decir que no se utilice en ninguna de la plantillas que tenemos instaladas.
  2. Añadimos el código en el override de ese componente en la plantilla que utilizas.

El ejemplo del código php para insertar en plantilla, sería:

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Bueno como dice el titulo NO voy escribir (otro más) sobre como migrar (hay quien le llama actualizar) joomla 2.5 a 3, ya que hay internet mucho que lo han hecho y muy bien.

Lo único quiero aclarar  es dos cosas:

1.- El php 5.6 es valido hasta un versión de 3.5.1 (creo recordar) a partir ahí tiene que cambiar de versión de PHP

2.- Cuando habla de limpiar cache no se refiere cual de los dos sitios que hay  en Joomla, nosotros tuvimos que limpiar cache en las dos opciones posibles  para actualiza a versiones superiores 3.5.1

Uno en sistema

Cache sistema

Y el otro en "Gestor de extensiones" que  hay purgar cache de extensiones.

Cache gestor extensiones

 

Este ultimo me trajo por el camino de la amargura en varias migraciones que no funcionaba correctamente.

 

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

En nuestro repositorio de GitHub puedes descargarte el mod_login_virtuemart, donde tiene la opción de cargar un menu, el que asignemos en la configuracion, este menu se muestra una vez no identificamos.

Es muy util, para mostrar en el mismo modulo cuando este registrado un menu exclusivo para los usuarios, la tipica Area privada.
Aparte tiene tres presentaciones:

  •  Enlaces: En la que solo muestra enlace Registro y mi cuenta.
  • Vertical: Muestra formulario acceso vertical,un campo debajo del otro.
  • Horizontal: Muestra formulario acceso horizontal, un campo al lado de otro.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

El mundo de las plantillas en Joomla es bastante grande e intenso, las plantillas son las encargadas de mostrar algo de una forma u otra de nuestra web. En Joomla tiene muy bien definido la parte visual de la operativa, tanto en parte front-end  como en la administrativa, así es que podemos utilizar plantillas para la parte administrativa y front-end.

El tema de la importancia de la plantilla lleva grandes debates entre desarrolladores, ejemplo claro este debate abierto en Podcast de Mastermind Joomla:¿ Quién pinta en Joomla ? :-)buenisímo

Hay un sinfín de sitios para descargar plantilla e incluso frameworks que son extensiones que nos confeccionan la plantilla de una forma más interactiva.

Algunos proveedores de plantillas y creadores frameworks:

  • Theme de ThemeForest
  • RocketTheme
  • Joomlart
  • Gantry framework
  • Helix Ultimate de Joomshaper
  • Wright v3 de Joomlashack
  • JA T3 de joomlart
  • Warp7 de Yootheme
  • Meet Gavern de Gavick

Yo personalmente los frameworks de plantillas los descarto, porque pienso que hacen que las plantillas que generan son muy pesadas y con código totalmente innecesario.

Estos seguro que todos nos paso que te pones a buscar plantillas o framework y encuentras alguna interensante y que te gusta, luego la instalas, te pone hacer cambios y pruebas, pero al poco o mucho tiempo te das cuenta que no es exactamente lo que buscas o da mucho trabajo cambiar las cosas, la descartas y la rueda vuelve a empezar. vuelves a buscar.

Modificar una plantilla de Joomla

Nosotros ya dejamos esa rueda que comentabamos, por ello optamos por modificar plantillas son sencillas y no complejas de añadir o quitar funcionalidades.

Modificar una plantilla Joomla suele ser una tarea bastante sencilla, lo primero conocer un poco a fondo todas las posibilidades que nos da esa plantilla, opciones y configuraciones, si estas no llegan y la plantilla no es demasiado enrevesada con un de conocimiento php, html y css, algunas nociones básicas donde tocar y donde no, se puede poner a nuestro gusto.

Hay un sinfín de artículos que habla de como modificar plantillas, recomiendo principalmente la lectura de los documentos oficiales de Joomla:

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

El objetivo es tener claro que hace cada fichero de la vista user de virtuemart para  poder montar a nuestro en la plantilla que utilicemos en :
/templates/nuestraplantilla/html /virtuemart/user/

Overrides de views de Virtuemart

La vista user de virtuemart utiliza los siguiente ficheros:

  • user/edit
  • user/edit_shopper
  • user/edit_vmshopper
  • user/edit_address
  • user/edit_address_userfields
  • user/edit_address_addshipto

Fichero user/edit

Este fichero debería ser el que cargue primero siempre al editar cuando estamos tratando datos de usuario de virtuemart, pero no es así, ya que este fichero no se llega siempre, solo se llega:

  • Desde el Item de menu "Muestra el mantenimiento de la cuenta del cliente".
  • A la hora de hacer registros usuarios nuevos, si lo hace Virtuemart. (al instalar virtuemart en el plugin "VM Framework Loader" viene por defecto )
  • Desde botton o link que "nueva dirección" dentro de la fichero edit_address_addshipto

Hay que tener en cuenta que el registro de un usuario nuevo se puede realizar desde un item de menu (normalmente) o desde el propio carro, desde el boton "Añadir/Editar información de facturación", lógicamente cuando no esta identificado y no se permite la compra como invitado.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

A veces la cosas mas sencillas parecen muy compleja

El cambiar un precio a virtuemart es muy sencillo, pero virtuemart no hace que sea de forma intuitivo.

Ejemplo de cambio de precio:

1.- Tenemos un producto con un precio determinado , en este caso un ZZ que cuesta 2.19€, precio con iva incluido.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Hace mas 8 años que empecé a utilizar Joomla y lo primero que pensé fue en crear mis propios componentes.

Hoy en día hago mis pinitos como desarrollador de componentes de joomla, no soy experto, pero me voy defendiendo (ver mi github). Mis inicios fueron frustrantes, la cantidad de ficheros que hay crear para un componente se hacía una faceta compleja y desesperante. Esté es el motivo de esté articulo, conseguir una guía de lugares y métodos para crear un componente y no morir en el intento.

Anibal Sanchez
"En honor a la verdad, un componente mínimo solo necesita tener un solo archivo com_foo.php y opcionalmente un router. El resto es para seguir las prácticas del JFramework."

Realmente es muy cierto, solo haría falta un fichero. :-)

Mis primeras busquedas para desarrollar una extension en Joomla.

Empecé buscando aplicaciones que me ayudarán a crear componente de forma sencilla y las hay, me imagino que con la practica se puede hacer útiles para componentes sencillos.Algunas de esas aplicaciones y extensiones:

Hoy en día no las utilizo, porque soy un poco de los que piensa que es bueno crea la rueda varias veces antes de simplemente utilizarla :-)

 

Documentación de como crear una extensión de Joomla :

Listado sitios que me parecen interesantes y que algún momento me util para crear un componente en Joomla: