Abel Martínez

Cómo funciona MODX

Editado el 23-05-2020 a las 13:20:56

En este artículo, veremos las distintas partes de MODX y cómo funcionan juntas para permitirte administrar sitios web. En artículos siguientes, mostraremos la mecánica de uso del Administrador de MODX y los detalles de las distintas partes de MODX, como recursos web, elementos de contenido y archivos. Este capítulo es sólo para mojarse los pies, introducir estos elementos y darte una idea general de cómo MODX hace su trabajo.

El uso de un sistema de gestión de contenido (CMS) es bastante diferente de crear páginas web y vincularlas para crear un sitio. Conocer un CMS exige un tiempo de aprendizaje, y en el caso de uno tan flexible y potente como MODX, aún más. Sin embargo, el tiempo que pases familiarizándote con MODX, será recompensado con creces. Con ello conseguirás que el mantenimiento de tus sitios web sea más fácil y rápido. También te permitirá crear fácilmente funcionalidades avanzadas en tus sitios web, que resultarían extremadamente difíciles y costosas de producir sin un respaldo de CMS.

Mientras que muchas plataformas de CMS hacen la vida fácil restringiendo severamente lo que puedes hacer (con plantillas estructuradas, componentes dificiles de modificar, codificación de nombres de entidad y directorio, etc, etc), MODX hace exactamente lo contrario. Dejar que los usuarios hagan lo que quieran es una meta principal del equipo de desarrollo de MODX. Sin embargo, la flexibilidad y la libertad de MODX tiene un precio. Debido a que hay menos reglas, es más difícil saber cómo resolver cualquier problema. Digamos que es un poco más fácil "meter la pata".

LA BASE DE DATOS MODX

Si llegas a MODX desde otro Sistema de Gestión de Contenido (CMS), como Drupal o Joomla , probablemente ya tienes un cierto conocimiento de cómo trabajan estos sistemas . En cambio, si estás acostumbrado a trabajar en (X) HTML y CSS, es posible que no sepas cómo un CMS como MODX almacena y presenta el contenido de un sitio .

Los nuevos usuarios de MODX, a veces, instalan un sitio de demostración de MODX y luego buscan (sin éxito) archivos de páginas HTML. La razón por la que no encuentran los archivos HTML es que MODX, como la mayoría de las otras plataformas CMS, almacena la páginas en una base de datos MySQL o Microsoft SQL (aunque MODX podrá utilizar una gran variedad de plataformas de bases de datos y almacenar recursos web y elementos de contenido en archivos, en lugar de la base de datos, si lo deseas).

Cuando un usuario visite tus páginas, MODX obtendrá la información que necesita la página solicitada de la base de datos, la ensamblará, y la envíará al Navegador del usuario para su visualización. Todo esto sucede "entre bastidores". Muchos usuarios de MODX crean sitios sin tratar nunca con la base de datos y los procesos de guardado y recuperación de información. Sin embargo, para sacarle el mejor partido a MODX, querrás aprender cómo funcionan algunos de estos procesos "en la trastienda". Por ahora, sólo diremos que crearás recursos web (la mayoría de los cuales serán documentos) en el Administrador de MODX (también llamado el back-end) y los guardarás.

Cuando un usuario visite una página web en concreto, en tu sitio, MODX recuperará el contenido apropiado y lo enviará al Navegador. Le pueden suceder muchas cosas a ese Contenido antes de que el usuario lo vea, pero llegaremos a ello más adelante.

Primero, veamos las diferencias entre MODX y sus componentes complementarios y entre el Administrador (backend) y el frontal (frontend) de un sitio MODX.

MODX Y COMPONENTES DE TERCEROS

El equipo de desarrollo de MODX Revolution ha hecho un gran esfuerzo en separar MODX de los componentes aportados por otros, que sirven para agregar o extender funcionalidades de MODX. Una serie de componentes de terceros (también llamados complementos, 3PCs, extras, o simplemente componentes) se distribuyeron e instalaron en versiones anteriores de MODX como ayuda para los usuarios. Añadieron funciones como menús personalizados, visualización de contenido agregado, editores de texto, galerías de fotos, etc. A menudo, se suponía que éstas eran parte del propio MODX, y cuando se producían problemas, la gente se quejaba de errores en MODX, y los desarrolladores del núcleo tenían que explicar, una y otra vez, que estos no eran parte de MODX.

