ProcessWire: el CMS de código abierto para crear páginas web personalizadas

ProcessWire es un marco de gestión de contenidos (CMF) y un sistema de gestión de contenidos (CMS) gratuito de código abierto que permite el diseño totalmente individualizado de páginas web. El backend presenta una estructura sencilla, pensada para su fácil manejo. A pesar de no ser tan conocido como el gigante WordPress o sus competidores Jommla!, Drupal o TYPO3, este software presenta una serie de ventajas que lo hacen único, diferenciándolo de la competencia. Por todo ello, merece la pena echar un vistazo a lo que ProcessWire puede ofrecer.

ProcessWire: la historia del CMS

Este CMS comenzó a desarrollarse en 2003 con el nombre de Dictator CMS, aunque no fue hasta 2007 cuando Ryan Cramer dio a conocer el software con el nombre de ProcessWire 1.0. No obstante, ni Dictator CMS ni ProcessWire 1.0 eran por entonces programas de código abierto, si bien es cierto que los esfuerzos iban ya en esa dirección. Finalmente, en 2010 se publicó la versión 2.0 bajo la licencia pública de Mozilla 2.0. Según la propia comunidad, la versión 2.3 fue un hito sin precedentes para los desarrolladores, dado que era el primer lanzamiento en el que la comunidad había trabajado de forma conjunta en el núcleo del software. La versión 3.0, que se publicó en 2016, es el último lanzamiento importante. Además, gracias a una comunidad muy activa, se dispone de paquetes localizados a otros idiomas, entre los que se encuentran el español, el alemán, el francés y el italiano.

Los componentes principales del CMS ProcessWire

El backend de ProcessWire está muy bien estructurado y la interfaz de usuario es muy intuitiva. Para el desarrollo de las páginas web este software utiliza campos, estos son, elementos individuales a los que se asigna una función y una posición dentro de la página. ProcessWire permite crear una plantilla para estructurar la web que sirve al usuario para ir situando los diferentes campos a su gusto, de modo que al asignar una plantilla concreta a una web, sus páginas presentarán la estructura especificada por él.

Plantillas y formato de página

En la imagen que aparece a continuación se aprecia el backend de la versión de prueba de ProcessWire, disponible online. En “Setup” (ajustes) se encuentra el editor de plantillas, donde se encuentra la plantilla “Architect”, con la cual se establece el formato de la página (cuadros de texto, diseño, campos de entrada, etc.) para 216 páginas en un mismo dominio.

Al clicar en la plantilla se abre un editor, que a su vez incluye una serie de pestañas: en la primera, llamada “Basics”, es posible editar o añadir campos, además de administrar los derechos de acceso, la jerarquía de las páginas, los URL, la caché o la configuración de etiquetas o iconos, sin olvidar que es posible importar campos de otros temas o borrar plantillas innecesarias.

En la pestaña “Family” se establecen las relaciones internas de la web. Cuando se crea una web o una aplicación con ProcessWire, cada componente recibe una página. Cada página individual cuenta con una serie de subpáginas, que reciben el nombre de “hijos”. La relación entre las diferentes páginas de una misma web se muestra en un esquema en forma de árbol, similar al Document Object Model (DOM). De hecho, Ryan Cramer, el autor de ProcessWire, se inspiró en jQuery, una herramienta muy visual, para la creación de este CMS, gracias a lo cual la web puede presentar una estructura tan profunda como se desee con ramificaciones ilimitadas.

Como a cada parte de la web se le asigna una página, el CMS trabaja también con páginas ocultas (hidden pages). Como su nombre indica, estas páginas son invisibles y se utilizan, por ejemplo, como repositorio de contenidos para otras páginas o para regular la navegación. Otra posibilidad de aplicación se produce en la interacción de los usuarios con la web: si introducen un URL no válido, se muestra la página de error 404.

Una API estable

Processwire cuenta con una interfaz de programación de aplicaciones (API, del inglés Application Programming Interface) robusta y efectiva que es, sin duda, el orgullo del framework. Dado que el software se rige por una arquitectura modular, el sistema recurre a interfaces internas que sirven a los usuarios para encontrar, cambiar o crear datos. La gestión de datos es posible gracias a variables y selectores de interfaz. En el script se pueden concatenar los comandos y ubicarlos en una sola línea. Además de los módulos ya integrados (plugins propios), la API también permite el intercambio de datos con plugins de terceros.

