Componentes

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.

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:

 

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

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.

Captura de pantalla de 2019 02 27 09 48 47

 

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.

configuracion error 640 akeeba

MUCHÍSIMAS GRACIAS NICOLAS POR CONTESTAR.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

El objetivo de esta entrada, es anotar un poco los cambios de css que ponemos para centrar la images de la galeria phocagallery en nuestras plantillas.

Conseguir que si mostramos varias fotos por columnas, que estas cuando no llenen la plantilla que se centren en ella.

centrarImagenPhocagallery

A veces , cuando las imagenes metemos , son demasiado grandes, nos deja un espacio a la derecha o incluso centrar las imagenes de la ultima fila, como se enseña en la imagen.

Lo podemos hacer es sobreescribir el css que genera el componente.

1.- Localiza la capa contendora de las imagenes, en la version actual es:

pg-msnr-container

y añadimos al css de nuestra plantilla:

  #pg-msnr-container {
margin: 0 auto;
text-align: center;
}

Luego buscamos el contenedor ( capa ) de cada imagen

.pg-cv-box{
float: none; /* Para eliminar el que traer left */
display: inline-block;
}

Bueno, lo siento por no explicar más , espero que valga de ayuda, a nosotros no sirve recordatorio...

Cualquier duda , podéis informanos en contactar.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

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.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Requisitos:  (en Front-end, site --> views o models)

1. En el .xml de la vista en el tmpl, podemos cambiar el titulo de la vista del item menu , donde 

<layout title="COM_MYRSSREADER_VIEW_TITLE"> sería:

<layout title="nuevaVistaDeItemMenu">

2. Nombre de la carpeta de la vista se usa en las clases creadas en :

vista creada: nuevorss

la vista  : view.html.php --> class LectorViewNuevorss extends JView

el models :  --> class LectorModelNuevorss extends JModel

 3. Palabra PROHIBIDA: Usar MODELO! Si lo usas como nombre de la carpeta de la vista te dara un error y no te funcionará el componente.

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Los componente de Phoca.cz son siempre una excelente opción.

Hoy toca integrar phoca-email aun web, después de hora probando otros me decidí por este componente ya que hace lo que buscabamos y de momento no necesitamos más.

El phoca.cz es que creo que algunos patrones que utiliza Joomla se lo pasa a la bartola, pero no puedo hablar mucho ya que hasta ahora no hemos tocado mucho este componente, para ponernos a críticarlo.

CODIGOS A PONER EN EL NEWSLETTER.

 

  • {name} - será reemplazado por nombre de usuario
  • {email} - será reemplazado por correo electrónico del usuario
  • {sitename} - será reemplazado por el nombre del sitio web - se puede configurar en las opciones
  • {subscriptionname} - será reemplazado por el nombre de la suscripción - se puede configurar en las opciones,, no se realmente para que se pone.
  • {activationlink} - Es el enlace para la activación - Si queremos indicar texto debemos ponerlo dentro href="/{activationlink}
  • {unsubscribelink} - Es el enlace cancelacion subcripción, al igual que anterior
  • {articlelink} - será reemplazado por el enlace a un artículo específico fijado en opciones del boletín
  • {readonlinelink} - Enlace a ver lo on-line, ejemplo:
    <a href="{readonlinelink}">haga clicl para verlo onlinea</a>

Explicacion de los campos de la tabla prefijo_phocaemail_subscribers.

Campos:

  • `name`: El nombre que puso en el campo name.
  • `email`: El email con el se hizo subscriptor del boletin.
  • `token`: Token que genera cuando uno se subscribe, se utiliza para montar los links activacion y desactivacion.
  • `published`: Estado de publicado (1) o despublicado (0), esta opción no comprobe exactamente para que lo utiliza:
        -Si manda o no email
        -Si permite link a ver noticia directamente o no ..{readonlinelink}
        ...
  • `active`: Indica si está activo y puede estar en:
      1. valor 0 : Se subscribio pero aun no activo
      2. valor 1 : Activo
      3. valor 2 : Cancelo la subscripción.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Para que el cliente suba las imagenes a una categoría creada desde administrador

cuando se crea una categoria en phocagallery para que el cliente suba las fotos... debo en dicha categoria DAR PERMISOS (una vez logueado pueda subir fotos) en opc. Derechos de acceso y subir derechos → todos los usuarios.

 

Config. general

 config-vista-categorias-phoca-galleryconfig-vista-categorias-phoca-gallery2

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

1. crear archivo filter_xxx.xml (models/forms/filter_versions.xml)

  1.  campo buscar
    1. name="search"
    2. class="js-stools-search-string"
  2.  campo personalizado
    1. name="filtroMarcas"
    2. type="filtroMarcas"
    3. onchange="this.form.submit();"

De esta forma añado un buscador simple y bton herramientas busqueda donde puedo encontrar los campos personalizados, como campo de entrada vacia. (por el momento)

Si creamos otro archivo: ej. filtroMarcas.php (models/fields/filtroMarcas.php) es donde relacionamos el campo personalizado creado anteriormente.