Con MODX Revolution y versiones futuras, el paquete de instalación solo instalará MODX. Este incluye sólo tres directorios: /core, /connectors y /manager ( tambien estará presente al principio un directorio /setup, pero normalmente se eliminará después de una instalación correcta). Los usuarios también son libres de mover y cambiar el nombre de los tres directorios si lo desean, o incluso de instalar un administrador diferente o personalizado para administrar sus sitios.

Una vez que se haya completado la instalación de la base MODX, podrás agregar fácilmente los componentes de terceros que satisfagan tus necesidades. Esto ayuda a que tu sitio MODX no se cargue con componentes que no necesites. El proceso de descarga e instalación de los componentes se realiza en el Administrador (Manager), desde donde se puede acceder a una gran cantidad de ellos, descargarlos e instalarlos con unos pocos clics del ratón.

Se agregan constantemente nuevos componentes y se lanzan nuevas versiones de los ya existentes. Es muy sencillo examinar el repositorio desde el Administrador e instalar o actualizar los componentes que nos interesen. Otra ventaja de mantener separada la instalación base, de los componentes de terceros, es que la instalación base puede permanecer "pura". Esta no se verá afectada por la instalación o actualización de los componentes y viceversa. Actualizar la instalación base a una nueva versión de MODX, es poco probable que afecte a los componentes instalados.

El FRONT END Y EL BACK END

Como la gran mayoría de sistemas de manejo de contenido, MODX está formado por dos partes básicas. Una parte es la que los visitantes del sitio verán en su navegador, comunmente llamada Front End, y la otra , llamada Back End, Manager ó Panel de Administración, solo será accesible a administradores y editores del sitio.

El Manager de MODX (o Back End) es donde se realiza el trabajo principal de construcción y manejo del sitio web. En el Manager, puedes crear y editar contenido. Además, puedes realizar una gran variedad de tareas administrativas, tales como crear usuarios y controlar lo que estos usuarios pueden hacer y ver en el sitio. Puedes crear usuarios administrativos, que podrán compartir la carga de trabajo contigo. También puedes crear y editar cualquiera de los diversos objetos de MODX, como recursos (incluidos documentos), plantillas, variables de plantilla, fragmentos de código (snippets), trozos (chunks), complementos, idiomas, espacios de nombres, categorías, conjuntos de propiedades, configuraciones del sistema, etc.

La lista de objetos MODX suele ser desalentadora para los recién llegados a MODX, pero cada uno de ellos tiene un papel que jugar en el desarrollo de tu sitio, y juntos, te dejarán hacer cosas con tu sitio que nunca pensaste que fueran posibles. Además, harán tu vida como desarrollador web mucho más fácil y productiva. Más adelante explicaré cada uno de ellos en profundidad .

El Front End es la parte que verán los visitantes de tu sitio web. Puedes crear partes de tu sitio que sólo puedan ver aquellos usuarios que estén registrados y acreditados, pero después de entrar en el sistema (login), seguirán estando en el Front End del sitio. Dependiendo de cómo ajustes las cosas, los usuarios del Front End podrían editar contenido del sitio, e incluso realizar tareas administrativas, pero la diferencia clave con un Administrador, es que no estarían dentro del Manager (Back End). Por ser así, lo que puedan hacer estará estrictamente limitado, a menos que implementes código que expresamente se salte las restricciones. Esto protege la seguridad en tu sitio. Además, posibilita que los usuarios contribuyan sin necesidad de aprendizaje del interface del Manager.

Si se necesita que ciertos usuarios realicen ciertas tareas administrativas, pero no se les quiere intimidar con la complejidad del Manager de MODX, existen dos opciones. Se puede customizar el Manager para un grupo determinado de usuarios, simplificándolo mediante la ocultación de partes del mismo, o se pueden installar o crear componentes añadidos (extras o add-ons) que les permitan realizar tareas concretas desde el Front End del sitio.

BLOQUES BÁSICOS DE CONSTRUCCIÓN EN MODX

Los bloques básicos de construcción de un sitio MODX son:

Recursos web:
Documentos, weblinks, symlinks y recursos estáticos.
Elementos de contenido:
Plantillas, variables de plantilla, chunks(trozos),snippets y plugins.
Archivos:
Simples archivos html, pdf, etc.

Veremos cómo administrar estas cosas con más profundidad más adelante, pero primero, echemos un breve vistazo a lo que son.

Recursos Web

Crear recurso en el árbol del Manager de MODX

Llamados a menudo simplemente Recursos, son la manera más fácil de definir los objetos de MODX: son simplemente "cosas" a las que se puede acceder mediante una dirección URL.