Campos

Las páginas mencionadas están formadas por campos, también marcados por una particularidad. A diferencia de otros CMS como WordPress, este software no cuenta con un único campo de entrada para introducir el contenido de una página, sino que el usuario tiene la libertad de ajustar los campos según requiera. Es por ello que en una página pueden combinarse varios campos diferentes, sin importar si se trata de campos de texto o de vídeo, que el usuario puede asignar a la plantilla. Ya sean simples archivos HTML o complejas aplicaciones PHP, los archivos de plantilla se pueden alojar en el CMS con la función drag and drop. En la mayor parte de los casos los desarrolladores utilizan plantillas con etiquetas PHP para mostrar contenido dinámico.

Las plantillas en ProcessWire funcionan como sigue: cuando los usuarios cargan una página, el CMS accede a la plantilla asignada a la página, le asigna variables de API y la ejecuta como script PHP.

Módulos

El programa principal contiene algunos plugins estables, a los que se conocen como módulos. Hay módulos para:

  • Temas Admin
  • Spam Blocker de Akismet para la columna de comentarios
  • Plugins para añadir campos (cajas, imágenes, opciones, títulos de páginas, etc.)
  • Configuración de directorio
  • Imágenes
  • Campos de entrada (botones, email, nombre, selector, área de texto, etc.)
  • jQuery
  • Idiomas
  • Hooks
  • Markups
  • Páginas
  • Procesos (editar páginas, permisos, campos, etc.)
  • Sesiones
  • Sistema
  • Formato de texto

Es posible adaptar la mecánica con ayuda de hooks, creando una conexión a un plugin o un tema en un punto concreto del código en lugar de cambiar el código fuente. En el directorio de plugins es posible encontrar módulos adicionales, de código abierto y creados por los miembros de la comunidad. Entre ellos destacan la herramienta Form Builder para la creación de formularios y ProFields para procesar más datos en menos campos.

También es necesario mencionar la memoria caché. Tanto en la versión gratuita como en la de pago para profesionales (la recaudación se invierte en el desarrollo del módulo), la caché es una herramienta práctica que facilita el desarrollo de la página.

Requisitos de ProcessWire

Requisitos mínimos

  • Servidor web basado en UNIX o en Windows
  • Apache (también se pueden usar equivalentes como NGINX o IIS, siempre y cuando exista un sustituto para .htaccess, como puede ser el caso de web.config para IIS)
  • El módulo mod-rewrite debe estar activado en Apache
  • Apache debe soportar .htaccess
  • PHP desde la versión 5.3.8 con soporte de bases de datos PDO
  • Biblioteca GD 2 incluida para PHP

Requisitos ideales

  • Última versión estable de PHP
  • Etiquetas cortas para PHP habilitadas
  • Soporte de cadenas multibyte compiladas con PHP (--enable-mbstring)

ProcessWire vs. WordPress: una comparativa

Tanto WordPress como ProcessWire salieron a la luz en 2003. Mientras que el primero se posiciona como líder del ranking mundial con una cuota de mercado del 60 % (cifras de enero de 2018), Processwire no supera los cuatro dígitos en número de usuarios, lo que se traduce en una cuota de mercado de un 0,1 %. La gran diferencia entre ambas herramientas reside en que WordPress es muy fácil de configurar y usar y no requiere conocimientos en HTML o PHP. Y es que con los CMS pasa como con la música: cuanto mayor es el grado de conocimiento, más se aleja la persona en cuestión de los hits del momento y se acerca a otros temas menos conocidos pero de mayor complejidad técnica.

Usabilidad

ProcessWire dispone de una serie de funciones que facilita en gran medida el trabajo de los diseñadores web y los desarrolladores, como la carga de archivos con drag and drop. La instalación tampoco requiere demasiado tiempo, aunque, eso sí, para poder crear la página con total libertad es necesario disponer de una serie de conocimientos previos en programación. Es por ello que el público objetivo de ProcessWire difiere del de WordPress. Este último apenas necesita cinco minutos para su instalación y configuración, y los temas y las plantillas permiten crear un blog a los menos experimentados sin apenas conocimientos técnicos.

