Joomla

Joomla es mi CMS preferido, que permite desarrollar todo sitios web dinámicos e interactivos, una simple web , un blog, una tienda online, lo que se te ocurra se puede hacer con Joomla.
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 Joomla y la comunidad del proyecto.
Es desarrollado principalmente en PHP ,puede ver en este link Requisitos software para cada versión Joomla de la pagina Oficial
Mas información y descarga de la Pagina Oficial.
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.
Joomla 3.10 VirtueMart 4.0.12
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 y la vista del carrito utilizan los siguientes ficheros:
- edit_address: Comprueba si llegaste desde 'cart' o 'user'
- edit_address_userfields: Crear todos los campos del formulario
- edit_address_addshipto: Lista las direcciones que tienes creadas y te permite (editarlas, borrarlas y crear una nueva)
El enlace de 'editar' y 'nueva dirección' de edit_address_addshipto utiliza la siguiente estructura de ficheros:
- edit.php: Cambia el titulo, crea el formulario, cargar 'edit_shopper', crea el div del boton de 'guardar' y del enlace de 'cancelar' y añade campos 'hidden'
- edit_shopper.php: Carga 'edit_address_userfields' y añade campos 'hidden'
- edit_address_userfields.php: Crear todos los campos del formulario
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:
- 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.
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:
- Extension Creator
- Component Builder
- Componente Creator - Online y externo.
- Plugin de netbean para crear componentes Joomla.
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:
- Componente Hello word. ( documentación oficial de joomla)
- Buenas practicas desarrollo. (documentación oficial de joomla)
- Como hacer hacer un componente.- Magazine de Joomla.
- Como crear un componente por Mundogeek
Introduccion general de configuración
Una vez instalado virtuemart debes ir al CPANEL de virtuemart en parte administrativa de tu Joomla para configuración, en los apartado:
- Tienda
- Configuración
La configuración ya predeterminada por defecto, pocas cosas debes cambiar, eso si quieres cambiarlas fíjate en todas la opciones que tiene, ya que en cada apartado tienes varias pestañas.
Configuración
Debes ir la opción de cpanel de virtuemart de configuración, al hacer clic ya puede ver las siguientes pestañas.
Pestañas configuración

Configuración Tienda

Esta opción se llega pulsado en tienda en cpanel.
Aquí puede poner el nombre la tienda, que va aparecer en los pdf.
También puede indicar el importe mínimo de compra.
Las monedas que aceptas y la moneda por defecto de la tienda.
La imagen que aparece en pdf.
Tiene varios campos para meter una descripción de la tienda, otra para términos de servicio y otra informacion legal.
Metadatos
Yo todas estas opciones que están la pestaña Vendedor, realmente solo pongo Nombre del vendedor , Nombre de la tienda , imagen y asigno monedas.
El resto de campos los gestión a parte con artículos y los muestro yo.
La pestaña de Facturas/Emails es donde puede configurar los pdf que envías, pero realmente tampoco los utilizo suelo hacer overide en mi plantilla para montarlo.
Luego tiene la pestaña comprador, suelo cubrir los datos dirección,ya que son los pone como vendedor también.
Realmente despista un poco estas pestañas, pero si entiendes que el vendedor también puede ser comprador, te es mas fácil de comprender.
Estas son las pestañas que puedes encontrar en esta opción, que ya comente.

Si quieres ver la documentación original puede verlo en: http://docs.virtuemart.net/manual
En configuración debemos indicar las ruta segura donde virtuemart va guardar los pdf de los pedidos, albaranes y facturas.
¿ Registro de usuarios de virtuemart o de Joomla ?
Por defecto virtuemart trae marcado que la gestion de usuarios sea realizada por virtuemart.
Hace años era lo habitual, yo creo que hoy en día con el componente que trae joomla de GPR , es conveniente cambiar esta opción por que controle el registro de usuarios Joomla.
¿ Donde podemos cambiar control de registros de virtuemart?
Akeeba es una de esas extensiones que utilizo en todas mis webs, por la sencillez y eficacia, no puede faltar en ninguno de mis proyectos.
Ahora en la version v6.4.0 me genera un error al restaurar una copia.
No se si es un error de mi copia o un error de la version del componente, aunque me temo lo ultimo.

