Translate

domingo, 23 de noviembre de 2014

JOOMLA. MODIFICAR LA SECCIÓN DEL HEAD DESDE EL CÓDIGO DE UN COMPONENTE





La sección head de toda página web es de suma importancia, no solamente por que en ella solemos insertar o enlazar el código CSS y de scripts típicos (como JavaScript), sino que además los datos que contenga puede tener bastante relevancia en lo que a SEO se refiere.

Normalmente insertamos la cabecera utilizando el siguiente código:
1:   <jdoc:include type="head" />

La anterior línea carga el fichero libraries/joomla/document/html/renderer/head.php que contiene los métodos que procesan la sección head y devuelven el código HTML generado.

Ese mismo código HTML lo podemos obtener con:
1:   $doc = JFactory::getDocument();
2:   $datosSeccionHead = $doc->getHeadData();

Pero si lo que queremos es modificar esa sección desde un componente, la cosa se complica un poco si no conocemos lo que Joomla pone a nuestra disposición para realizar esta tarea. Para toda modificación, el método de la clase estática JFactory::getDocument(), nos proveerá de todo lo necesario. Para los siguientes ejemplos, seguiremos usando el ejemplo del código anterior.

Cambiar el título de la página dependiendo de la lógica del componente

El método setTitle("") nos permitirá modificar el título:
1:   $doc->setTitle("Nuevo título para esta página");

Añadir estilos CSS dependiendo de la lógica del componente

El enlace a un fichero de reglas de estilos CSS lo hacemos con:
1:   $doc->addStyleSheet("$RUTA-FICHERO-CSS/FICHERO.CSS");

Si solamente queremos añadir unas reglas pero no un fichero completo:
1:   $doc->addStyleDeclaration(".miClaseCSS{background-color:#0000ff;}");

Añadir código JavaScript dependiendo de la lógica del componente

Podemos enlazar un fichero:
1:   $doc->addScript("$RUTA-FICHERO-JS/FICHERO.JS");
O bien simplemente añadir un poco de JavaScript:
1:   $doc->addScriptDeclaration("alert('Conseguido')");

La insercción de ficheros CSS y de script, las podemos hacer también, usando el objeto JHTML:
1:   JHTML::stylesheet('fichero.css', 'ruta-al-fichero');
2:   JHTML::script('fichero.js', 'ruta-al-fichero');

Modificando los metatags dependiendo de la lógica del componente

Desde que los metatags o etiquetas <meta ... /> no son tan relevantes en el posicionamiento SEO, su uso se ha quedado un tanto olvidado. Si miramos el código fuente de una web, es probable que nos encontremos con una etiqueta meta del tipo:

<meta name="generator" content="Geany" /> ...

... donde se está indicando el software que ha generado el código de la página. Sin embargo sus usos pueden ser muchos y variados, desde redirecciones automáticas de la página, hasta usar las etiquetas meta sugeridas por Facebook que nos permiten compartir nuestros contenidos en su red social.

Joomla pone a nuestra disposición una funcionalidad mediante la cual podemos insertar etiquetas meta. Para ello nos vamos al área de administración y una vez dentro, vamos a [Sitio -> Configuración global En Joomla! 2.5] o [Sistema -> Configuración global En Joomla! 3.0]. Nos vamos al apartado donde dice [Configuración de los metadatos] y una vez allí, insertamos las metatags que estimemos oportuno.

En la práctica, lo cierto es que frecuentemente necesitamos una manera dinámica de establecer estos metatags.

Quitar el metatag "generator" puesto por defecto por Joomla:
1:   $doc->setGenerator(); // Lo ponemos vacío, sin argumentos.

Otros metatags también tienen su propio método para cambiarlos o establecerlos:
1:   $doc->setDescription("Este el meta description de la página");

Pero si no dispone de método propio, usamos setMetaData():
1:   $doc->setMetaData("author", "José Manuel Domínguez");

Los metas formados de esta manera son los típicos que contienen los atributos name y content. Si queremos que el resultado sea un meta con atributo http-equiv, tendremos que usar el mismo método pero con un argumento más:
1:   $doc->setMetaData("content-type", "text/html; charset=UTF-8", true);
// El tercer argumento indica si es un meta con el atributo http-equiv

Finalmente, debemos tener en cuenta que existen metatags que no corresponden a los estándares, sino que deben ser añadidos para la correcta ejecución de lógica de terceros (como scripts de Facebook por ejemplo):
1:   $doc->addCustomTag('<meta property="og:description" content="Curso Joomla" />');

Eso es todo. Recordad que toda esta información y más, forma parte de los cursos que ofrecemos de Joomla.

Espero que este artículo os sea de utilidad y como reencuentro con la actividad del blog que no he podido atender por falta de tiempo, durante una temporada que ya se hacía larga.

Un cordial saludo a todos y hasta otra.