El desarrollador de una web asigna las plantillas de ProcessWire a las páginas correspondientes, aunque el marco de dicha página tiene que ser creado prácticamente mediante comandos. Es por eso que ProcessWire está pensado para diseñadores web y aficionados a la programación. El usuario final de la web no necesita conocimiento previo pues, una vez creada la estructura, añadir las actualizaciones o páginas nuevas es una tarea fácil incluso para los que apenas cuentan con conocimientos de TI. Especialmente práctica resulta la función out of the box (lista para usar) con la que se pueden crear diferentes dominios localizados para una misma entrada web. Gracias al paquete de idiomas se puede trabajar en el backend con los idiomas de destino correspondientes. En WordPress, sin embargo, la integración de idiomas no funciona tan bien.

Adaptado a SEO

Por supuesto, todo aquel que crea una web pretende que esta también aparezca en la Red. En lo que respecta a este tema, ambos CMS ayudan a optimizar la web: su software principal sirve para optimizar los URL tanto para los rastreadores de los buscadores como para el lector. La estructura en árbol de ProcessWire es muy útil para crear una jerarquía visible, aunque la paginación puede resultar un problema: las páginas sin contenido que hacen referencia a otras páginas no ofrecen nada a los rastreadores, que en el peor de los casos pueden entrar en bucle. De ahí que los desarrolladores de ProcessWire aconsejen preparar una página de error 404 para poder reaccionar en caso de que surja algún problema al cargar la página. La caché, que en proyectos sencillos puede utilizarse en su versión gratuita, aumenta la velocidad de carga. WordPress, sin embargo, necesita una extensión.

En los plugins de WordPress se pueden encontrar varias herramientas de optimización. Yoast SEO, por ejemplo, ofrece en un paquete las funciones de SEO más importantes, como pueden ser la integración de redes sociales, la optimización de los metadatos o el análisis de la web. Con el plugin de Google XML Sitemaps es posible crear mapas de sitio. Pero ProcessWire no se queda atrás y ofrece para todo ello un módulo: se trata de la extensión MarkupSEO, una solución completa que integra una pestaña en el apartado “Pages”, donde se indican el título y la imagen de vista previa junto a otros metadatos. En la parte superior es posible ver la vista previa en Google a la vez que se van introduciendo los cambios. Además, el módulo Profields: Autolinks enlaza automáticamente las palabras clave seleccionadas con los URL correspondientes y con ProcessWire Accessibility Tools se aumenta la accesibilidad de la web.

Consejo

¿Quieres saber más sobre Wordpress? En la Digital Guide te revelamos de lo que es capaz.

Estructura subyacente y plugins

Como ya se ha mencionado, en ProcessWire se trabaja sobre una estructura de árbol expandible casi de forma ilimitada. Para el desarrollo web este es un software sólido y eficiente cuya interfaz de programación permite integrar los módulos necesarios. Algunos ya están incluidos en el software principal, pero también existen aplicaciones desarrolladas por la comunidad basadas en software de código abierto y probadas antes por los desarrolladores antes de ponerlas a disposición de los usuarios. En definitiva, el programa es un marco de gestión de contenidos, pues permite la creación de un sistema de gestión de contenidos acorde a la voluntad de cada usuario. Otra característica de ProcessWire es que todas las partes visibles y ocultas de la web son páginas donde se disponen diferentes campos de datos adaptados a los métodos de entrada.

El líder de los CMS se basa en el software b2, que en un principio se desarrolló como software weblog, pero también permite crear páginas de manera jerárquica y usarlo como CMS. No obstante, la API fue criticada con cierta asiduidad pues, a diferencia de ProcessWire, donde el software principal está perfectamente coordinado con los módulos, la gran comunidad de WordPress añade regularmente plugins que no siempre son seguros y a menudo aparecen sobrecargados. Como muchos de ellos tienen características que se superponen, suelen competir unos con otros. Además, y debido a su gran número, no se puede probar su compatibilidad en todas las aplicaciones, lo que puede desembocar en que una versión del plugin, cuando se actualiza de forma automática, limite sin advertirlo otras funciones de la web.

