Clicky

WordPress versus Joomla! - Temas

WordPress vs Joomla, temas

Las deficiencias de un CMS pueden ser reducidas con las extensiones disponibles

El proceso de creación de temas para WordPress y Joomla! difiere en muchos lugares, pero también hay muchas características comunes. En esta entrada, nos gustaría presentar las diferencias entre los elementos clave de la arquitectura de las plantillas. Vale la pena señalar que las comparaciones se hacen con respecto a las instalaciones de "barebones"; recuerda, por favor, que la mayoría, si no todas, las deficiencias de un CMS dado pueden ser reducidas o eliminadas en su totalidad con las extensiones disponibles para el CMS.

Código

Una diferencia muy importante entre el código de WordPress y el de Joomla es que la API de WordPress se basa principalmente en la llamada funcional, mientras que Joomla utiliza muy a menudo métodos de objeto. Vale la pena mencionar cómo se utilizan los frameworks. Básicamente, WordPress fuerza el uso del framework jQuery (por supuesto que es posible utilizar otros frameworks, pero no sería el enfoque más adecuado). Joomla! 2.5 utiliza el framework MooTools, mientras que Joomla! 3.x utiliza jQuery, así como el estilo de Bootstrap para controlar los componentes.

Estructura

En WordPress hay algunos archivos necesarios que se deben incluir en la plantilla: style.css y index.php . En el caso de Joomla, teóricamente serían suficientes dos archivos en la plantilla: templateDetails.xml y index.php . El archivo templateDetails.xml es una contraparte más desarrollada del style.css , que además de información de la plantilla contiene una lista de elementos disponibles y la lista de opciones de configuración que se generan automáticamente en el gestor de plantillas. Por lo tanto, si deseas crear rápidamente una opción de configuración de plantilla para Joomla!, es suficiente conocer XML y la sintaxis correcta para crear controles básicos. En WordPress, con excepción de las opciones básicas, se requiere un poco más de trabajo que a menudo exige la creación de tus propias soluciones.

Anteriormente he mencionado sobrescribir el comportamiento predeterminado del CMS - en Joomla! podemos sobrescribir la aparición de componentes de subpáginas a través de los archivos HTML (por ejemplo, para sobrescribir el visor de artículos debemos modificar el archivo html/com_content/article/default.php ). Aquí, podemos almacenar todos los archivos que sobrescribirán los archivos originales en componentes, módulos y Joomla! (aunque es limitado, ya que sólo puede sobrescribir los contenedores y módulos de paginación).

Configuración del tema

En el caso de WordPress, las configuraciones del tema pueden ser almacenadas en la tabla de opciones, o podemos utilizar la API de Modificación de Tema. En Joomla! la configuración de la plantilla se almacena en una tabla diferente: # __template_styles , que está estrechamente vinculada con el contenido de una plantilla de archivo XML. Una desventaja significativa de este enfoque es que en Joomla! los campos de configuración no se pueden crear dinámicamente. Es de destacar que en Joomla, podemos usar muchas plantillas en un sitio - podemos asignar temas a los elementos del menú. Gracias a esto, podemos crear fácilmente una plantilla única para la página principal y otra para el resto de las páginas.

Menú

En el menú de WordPress se genera un elemento del tema cuando se utilizan las funciones correspondientes ( wp_nav_menu ). Cuando se trata de Joomla, el menú es normalmente un módulo adicional que puede ser asignado a páginas específicas.

Coloca los widgets y módulos

En ambos CMSs debemos colocar el código que inserta paneles laterales apropiados o posiciones de módulo. Con WordPress, definimos cada panel lateral junto con todos los parámetros en el código del tema, por lo general en el archivo functions.php. En Joomla!, ciertas características del módulo de posiciones se definen directamente en el archivo que genera el código HTML para las posiciones de módulo, que afecta principalmente a:

•  el tipo de envoltura (container) alrededor de los módulos,
•  los parámetros adicionales que se pasan a la posición apropiada del módulo

Ejemplo de instrucción para las posiciones de los módulos en Joomla!:

<jdoc:include type="modules" name="sidebar" style="none" param="test" />