Los Recursos Web comunmente más usados en MODX son, con diferencia, los documentos. De hecho, el documento es el tipo de recurso por defecto. Muchos usuarios de MODX nunca llegan a crear un symlink, weblink ó recurso estático, pero crearán montones de documentos. La manera más conveniente de crear un Recurso es hacer click en el botón derecho de ratón en un punto del árbol de recursos, (que aparece en la pestaña Recursos situada en el lado izquierdo del Manager) y posicionando el puntero sobre "Crear". Esto desplegará un menú con las siguientes opciones:

Pinchando cualquiera de esas opciones abrirá el panel Crear/Editar Recurso, en la parte derecha del Manager. Este mostrará varios campos y varias pestañas con otros, para crear o editar el recurso. Lo veremos en detalle más adelante.

Hay otras formas de crear un nuevo Documento en Modx. Desde el menú superior del Manager, abriendo el submenú de Contenido > Recurso Nuevo. También desde un pequeño icono en la parte superior del arbol de recursos. Haciéndolo desde ahí, creará el recurso en el nivel superior del arbol de recursos.

Documentos

Antes de entrar en detalles acerca de los Documentos, vamos a destacar una distinción importante entre Documento y Página Web, que confunde a muchos nuevos usuarios de MODX.

En MODX, una página web es lo que el usuario ve en la ventana del explorador en un momento dado cuando visita el sitio. La página es mostrada por el explorador basándose en la información que le envía MODX. Esa página web puede involucrar a todos y cada uno de los bloques de construcción básicos que enumerados al principio, aunque los visitantes no sabrán esto porque todo lo que ven es la representación final.

Un documento, por otro lado, es un objeto específico de MODX, creado en el Manager de MODX. Si has usado un programa de procesamiento de textos como Microsoft Word, ya has creado documentos. Esos documentos tendrían un título, algo de contenido, una fecha de creación, un autor, etc. Los documentos en MODX son muy similares, pero están adaptados para uso en páginas web. Por ejemplo, tienen más de un título. Hay un título corto (Título), un título más largo, a menudo utilizado como encabezado de página (Título largo), un título para su uso en menús (Título del menú) y un título para usar en la URL que enlace al documento (Alias).

Estas características de un documento MODX se llaman "Campos de recurso" ("resource fields"),y entre ellos también están un campo Plantilla, uno de Fecha de Publicación y/o Anular la publicación en una fecha, una Descripción, un Resumen, etc. Algunos de estos campos de recurso pueden estar en blanco, pero el documento sigue teniéndolos.

Otra distinción que debemos mencionar es que, muchos de los Campos de Recurso pueden ser conocidos por dos nombres. Uno es el nombre real del campo en la base de datos de MODX y es el que se debe usar en el código o en las etiquetas de MODX (más sobre ellas más adelante). El otro es el nombre general para el campo, generalmente tomado del panel para Crear/Editar recursos, en el Manager, donde realmente rellenas los valores para los campos del recurso.

Detalle de Panel editar/crear Recurso en MODX.
Detalle de Panel editar/crear Recurso en MODX.

Por ejemplo, en el panel Crear/Editar Recurso se hace referencia a un campo "Resumen", pero este establece el valor del campo introtexto en la base de datos de MODX. Cuando hablemos del nombre general para el campo, usaremos la fuente regular y mayúscula la primera letra de cada palabra en el nombre del campo (Resumen, Título del menú, Título largo). Cuando hablemos del campo específico en la base de datos, usaremos negrita, minúsculas y una fuente diferente (introtexto, menutitle, longtitle). No hay letras mayúsculas en ningún nombre de campo de la base de datos. Esta diferencia no parece muy importante ahora, pero será crítica cuando hablemos de establecer estos campos en artículos posteriores.

En los artículos sobre MODX en este sitio web, haremos referencia a menudo a los documentos como recursos (lo cuál son). El documento es el tipo de recurso por defecto y el más usado, pero no es el único. Weblinks, Simlinks y Recursos estáticos también son recursos. Resumiendo, todos los documentos son recursos, pero no todos los recursos son documentos.

Cuando los usuarios visitan una página web en un sitio MODX, la URL que están visitando está asociada con un solo documento. Sin embargo, la página web no solo muestra el contenido de dicho documento. Por lo general, también mostrará otro contenido incrustado en la plantilla (template) asociada a ese documento (discutiremos las plantillas a continuación). También puede mostrar el Título del documento o cualquier otro de los Campos de Recurso. Si el documento no está publicado actualmente, el navegador no lo mostrará en absoluto.