Seguridad

WordPress es conocido y admirado por muchos a nivel internacional, lo que inevitablemente también atrae a los hackers. La página de CVE Details muestra información sobre las vulnerabilidades del CMS: hasta marzo de 2018 se habían detectado un total de 273 brechas de seguridad en las aplicaciones de WordPress, muchas de ellas críticas. Es más, en comparación con el año anterior, la cifra de vulnerabilidades reportadas en 2017 se había duplicado. Los ataques más comunes tenían lugar debido a la brecha de seguridad conocida como cross site scripting (XSS). Y es que, aunque WordPress trabaje en actualizaciones de seguridad, muchas de las páginas requieren una gran cantidad de plugins que también deben actualizarse (los gestores web se olvidan a menudo de hacerlo), sin contar con que los temas sobrecargados suelen mostrar también vulnerabilidades importantes.

Su modesto oponente insiste, a pesar de la cooperación open source, en probar los módulos desarrollados por la comunidad antes de ponerlos a disposición de los usuarios. Como consecuencia, la biblioteca de plugins es más reducida, pero también más manejable y, en comparación con el gigante de los CMS, las extensiones son más seguras. Además, ProcessWire trabaja de manera continua en actualizaciones de seguridad.

  ProcessWire WordPress
Sistema operativo Multiplataforma Multiplataforma
Categoría CMF, CMS Software weblog, CMS
Licencia Mozilla Public License 2.0 GNU GPLv2+
Servidor web compatible Servidor web basado en UNIX o Windows con soporte Apache, PHP y MySQL Servidor web con soporte PHP y MySQL
Base de datos compatible MySQL, MariaDB 5.0.15 o superior MySqL, MariaDB
Lenguaje de plantillas PHP PHP
Backend basado en el navegador
Oferta alojada No
Herramientas de SEO
Diseño web responsivo
Seguridad Su reducido grupo de usuarios no resulta atractivo a los hackers, solo plugins testados La alta difusión atrae a los hackers, Algunos plugins inseguros, Actualizaciones regulares del sistema
Gestión de usuarios Tenencia múltiple, grupo de usuarios, limitaciones de derechos de usuario, controles de desbloqueo en niveles incluso para campos individuales. Tenencia múltiple, grupo de usuarios, limitaciones de derechos de usuario, controles de desbloqueo en niveles
Usabilidad Script PHP en árbol de datos, editor WYSIWYG, vista previa, labels, búsqueda, backend con temas de administrador Editor WYSIWYG, sistema de blog, vista previa, búsqueda, labels
Elementos multimedia Clasificación libre del campo de datos Con extensiones
Multilingüismo Administración sencilla de soluciones out of the box, URL localizados Extensiones para localización de frontend y backend
Documentación
Tutoriales y comunidad
Adecuado para Páginas web completas con requisitos de diseño Páginas web en varios idiomas Catálogos online Páginas web pequeñas con pocos cambios en el diseño Desarrollo: nivel avanzado, profesionales Uso: tras un periodo de familiarización, adecuado para los menos expertos Blogs Páginas con un contenido limitado sometidas a cambios de diseño Pymes o particulares con páginas web informativas o representativas Si no es posible contratar a un programador Para avanzados y principiantes

ProcessWire: tutorial para dar los primeros pasos

Breve introducción a su instalación

Aunque existen diferentes métodos de descarga, la mayor parte de usuarios obtienen el programa de GitHub. Si es el caso, una vez descargado el archivo zip, se procede a descomprimirlo. Seguidamente se carga el paquete de archivos en el servidor y se lleva a cabo la instalación web. Es entonces cuando el programa comprueba la compatibilidad, avisando si no se cumple con los requisitos básicos. Además, si aún no se ha hecho, debe habilitarse PHP en el archivo .htaccess. A continuación se introduce la información necesaria de la base de datos del usuario en el panel de administrador, que se encuentra en el proveedor de alojamiento web. Para terminar hay que introducir también una dirección de correo para poder recibir los datos de acceso.

Consejo

