CMS

Nos enfocaremos en los CMS más populares programados en PHP, como Joomla, Wordpress, Drupal y Prestashop, que utilizan HTML, CSS, JavaScript y PHP con alguna otras bibliotecas.
Si buscas un programador de cms te puedo ayudar esta entrada.
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.
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.
Muchas veces nos puede hacer falta cambiar el formulario de contacto del componente que no facilita Joomla ( Contact ).

Recordar que es hacer overwrite de este componente en nuestra plantilla, los ficheros que encontramos Nuestrotemplate/html/com_contact/contact/default_form.php
En un cliente que gestionamos, al pinchar en el instalador, ponemos imagen de como nos debería aparecer:

Pero lo que nos aparece es:

Como se puede ver en la imagen, solo tenemos la pestaña "Instalar desde la Web", nos dice que tenemos que habilitar algún plugin de instalación.

Pero realmente estan activos.
¿ Posible causa ?
Para saber cual es la causa nos tenemos retomar a copias anteriores para poder saber cuando se produce el error.
Llegamos a la copia en la que actualizamos hacer ya muchos meses:
Hay una actualización disponible para Joomla.
Está en el canal de actualización "Predeterminado" - Mediante este canal va a recibir notificaciones para todas las actualizaciones de la liberación actual de Joomla (3.x)
| Versión de Joomla instalada | 3.5.1 | 
| Última versión de Joomla. | 3.6.5 | 
| URL del paquete de actualización | https://downloads.joomla.org/cms/joomla3/3-6-5/Joomla_3.6.5-Stable-Update_Package.zip | 
| Información adicional | Joomla! | 
Ahí el instalador estaba correcto...
Actualizamos a la version que nos indica, pero nos damos cuenta que no pide que confirmemos el usuario y la contraseña, efectivamente ahí fue el problema, en ese momento no disponiamos de la contraseña de ese usuario o no lo tomo correctamente.
No sabemos muy bien porque, pero recordamos que hicimos un reseteo de la contraseña desde la bases datos y pusimos la funcion MD5 en la contraseña y nos dejo entrar en el administrador.
Pero realmente no identificaba la contraseña... ¡¡ Algo extraño !!
¿Como lo solucionamos ?
Obteniendo una copia anterior en la que no estaba el error, como esa web, con suerte no tiene cambios, podemos restaurar copia y hacer actualizaciones correctas..
Y volver a ponerlas en produccion.
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.
                        