Personalizar módulos y componentes con Template Override
Joomla - Programación
Escrito por Alejandro Domínguez   
Sábado, 07 de Febrero de 2009 14:00

Template override es una técnica para redefinir la forma de representación en pantalla de un componente o módulo de Joomla. Esta funcionalidad se incluyó a partir del Joomla 1.5. El objetivo principal de esta técnica es permitir actualizar Joomla sin tener que preocuparse de que se vean afectados los cambios realizados previamente para personalizar el portal. Un ejemplo de posible aplicación de esta técnica consiste en personalizar la salida de un determinado módulo  o componente para conseguir cumplir los niveles de accesibilidad o el estándar XHTML.

¿Cómo funciona template override?

Cada vez que Joomla genera una página web mira en la plantilla que está usando el sitio web para ver si tiene un redefinición de algunos de los componentes o módulos empleados. Si encuentra que se ha redefinido un componente o modulo se usa su redefinición, en caso contrario usa el que está definido en el core.

Un ejemplo de template override

El módulo de búsqueda de Joomla mod_search no cumple la accesibilidad cuando se establece que el botón que se pulsa para iniciar la búsqueda sea una imagen. Esto se debe a que el diseñador de este módulo olvidó incluir la etiqueta ALT=”Descripción de la imagen”. Para hacer que este módulo de Joomla cumpla la accesibilidad y que no se vea afectado en futuras actualizaciones se utiliza template override. Para usar esta técnica en la plantilla se debe crear una carpeta con el nombre “html”. La ruta de esa carpeta debe ser de la forma ..\templates\nombreplantilla\html\ , en ella se guardan las redefiniciones de los módulos y componentes.

Para redefinir un módulo o componente se debe copiar el contenido de su carpeta tmpl. Pegar esos archivos en ..\templates\nombreplantilla\html\XXX , siendo XXX el nombre del módulo o componente. Ahora solo queda modificar esos archivos para obtener el comportamiento deseado.

En el caso de mod_search se copian los archivos default.php e index.html en la ..\templates\nombreplantilla\html\mod_search. Para que cumpla la accesibilidad la línea 10 se debe añadir la etiqueta ALT, como se muestra a continuación:

 

10
11
$button = '<input type="image" value="'.$button_text.'"
class="button'
.$moduleclass_sfx.'" alt="botón buscar" src="'.$img.'"/>';

Si visualizamos en el navegador se puede observar que el código del core se ha reemplazado por el código que se ha redefinido empleando template override.

Comments

avatar Antonio J. Garcia
0
 
 
hola, he probado a hacer lo que pones en el ejemplo, he cambiado la imagen del boton, en src="/template/images/imagen.PNG" , y en local si que me va, pero a la hora de subir la plantilla al servidor no carga la imagen.
Si he puesto en el TemplateDetails correctamente el nombre y direccion de la imagen, ese problema ya lo tuve.
Y las opciones del back-end del modulo de busqueda los tengo igual en los 2 casos, "boton de busqueda" y "usar imagen como botón" a "si" ambos.
Estoy un poco desesperado porque necesito saber hacer esos cambios y nose porque puede ser, a modo de orientacion para si me puedes corregir te cuento ya por terminar, que al ver el codigo fuente de la página en local, en la parte de buscar si que me ha cargado correctamente los cambios que he puesto en mi plantilla y en el del servido el codigo fuente sigue siendo el de por defecto, no carga el de mi carpeta /html/mod_search/default.php
Agradeceria un monton una respuesta, gracias por adelantado y un saludo.
avatar Alejandro Domínguez
0
 
 
Me comentas que has incluido la imagen en el template details, pero ¿te has acordado de incluir los archivos del override? Si no lo has incluido el instalador de Joomla los ignorará y no los copiará cuando realizas la instalación de la plantilla.
Tienes que añadir unas líneas parecidas a estas:

Quote:

html/mod_search/default.php
html/mod_search/index.html


Espero que esto te solucione el problemilla!
avatar inot
0
 
 
Bueno eso era parte del problema, se me olvidó incluirlos, pero sigue sin hacerme caso, sigo intentando modificar el del ejemplo que pones y el del componente de contactos y no hay manera...nose,por ejemplo en "components\com_contact\views\contact\tmpl", lo que hay dentro lo tengo que copiar dentro de una jerarquía de carpetas que empieza en "html...", si me pudieras decir cómo quedaría exactamente, porque lo que modifico en un default.php si que hace "cambios" en local, y en templateDetails tengo la ruta de todos los ficheros bien, y no lo consigo, si se te ocurre algún error (por más tonto que te pueda parecer) coméntamelo también.
Un saludo y gracias por la contestación anterior.
avatar Alejandro Domínguez
0
 
 
la ruta para com_contact es algo parecido a esto:

Quote:


html/com_contact/category/archivos
html/com_contact/contact/archivos
html/com_contact/index.html


En el template Beez vienen muchos overrides que te pueden servir de ejemplo.
avatar inot
0
 
 
Ya he conseguido que carge la imagen de buscar, asique espero que haciéndolo parecido funcione todo, asique ya no hace falta solución (para eso), gracias y ya te preguntaré algo más o sino ya pondré mis futuras en web en vuestro foro, un saludo!

Por favor identificate para poder comentar esta noticia. Si lo que quieres escribir es una consulta técnica por favor dirigete al FORO y es posible que alli ya se encuentre resuelta.
 
Suscríbete al feed de Ayuda Joomla