En este caso, hemos definido la posición del módulo llamado barra lateral (sidebar), que no rodea el módulo con contenedores adicionales (estilo none) y se pasa un parámetro param adicional con el valor de prueba de la función que muestra los módulos.

La barra lateral de WordPress se define por la función register_sidebar y el banner se genera mediante el siguiente código:

<?php dynamic_sidebar( 'sidebar' ); ?>

Vale la pena señalar que el equivalente al conocido container de estilo para módulos en Joomla! son argumentos en las funciones register_sidebar: before_widget, after_widget, before_title y after_title . Aunque, tengo que admitir que no son muy flexibles en este sentido e incluso permiten la transferencia de argumentos adicionales.

Ya que estamos en el tema de los módulos - una solución muy interesante en Joomla! que no tiene contrapartida nativa en WordPress son los CSS de clases de sufijos de módulo (classes module suffixes). Cada módulo permite especificar las clases CSS que se añadirán al contenedor que rodea el módulo definido. Esto nos permite aplicar diferentes estilos CSS para cada módulo.

En los dos CMS podemos comprobar fácilmente si es posible mostrar apropiadamente el bloque de widgets/módulos.

En WordPress tenemos para ello la función: is_active_sidebar

<?php if ( is_active_sidebar( 'sidebar' ) ) : ?> 
// code to the side panel
<?php endif; ?>

Sin embargo, en Joomla! se utiliza el método countModules

<?php if($this->countModules('sidebar') : ?> // code to the module positions

Para los usuarios de WordPress, una función interesante es que el método countModules también permite pruebas más complejas, tales como comprobar si los elementos de la barra lateral y el menú tienen al menos un módulo:

$this->countModules('sidebar and menu')

También se puede comprobar si los elementos de la barra lateral y el menú tienen más de cinco módulos en total:

if ($this->countModules('sidebar + menu') > 5) { ...

Condicionales

Las etiquetas condicionales son bien conocidas y utilizadas con frecuencia por los desarrolladores de WordPress como una manera de ejecutar fragmentos de código en función de la subpágina. En el caso de Joomla! tal solución no existe, pero no había una gran necesidad de hacerlo, ya que cualquier tipo de página secundaria tiene sus propios archivos de vista, en lugar de modificar las condiciones, sólo modificamos los puntos de vista específicos (por lo general al sobrescribir en el directorio html de la plantilla).

Scripts de incrustación y CSS

Tanto Joomla! como WordPress proporcionan métodos de incrustación especiales que se debe utilizar para la incrustación de scripts y archivos CSS - con esta funcionalidad es posible permitir que varios plugins realicen operaciones con estos archivos (por ejemplo, mecanismos de caché).

Para añadirlo en Joomla! antes de llamar al método de secuencias de comandos, tenemos que definir una variable que almacenará el objeto del documento:

$doc = JFactory::getDocument();

Y entonces, podemos usar los siguientes métodos:

$doc->addScript('path.js'); // equivalent of wp_enqueue_script 
$doc->addScriptDeclaration('kod js'); // equivalent of the hooks adding the code to the head
$doc->addStyleSheet('path.css'); // equivalent of wp_enqueue_style
$doc->addStyleDeclaration('kod css'); // equivalent of the hooks adding the code to the head

Como puedes ver, no hay un método para el encolamiento del script y el archivo CSS - que es en mi opinión una gran desventaja en Joomla!, porque a veces no permite la clasificación de los archivos CSS/JS de acuerdo a nuestras necesidades.

Los elementos esenciales de la página

En ambos CMS hay elementos que son necesarios desde el punto de vista flexibilidad de la plantilla (el CMS debe ser capaz de poner el código de las otras extensiones en los lugares adecuados). Cuando se trata de Joomla, es necesario incluir los siguientes fragmentos de código en la plantilla:

<jdoc:include type="head" /> // generates head section tags 
<jdoc:include type="message" /> // generates system alerts for example about the wrong log-in data
<jdoc:include type="component" /> // generates the contents of the current component

o con WordPress:

<?php wp_head(); ?> // generate the content of the head 
<?php wp_footer(); ?> // generate the content of the footer

Relacionado: WordPress vs Joomla! - Nomenclatura

Jesus_Caceres