ProcessWire no ofrece alojamiento, por lo que si aún no dispones de hosting para tus proyectos puede interesarte el alojamiento web de IONOS.

Los primeros pasos en el backend

Una vez tiene acceso, el usuario empieza a diseñar la web a su gusto sobre una plantilla en blanco, que se encuentra en la ruta Modules > Site Profiles > ProcessWire Blank Profile en la página web de ProcessWire, aunque también se puede instalar una plantilla de muestra con la que se obtiene una primera impresión sobre la construcción y gestión de la nueva web desde el backend. Sin olvidar que existe la posibilidad de crear plantillas para el área de administrador o cargarlas como módulos. De este modo es posible crear un CMS que se adapte a las necesidades de los futuros gestores de la web.

Crear campos a medida

En las explicaciones que siguen se utilizan capturas de pantalla de la versión demo de ProcessWire. En la imagen superior se aprecia la página de inicio “Pages” del backend con las páginas ordenadas en una estructura de árbol. Una vez se ha configurado la página, los que serán los futuros usuarios del CMS de ProcessWire se mueven en este apartado, donde se crean las páginas y se añade contenido. Pero, para ello, el desarrollador tiene que llevar a cabo antes otras acciones: acceder a la pestaña “Setup” (ajustes) y seleccionar “Fields” (campos). Al pulsar en “New Field” se creará un campo nuevo.

Hay que determinar todas las propiedades del campo, es decir, el nombre, el tipo y la etiqueta, además de especificar si se trata de una casilla de verificación, si hay que indicar la fecha o introducir texto o imagen. Una vez guardado se pueden crear otros nuevos hasta que la web cuente con todos los campos deseados. En la imagen inferior se observa la instalación de un campo, con nombre “TestTest”. En el aparado “Type” se indica que se trata de un campo para introducir texto y, a continuación, se especifica la etiqueta deseada, pues de lo contrario se asignará el nombre dado al campo como etiqueta.

Determinar la estructura con plantillas

A continuación, se accede a la opción de menú “Templates” (plantillas) de los ajustes (“Setup”). Gracias a las plantillas se consigue que todas las páginas con las mismas funciones presenten un aspecto uniforme. Para añadir una nueva plantilla basta con clicar en “Add new template”. En cuanto a las especificaciones, el desarrollador puede cargarlas desde un archivo PHP del servidor o escribirlas él mismo. Si ya se tiene una plantilla y se quiere volver a usar en una nueva creación, hay que seleccionar la plantilla en cuestión del menú desplegable “Duplicate fields used by another template”, donde la nueva plantilla conserva todos los campos de la original.

Nota

La asignación de nombres tiene que llevarse a cabo de forma cuidadosa para facilitar el manejo de la web a los usuarios finales (gestores web, editores).

Ya has creado una plantilla, pero a continuación hay que proceder a definirla. La versión demo de ProcessWire utiliza una web sobre rascacielos para mostrar algunas de las posibles aplicaciones de los temas de ProcessWire: la plantilla “City” contiene un total de 70 subpáginas. En la primera pestaña “Basics” se añaden los campos creados a la plantilla. La plantilla City tiene tres campos: Title (tipo: título de la página), Abbreviation (tipo: texto) y Map (tipo: MapMaker). Todas las páginas en esta plantilla disponen de un título en el encabezado, de un espacio para texto y de un mapa.

Los campos nuevos se añaden en la opción de menú “Add Field”, aunque también se pueden crear directamente en la plantilla (“Create new field”). Se ordenan usando drag and drop. Además, se utiliza una etiqueta para definir el tema. Si se quiere conocer todas las páginas que usan la plantilla, hay que acceder al apartado “Usage”.

En la pestaña “Access” se fija quién tiene acceso a las páginas de plantilla. Para ello la plataforma ofrece una gran diversidad de opciones. Por ejemplo, se pueden crear páginas de foros solo visibles para los usuarios que inicien sesión o generar páginas cuyo contenido solo pueda ser elaborado por redactores y gestores, pero que sea visible para todos los usuarios.