La solucion es sustituir la linea 12 del fichero instalation/sql/site.sql por :
CREATE TABLE `#__akeeba_common` ( `key` varchar(192) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Solucion ofrecidad por Nicolas el creador componente:
Aunque a la hora reportar el error en siguiente link, recibo una respuesta automatica diciendo que no responden, que si quiero una respuesta le mandemos un ticket ( cosa para hacerlo hay que tener una subcripción ).
Al día siguiente de enviar el error recibo una respuesta de Nicolas diciendo:
Before database restoration set:
Allow UTF8MB4 auto-detection : No
Force UTF-8 collation on tables : Yes
Como mi ingles es muy malo , me ayudo de Google y :
Antes conjunto de restauración de base de datos:
Permitir UTF8MB4 detección automática: No
Fuerza UTF-8 de colación en las tablas: Sí
En la nueva restauración que hice probé a cambiar la configuración y fue correctamente.

MUCHÍSIMAS GRACIAS NICOLAS POR CONTESTAR.
Fuentes sobre como trabajar con la session de Joomla
En la documentación de Joomla encuentro el siguiente post:
Marco JFactory::getSession() los envios que hace un usuario de enviar un formulario
La idea es guardar una variable en la sessión los envios de un formulario de una session. ( usuario)
En el metodo submit de nuestro modulo o componente, podemos poner:
$session = JFactory::getSession();
// Comprobamos si la session ya envio el formulario.
if (empty ($session->get('intentos'))
{
// Quiere decir que ya se mando el formulario .
$intentos = $session->get('intentos') + 1;
$session->set('intentos',$intentos);
} else {
$session->set('intentos',1);
}
Hago este post para saber si merece la pena o si hay algo hecho para resolver este problema en el componente multimedia de Joomla.
Explicación problema que veo en componente multimedia.
En la parte administrativa cuando una web quiere organizar las imagenes en varias carpetas esta muy bien, lo que no esta bien es que el componente en el menu izquierdo, el que lista carpetas, que las muestre desplegable todas, ver imagen:
JHtml::tooltip es el metodos que utiliza Clase HTML que nos proporcina Joomla para los "tooltip" , es decir: los elementos visuales que aparece en la pantalla para dar ayuda a la hora de utilizar algún elemento de la página.
En la api de joomla podemos ver la siguiente definicion del método:
Crea un boton con una imagen y con informacion de ayuda.
tooltip(string $tooltip, mixed $title = '', string $image = 'tooltip.png', string $text = '', string $href = '', string $alt = 'Tooltip', string $class = 'hasTooltip') : string
| desde |
1.5 |
|---|
Arguments
- $tooltip
-
(string) Lo queremos que muestre en la ventana emergente
- $title
-
Mixto (string) o (array) Donde podemos poner el titulo de la ventana emergente. Si recibe un array asociativo, pues ya entiende como los otros paramentros, {'title','image','text','href','alt'} , nunca probe con array, tendré que hacerlo :-)
- $image
-
(string) La imagen que hace boton, si no se proporciona ningún texto, entiendo que si proporcionamos texto no muestra la imagen.
Algo a tener en cuenta es que no ponemos la ruta completa la imagen, solo el nombre, joomla por defecto la obtiene de /media/system/images , pero podemos realizar overwrite en nuestra plantilla como indica aquí, aunque tengo que deciros que a mi no me funciono correctemente, según parace tenemos que poner el /nombreplantilla/nombreimagen , aunque esta imagen estes en nombreplantilla/images/system/nombreimagen.
A mi me funciono solo poniendo la imagen en el template/system que trae por defecto joomla.
- $text
-
(string) El texto queremos para tooltip.
- $href
-
(string) La URL queremos linke en caso pulsar en ella.
- $alt
-
(string) El atributo alt de la imagen.
- $class
-
(string) Clase para todo contenedor del tooltip.
Response
string
Con este articulo (post) también sabemos como cambiar los tooltip (images) , por ejemplo cambiar los iconos que trae com_contact (contacto) en los campos telefono, web...
Muchas veces cuando intentamos actualizar Joomla desde la parte administracion de Joomla , pulsamos actualizar y se nos queda en blanco, sin llegar mostranos la barra de proceso de actualizacion, sin indicarnos que sucedió, cual fue el error.
Lo primero es borrar el cache de la pagina desde la parte administrativa. Si aun así sigue fallando, recomiendo ver los parametros de subida de nuestra configuracion de php, ya que la mayoria de las veces es porque tenemos la variables php.ini muy bajas.
upload_max_filesize = 2M
post_max_size = 8M
En la parte administrativa en el menu Sistemas>Informacion Sistema > Informacion php .ini , podéis verlo, pero no podreis cambiarlo.
Os recomiendo poner 10m en las dos variables, asi no tendréis problemas , solo que el paquete que instentas actualizar pesará mas.
En algunas instalaciones que tiene Akeeba y tiene el sistema ( nose como se llama) de realizar una copia de seguridad antes actualizar, recomiendo desactivarlo ya que muchas veces es el causante del problema.
Eso sí, siempre antes de hacer una actualización nosotros recomendamos realizar una copia de la web, porque nunca se sabe si saldrá todo bien.
- Virtuemart - Vender partes de un producto
- Añadir placeholder al formulario de contacto de Joomla
- Instalar paquete en Joomla ( Error)
- Componente GDPR para Joomla
- Crear campo personalizado en producto virtuemart (select)
- Obtener los datos configuracion de tu Joomla
- AwoCoupon Virtuemart
- Extension para enviar newsletter: PhocaEmail

Lee más…