Componentes
Un Componente también conocida como extensiones, es un programa que insertamos dentro de nuestro Joomla. Sólo puede haber un componente activo por página. Son los elementos más complejos que podemos instalar en Joomla.
Por lo general los componentes tienen dos partes bien diferenciadas la parte BackEnd y otra FrontEnd. En la Administrativa (BackEND) podemos ver sus configuración y más acciones administrativas
Los componentes son las partes software de nuestro portal, que le dan la funcionalidad básica al mismo.
La idea es crear un repositorio espejo en GitHub del repositorio OFICIAL 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
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.
Para poder sincronizar con svn de forma manual, al tener añadir en config el svn-repo simplemente tiene que ejecutar:
git svn fetch
Ahora solo queda hacer un rebase para actualice. Yo lo hago en la rama svn que tengo creada.
git svn rebase
Luego solo te queda actualizar en git tus ramas... jejej
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:
Si dejo la version en rojo (la anterior) , funciona perfectamente.
Bueno, creare un tema en foro de virtuemart, a ver que me comentas.
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.
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.
En un proyecto que acabamos realizar ( superoliva.es ) , el cliente tiene productos que su precios que son por KILO y se venden por gramos o kilos el producto.
La solucion ideal sería hacer un plugin para virtuemart que cambiara el importe del producto una vez selecciones una cantidad de gramos.
NOTA: Nos dimos cuenta que virtuemart no permite decimales en la entrada de un pedido, tiene que ser entero.
Nuestra solución para poder vender gramos de un producto.
La solucion mas sencilla , no la ideal, pero siempre nos aptamos al presupuesto, es utilizar el plugin de trae virtuemart de campos personalizados, creamos uno de tipo cadena , y una vez guardado lo configuramos para el precio del producto se recalcule -% .
Para configurar el plugin tipo cadena para utilice un porcentaje, se hace una vez guardado el campo personalizado.
Al editarlo en el campo multiply podemos utilizar : base_productprice o base_variantprice
Este ultimo es el que utilizamos.
Antiguo:
Ya no utilizo este componente, ahora utilizo el componente que trae integrado directamente Joomla , muy bueno y practico. Sin tener que pagar y además se actualiza con el core de joomla directamente.
Ayuda de como usar el componente privacidad de Joomla en la pagina oficial de Joomla
Con el cambio de ley de LOPD en españa el 25 mayo 2018, no pusimos a buscar soluciones para nuestros cliente que cubran todos los aspectos legales que pide esta ley.
Encontramos la extensión creada por Joomla! Extensions Store -> GDPR. Link a descarga extension .La instalamos para probar su potencial, de inicio me encuentro que solo tiene los idiomas de ingles y italiano, por lo que hago una traduccion language al español, un poco chafa... :-)
Link a github donde tengo los paquetes laguage en español de extension GDPR
Mirar que pinta.
- Crear campo personalizado en producto virtuemart (select)
- AwoCoupon Virtuemart
- Extension para enviar newsletter: PhocaEmail
- ¿ Donde guarda los carritos sin confirmar virtuemart ?
- Preguntas sobre la gestión de usuario de Joomla y Virtuemart
- Mostrar buscador joomla en vista determinada
- Overrite Modulo Virtuemart Productos
- Comentarios en productos en Virtuemart