2. Se crea archivo filtroMarcas.php (models/fields/filtroMarca.php)

Opcional: solo es necesario cuando hay Campos personalizados -----------------------------

Campo personalizado, si es buscador solo no es necesario hacer esto.

  1.  class JformFieldFiltroMarcas extends JFormFieldList
  2.  protected $type='filtroMarcas'
  3. funcion getOptions() --> hacer query, listar, y dejar seleccionada la opc.
    1. Con ... foreach {
    2. $tmp = Jhtml::_('select.option', $item->id, $item->nombre);
    3. $options[] = $tmp
    4. }
  4. funcion getOptionsExternally() : Metodo para obtener una lista de opc para una entrada de la lista de forma externa y no de XML.

--------------------------------------------------------------------------------------------------------------!

3. Añadir lineas en view.html.php views/nodelos/view.html.php

  1. en funcion display()
    1.  $this->filterForm = $this->get('FilterForm');
    2.  $this->activeFilters = $this->get('ActiveFilters');

4. Añadir herramientas de busqueda default.php views/nodelos/tmpl/default.php

  1. <?php
    1. echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));
  2. ?>

5. Añadir 3 funciones en marcas.php (models/marcas.php)

query de lo que queremos que haga el filtro de busqueda...

  1.  __construct ($config=array()) establece campos de filtro
  2.  populateState ($ord=null, $dir=null) obtener y establecer los valores actuales de los filtro.
  3.  getListQuery() usar los valores de filtro actuales para modificar la consulta.

 

 

Vista Version

crear

  1.  models/forms/filter_versions.xml
  2.  models/fields/filtroVersions.php (campo personalizdo)

modificar:

  1.  views/versions/view.html.php
  2.  views/versions/tmpl/default.php
  3.  models/versions.php

 

Crear campo personalizado NUEVO

  1.  crear models/fields/filtroVersions.php (campo personalizdo)
  2.  crear campos en vista del filtro de la vista donde quiero mostrarlo . ej. Vista versiones, xml -> filter_versions.xml. models/forms/filter_versions.xml
  3.  modificar o añadir query para filtrar bien la busqueda models/versions.php

Para que aparezca buscador

  1.  crear                models/forms/filter_marcas.xml                en principio sin campos personalizados
  2.  añadir lineas     views/marcas/view.html.php
  3.  añadir lineas     views/marcas/tmpl/default.php
  4.  añadir query     models/marcas.php

**Me base en com_content/articles

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado

Joomla - Formulario de Contacto

Joomla trae por defecto el componente de contacto, en el cual podemos crear contactos, clasificarlos por categorias y incluso crear campo para añadir.

Este componente tiene bastante opciones y cosas interesantes con mucho potencial,  pero ahora nos vamos centrar en el formulario que podemos mostrar en el Front-End. Un formulario que simplemente configurando en el componente sa se muestra.

Recuerda que  el campo de email en un contacto debe tener datos sino el formulario de contacto no se mostrara. No tiene porque mostrarlo, ya que sin él la web no te puede mandar un email diciendo que cubrieron el formulario.. :-)

Los campos que muestrar el formulario son:

  • Nombre
  • Correo electronico
  • Asunto
  • Mensaje.

Estos campo por defecto suelen ser suficientes para muchas webs, pero a veces queremos tener mas campos.

Desde la version 3.5 Joomla permite crear campos a mayores en la mayoria de los componentes nativos, por ello en el  componente contactos también.

De momento la pruebas que realice creando algún campo en este componente no fui capaz de añadirlos al formulario de forma interactiva.

 Necesidad de crear un campo a mayores en el formulario.

Seguramente muchas veces os hizo falta añadir campos a mayores al formulario de contacto que trae joomla por defecto, como por ejemlo : Pedir el telefono a la hora cubrir el formulario.

Hay varios sitios interesantes donde nos indican como hacerlos si tenemos conocimiento de php y html, donde podremos hacer overwrite del componente contactos y ahi empezar desarrollar nuestra imaginacion:

Los ficheros que debemos utilizar ( recuerda hacer overwrite en tu plantilla )

    • components\com_contact\views\contact\tmpl\default_form.php ( overwrite plantilla )
    • components\com_contact\models\forms\contact.xml ( overwrite plantilla )
    • language\es-Es\es-ES.com_contact ( No lo tocaría nunca)
    • components\com_contact\controllers\contact.php ( No lo tocaría nunca)

 

Otras maneras añadir mas campos:

 Utilizando extensiones , modulos o plugins de terceros. Os recomiendo que provéis nuestro modulo formulario, desarrollado por nosotros y gratuito, el cual consiste un modulo sencillo con algunos campos mas.

- Modulo de formulario

Este modulo lo tenemos operativo en varias web en produccion, donde lo tenemos testeado y con filtros de spam. Cualquier duda o necesidad en este modulo (formulario) comentalo y veremos lo que puede hacer.