Para complicar ligeramente las cosas, una página web puede estar asociada de varias maneras con más de un documento.Por ejemplo, puede mostrar un documento que contenga el campo Resumen (summary) varios documentos distintos con un enlace que lleve al visitante a una versión completa de cada uno de ellos. Una página web de un blog en MODX, por ejemplo, podría mostrar el autor y la fecha de publicación de varias publicaciones del blog diferentes. El contenido de cada publicación sería el campo de recurso <strong>content</strong>, el autor y la fecha vendrían de los compos createdby y createdon de cada documento particular. El sumario de cada uno vendría del campo <strong>introtext</strong>.

Dado que esto ofrece la posibilidad de relaciones muy complejas, es muy importante entender que documentos y páginas web son cosas muy distintas en MODX. Cuando en los artículos sobre MODX en esta web hablemos de documentos, nos referiremos siempre al objeto de documento MODX que se crea en el Manager, nunca a una página web vista los usuarios. Cuando nos refiramos a una simple página mostrada en un explorador, hablaremos de página web.

Weblinks

Un weblink es un Recurso de MODX que contiene una URL (enlace) en su Campo de Recurso content. El destino del enlace puede estar en el mismo sitio MODX o en cualquier otro sitio en la red.

En MODX, un enlace se puede expresar como una URL completa como esta:

http://yoursite.com/home.html

En cambio, si es un enlace a una página en tu propio sitio MODX, se puede expresar como una etiqueta de enlace (por ejemplo, [[~ 1]]). Si tu página de inicio es el recurso 1 en tu sitio (en otros palabras, su número de identificación de recurso es 1), MODX
reemplazará la etiqueta de enlace con una URL completa que llevará a los usuarios a tu página de inicio.

Se deberían de usar etiquetas de enlace siempre que sea posible, porque seguirán enviando a la misma página aunque ésta cambie de nombre o título, o incluso si es movida a otra localización en el arbol de recursos. Las etiquetas de enlace pueden ser más complejas que en el ejemplo anterior, pero no siempre tienen por que serlo . Explicaré más adelante las opciones para las etiquetas de enlace.

Symlinks

Un Symlink (enlace simbólico) también es un Recurso MODX, que hace referncia a otro documento, pero el campo de symlink contiene solamente el ID del recurso documento al que hace referencia, y debe hacer referencia a una página en el sitio MODX.

El uso principal de los Weblinks y Symlinks es el de servir como enlaces en un menú de MODX. Este es un tema un tanto avanzado que trataremos con más detalle más adelante.

Recursos Estáticos

Los recursos estáticos son recursos que contienen una ruta de archivo en su campo content. La mayoría de las páginas de MODX tienen contenido dinámico, porque contienen elementos, como snippets (fragmentos de código) y chunks (trozos), que pueden cambiar con el tiempo. Eso significa que el contenido de la página se creará sobre la marcha antes de ser visto por el visitante del sitio. Sin embargo, cuando tengas contenido que sabes que no cambiará a menos que lo edites tu mismo, puedes guardarlo como un archivo html y usar un recurso estático para mostrarlo. La página se mostrará más rápido y descargará de trabajo a MODX y la Base de datos.

Los Recursos Estáticos también pueden enlazar a otros tipos de archivos, como .PDF o .DOC, para mostrarlos o descargarlos. Se puede incluso apuntar a un archivo .PHP que crée dinámicamente archivos .PDF. Esto también permite tener un control de acceso a los archivos, haciendo que sean accesibles sólo para ciertos usuarios.

Elementos de Contenido

Arbol de Elementos en el Manager de MODX
Arbol de Elementos en el Manager de MODX

En MODX, los Elementos de contenido (a los que habitualmente llamaremos, simplemente, "Elementos") son objetos de MODX que crean, controlan, formatean, organizan y/o proporcionan contenido. Con la evolución de MODX, se crean nuevos elementos, y a veces, cosas que anteriormente eran Campos de Recurso pueden convertirse en elementos. Otras veces, los elementos pueden perder ese estado y ser reclasificados como algo más. Por ahora, la mejor definición prácticade de Elementos de Contenido es: "aquello que aparece en el árbol de Elementos, en la pestaña Elementos del lado izquierdo de el Manager o Administrador de MODX ".

Los elementos que existen por el momento: Plantillas, Variables de Plantilla, Chunks (trozos), Snippets( fragmentos de código), Plugins (código disparado por eventos) y Categorías.