En “Family” se establece si la plantilla permite subpáginas y además se fijan las plantillas que corresponden a cada nivel (padres e hijos). La pestaña “URL” permite preparar la paginación y la optimización web a través de rutas de estructura clara. En “Cache” se reduce el tiempo de carga y en “Advanced” se pueden encontrar etiquetas, conmutadores e iconos. Además, ProcessWire cuenta con otra pestaña, “Import”, que permite importar campos de otros temas al editor de plantilla. Por último, con “Delete” se borra una plantilla.

Todo en una única página

El credo de ProcessWire reza: todo en una página. Es por ello que el usuario puede tener una visión general de cada uno de los elementos de la arquitectura que la define. Como ya se han creado las plantillas y definido los campos y se ha establecido la base para la producción de la página, es el momento de pasar a la creación. Para ello hay que volver a “Pages” y clicar en “Add new”. En el menú desplegable se pueden ver todas las plantillas que han sido creadas. En este caso, se ha seleccionado “Skycrapers”.

La página web se conformará de acuerdo con la plantilla establecida como “Skyscraper”. En la versión demo la relación entre cada una de las subpáginas ya está predeterminada. A esta plantilla hay que asignarle una página principal de entre las que se ofrecen bajo “City”, tras lo que hay que dar un título para el encabezado y un nombre para el URL.

Nota

El desarrollador también puede definir el nombre de las pestañas. De este modo, los editores podrán encontrar el área de contenido para introducir información sobre los rascacielos, por ejemplo, bajo el título “Skyscrapers”. Por ejemplo, accediendo desde el área de administrador a la página "Albuquerque", pueden encontrarse diferentes pestañas para personalizar. En la primera pestaña se incluye el contenido y justo en la siguiente se establecen las subpáginas. Como administrador, es posible renombrar esta pestaña, por ejemplo, con el nombre “Skyscrapers”. Es decir, bajo ese nombre se encuentra la plantilla de todas las subpáginas supeditadas a una página con una plantilla “City”.

Primero hay que pulsar en “Save” para guardar la página y a continuación seguir la ruta Pages > Cities > Albuquerque, seleccionar la página de ejemplo Albuquerque Petroleum Building y clicar en “Edit”. En la pestaña “Settings” hay que determinar las propiedades, aunque el nombre y la plantilla ya han sido creados. Se establecen el estado de la página como oculto, bloqueado o no publicado (“Hidden”, “Locked” o “Unpublished”), los derechos de acceso y la caché. En el apartado de contenido se introducen los campos personalizados. La plantilla muestra doce campos junto al tipo de datos:

  • Title (Page title)
  • Height (Float)
  • Floors (Integer)
  • Year (Integer)
  • Architects (Page)
  • Body (Text Area)
  • Map (Map Marker)
  • Images (Images)
  • Fieldset_Meta (FieldsetOpen)
  • FreebaseGuid (Text)
  • WikipediaID (Integer)
  • FieldsetMeta-END

Finalmente, los editores o gestores de páginas web pueden completar los campos para texto y cifras con el contenido correspondiente y determinar las coordenadas del lugar donde se encuentra el edificio en cuestión. Las imágenes se pueden cargar fácilmente con drag and drop, y con la herramienta de imagen se puede cambiar el tamaño y el formato. Cuando se han rellenado todos los campos, se puede pedir una vista previa en la pestaña “View” y si todo es correcto se procede a guardar la página clicando en “Save”. Así de fácil es crear una página personalizada. Aunque, para una mayor libertad de diseño, mejor experiencia de usuario y un área de administración optimizada, se recomiendan los módulos de código abierto.

En resumen

ProcessWire es un CMF muy versátil adecuado tanto para páginas web pequeñas como para proyectos más grandes con varios dominios y diferentes idiomas de destino. Eso sí, todo desarrollador que quiera recurrir a él necesita tener conocimientos de HTML y PHP, siendo posible así crear un CMS de alta usabilidad gracias a los módulos de administración. Es por ello que, una vez configurado el CMS, el manejo de la herramienta para gestores de páginas web y redactores de contenido es relativamente sencillo. En definitiva, ProcessWire destaca por un paquete de software ligero, una API estable, numerosas opciones de personalización y el soporte activo de la comunidad.

¿Le ha resultado útil este artículo?
Page top