4 razones para elegir ProcessWire como su próximo CMS

Hace unas semanas, me topé con un artículo de A List Apart titulado "Cómo administrar su sistema de administración de contenido". Ofrece recomendaciones sobre cómo limitar y adaptar la libertad de los usuarios en un back-end del Sistema de gestión de contenido (CMS) con el objetivo de facilitar su uso.. 

Al leer estas recomendaciones y compararlas con las posibilidades técnicas de los principales actores en el panorama actual del CMS, veo muchas limitaciones. La mayoría de estos CMS simplemente no tienen este tipo de capacidades y no pueden proporcionar el nivel de opciones para personalizar idealmente una interfaz de usuario de back-end. Pero trabajando con ProcessWire durante algunos años, creo que he encontrado el santuario para los desarrolladores y usuarios que quieren exactamente eso..

ProcessWire es un CMS de código abierto y un marco de administración de contenido (CMF) de código abierto y prometedor. En su esencia, se basa en unos pocos conceptos simples y proporciona herramientas que son muy fáciles de usar y extremadamente poderosas al mismo tiempo. En este artículo general, quiero presentarles algunas de estas herramientas y conceptos. Aquí hay cuatro razones para elegir ProcessWire como su próximo CMS.

1. Se basa en tres conceptos básicos simples: páginas, campos y plantillas

La entrada y salida de datos se basa en solo tres conceptos básicos, y nada más. Esto significa que una vez que entienda estos conceptos, básicamente comprenderá todo sobre ProcessWire y la filosofía que lo sustenta. Muy bien, ¿verdad? Entonces, déjame presentarte páginas, campos y plantillas.

Páginas

En la página de inicio de su instalación de ProcessWire, verá un árbol de página jerárquico único:

Los enlaces que ves en el árbol se llaman páginas. Las páginas en el back-end generalmente reflejan la página vista en el front-end. Por ejemplo, se puede acceder a la página "Acerca de" en la captura de pantalla en la parte frontal abriendo tu-dominio.com/about/

Pero las páginas no tienen que tener una contraparte en el front-end. También pueden simplemente existir en el back-end y servir como contenedores de datos para otras páginas. Deje que la frase que acaba de leer se hunda: el concepto de páginas solo disponibles en el back-end es bastante poderoso porque abre infinitas posibilidades en la forma de estructurar su sitio web e interactuar con los datos ingresados..

Puedes y debes usar páginas para casi todo. Por ejemplo, puede tener una página de configuración oculta, donde guarda cosas como la navegación principal o texto general como el nombre, el eslogan, el aviso de copyright, etc. de su sitio web. Otro ejemplo sería etiquetas y categorías de publicaciones de blog (equivalentes a taxonomías en WordPress). Solo creará páginas para cada etiqueta o categoría de una publicación de blog. Permítanme citar a Joss Sanglier con respecto a las páginas en ProcessWire:

Las páginas en ProcessWire se utilizan para todo tipo de cosas. Se pueden utilizar como un marcador en su lista de páginas. Se pueden utilizar como grupo principal para otras páginas. Se pueden utilizar como categorías, etiquetas o listas o usuarios. E incluso se pueden usar para simples selecciones desplegables, solo para proporcionar una etiqueta y valor..

Abramos y editemos la página “Acerca de” mencionada anteriormente..

Ahora está viendo el siguiente concepto central de ProcessWire: campos.

Campos

Las páginas contienen campos. Pero los campos tienen que ser vistos desde dos ángulos diferentes. Ópticamente son parte de la página, porque cuando abres una página ves campos con los que puedes trabajar. Técnicamente estos campos forman parte de la plantilla de la página. Describiré el concepto de plantillas más adelante; entendamos primero los campos.

Los campos en ProcessWire son los contenedores en los que colocas los datos o desde los que seleccionas los datos, como texto, áreas de texto, números, correos electrónicos, cargas de archivos, otras páginas, etc. Depende totalmente de cuántos campos contiene una página. Puede tener solo uno (por ejemplo, un campo para el título de la página), o ningún campo (no es muy conveniente), o más de 50 o 100 campos. 

ProcessWire no tiene la noción de campos personalizados como WordPress, porque Cada campo en ProcessWire es un campo personalizado.. Crea un campo y decide qué tipo desea (vea la captura de pantalla a continuación). Eso es!

A un campo se le puede asignar una etiqueta, una descripción y algunas notas para obtener información adicional que aparece debajo. Cada tipo de campo tiene su propia configuración. Veamos tres tipos de campos y algunas configuraciones que puede hacer para tener una idea de esto:

  • Textarea tipo de campo: puede decidir si se representa como un área de texto sin formato o como un editor de texto enriquecido (CKEditor por defecto). Puede decidir qué botones aparecerán en la barra de herramientas de CKEditor e incluso ingresar las opciones de configuración personalizadas en la GUI del administrador..
  • Página tipo de campo: puede vincular una página con otra y, por lo tanto, crear una relación entre ellas. Puede vincular una página (relación uno a uno) o varias páginas (relación uno a varios). Incluso puede permitir la creación de nuevas páginas desde un campo de página..
  • Imagen tipo de campo: puede especificar qué tipo de imagen (extensión) se puede cargar. Puede especificar la altura y el ancho mínimo y / o máximo que debe tener para calificar para la carga.

La conclusión es esta: cada campo que crea es altamente personalizable para ajustarse exactamente a sus necesidades y a las personas que crean y editan el contenido de la siguiente manera:.

Pero, ¿cómo sabe una página qué campos tiene en sí misma? Así que echemos un vistazo a las plantillas..

Plantillas

Cuando creas una nueva página tienes que seleccionar una modelo. La plantilla contiene toda la información que la página necesita para conocer su contenido (qué campos tiene, cómo se representan esos campos y cómo se comportan).

Abajo puedes ver los campos de la plantilla. página básica.

Al hacer clic en un campo se abre una ventana modal, donde puede modificar la configuración del campo precisamente para esa plantilla.

Una plantilla puede tener un archivo PHP físico con el mismo nombre asociado. Estos archivos de plantilla se encuentran en / sitio / plantillas /. En un archivo de este tipo, usted escribe el código PHP y la marca HTML que finalmente genera el contenido de la página y representa los elementos que un visitante ve en la página de su sitio web.. 

Si una plantilla no tiene un archivo correspondiente, una página asociada con ella no se puede representar en la parte frontal de manera independiente. Eso no significa que no pueda obtener los datos de esa página y mostrarlos en otra parte; puede hacerlo utilizando un archivo de plantilla existente de otra página..

Resumamos la relación técnica entre páginas, campos y plantillas: agrega campos a las plantillas y selecciona una plantilla al crear nuevas páginas. Los campos que ve cuando edita una página son los campos que agregó a la plantilla seleccionada.

2. Tiene una API para enamorarse

El código en sus archivos de plantilla consistirá principalmente en unas pocas construcciones básicas de PHP como asignar valores a las variables, Si condiciones, para cada bucles y marcado HTML por un lado, y trabajar con la API de ProcessWire por otro lado. 

Puedes pensar en la API como jQuery para PHP. Proporciona métodos, selectores, encadenamiento (interfaz fluida) y capacidades de desplazamiento..

La API es probablemente lo que más me sorprende de ProcessWire: es fácil de usar, fácil de entender, expresivo y poderoso al mismo tiempo. Pero lo más importante es que te permite desarrollarte de manera rápida y sin complicaciones, y realmente tienes divertido interactuando con ello. Simplemente tiene sentido.

La API Cheatsheet es una gran referencia. Muestra todos los métodos disponibles con los que puedes trabajar..

Ahora permítame presentarle las dos variables expuestas a la API con las que lidiará más durante el desarrollo de la plantilla: $ página y $ paginas.

La variable $ page

los $ página La variable contiene todos los campos específicos de la página que se está viendo. Esto incluye los campos incorporados, que son comunes a todas las páginas, así como los campos que son específicos de esta única página..

Pero, ¿cómo se puede acceder a los campos de una página? Vamos a sumergirnos en algunos ejemplos simples.

Salida el contenido del campo de texto denominado título:

echo $ page-> get ("título"); // o echo $ page-> title;

Muestra el nombre de la plantilla de la página:

echo "Esta página está usando la plantilla:". $ página-> plantilla-> nombre; // o echo "Esta página está usando la plantilla: $ page-> template-> name";

Generar una navegación de migas de pan:

eco "
    "; foreach ($ page-> padres como $ padre) echo"
  • url "> $ parent-> title
  • "; eco "
";

Desde la versión 2.5.27 también puede escribir lo anterior como sigue:

eco "
    "; echo $ page-> padres-> cada ("
  • título
  • "); eco "
";

Genera una imagen solo si realmente ha sido cargada:

si ($ page-> imagen) echo "";

Nota: tiene que configurar el campo de imagen para que contenga solo una imagen para que esto funcione.

A continuación se muestran algunos ejemplos de cuándo un campo de imagen está configurado para contener múltiples imágenes..

Agarra y saca la primera imagen:

$ image = $ page-> images-> first (); si ($ imagen) echo "";

Toma y saca una imagen al azar:

$ image = $ page-> images-> getRandom (); si ($ imagen) echo ""; 

Recorra todas las imágenes, cree una imagen grande a un ancho de 500 píxeles con una altura proporcional y una miniatura a 100 × 100 con ajustes específicos de calidad y recorte, y luego tenga el enlace de la miniatura con la gran variante:

$ options = array ("calidad" => 90, "recorte" => "sureste"); foreach ($ página-> imágenes como $ imagen) $ grande = $ imagen-> ancho (500); $ pulgar = $ imagen-> tamaño (100, 100, $ opciones); echo "url">"; 

Nota: ProcessWire creará sus imágenes en cualquier tamaño sobre la marcha y luego mantendrá un caché de ellas..

La variable $ pages

los $ paginas variable es una referencia de todas las páginas en su sitio. Esto le permite acceder a todo el contenido de su sitio y las páginas desde cualquier lugar que desee.

Para los siguientes ejemplos, me referiré al sitio de demostración estándar de ProcessWire que proporciona una colección de rascacielos en los Estados Unidos.

Obtener una página específica y dar salida a su título:

echo $ pages-> get ("/ cities / chicago / sears-tower /") -> title;

Nota: / ciudades / chicago / sears-tower / es la ruta completa que apunta a la página de Sears Tower en la jerarquía del árbol de páginas de ProcessWire.

Encuentre todos los rascacielos con una altura mayor a 500 pies y menor o igual a 1,000 pies:

$ skyscrapers = $ pages-> find ("template = skyscraper, altura> 500, altura<=1000");

Nota: altura Es un campo contenido dentro de la plantilla. rascacielos.

Encuentre todos los rascacielos construidos antes de 1950 con más de 10 pisos, ordenados por año descendente, luego los pisos descendentes:

$ skyscrapers = $ pages-> find ("template = skyscraper, year<1950, floors>= 10, sort = -year, sort = -floors ");

Nota: año y pisos son campos contenidos dentro de la plantilla rascacielos.

Encuentre todos los rascacielos en Chicago con más de 60 pisos, ordenados por pisos ascendentes:

$ skyscrapers = $ pages-> get ("/ cities / chicago /") -> find ("floors> = 60, sort = floors");

Encuentra todos los rascacielos de los arquitectos David Childs o Renzo Piano, y ordena por altura descendente:

$ david = $ pages-> get ("/ architects / david-childs /"); $ renzo = $ pages-> get ("/ architects / renzo-piano /"); $ skyscrapers = $ pages-> find ("template = skyscraper, architects = $ david | $ renzo, sort = -height");

Nota: arquitectos Es un campo contenido dentro de la plantilla. rascacielos.

3. Está construido alrededor de una arquitectura modular y fácilmente extensible

ProcessWire consiste en un marco de núcleo pequeño (considere esto como la esencia de ProcessWire que permite las funcionalidades básicas) y un conjunto de módulos preenvasados, que vienen con cada instalación. Algunos de estos módulos principales están instalados y otros se desinstalan de forma predeterminada. Piense en los módulos de ProcessWire como complementos de WordPress: extienden y personalizan el sistema.

La naturaleza modular de ProcessWire tiene algunas ventajas agradables:

  • El código base es más mantenible Debido a que las funcionalidades del núcleo están aisladas y desacopladas de otras partes del sistema, lo que también aumenta considerablemente la capacidad general. seguridad.
  • El desarrollo de nuevas funciones se está simplificando y los errores se pueden solucionar y corregir de forma mucho más sencilla y rápida..
  • Las actualizaciones a las versiones más recientes de ProcessWire o los módulos individuales son generalmente una obviedad, y no tiene que preocuparse de que después de una actualización todo se rompa.

Instalación de módulos

Instalar un módulo es tan fácil como arrastrar los archivos del módulo a la / site / modules / directorio y luego haciendo clic Instalar en la GUI de administración. Pero en realidad hay muchas más formas de instalar un módulo desde el directorio de módulos.. 

Por ejemplo, puede instalar el Administrador de módulos, que le permite explorar, descargar, instalar y actualizar módulos directamente en la GUI del administrador..

Cantidad de módulos: calidad por encima de la cantidad

Al momento de escribir, existen alrededor de 370 módulos para ProcessWire. Ahora puede comparar ese número con los aproximadamente 40,500 complementos de WordPress que existen, y esa comparación es realmente interesante y reveladora al mismo tiempo. Después de esto, se pueden sacar algunas conclusiones pensando en la naturaleza general de ProcessWire y sus módulos, y cómo se comparan con los complementos de otros CMS:

  • ProcessWire no es tan popular y generalizado como WordPress, Joomla, Drupal y otros..
  • Los módulos de ProcessWire son generalmente de una calidad de código bastante alta. Ellos hacen una cosa y hacen esa cosa bien..
  • El núcleo de ProcessWire en sí mismo es tan poderoso y flexible que simplemente no es necesario agregar una tonelada de módulos adicionales para extenderlo. Por ejemplo, no necesita módulos para crear presentaciones de diapositivas de la galería, módulos para obtener el primer hijo de algo, módulos para generar miniaturas, etc. Todo eso (y mucho más) ya está cubierto con las funcionalidades básicas de ProcessWire.

Manos

Si bien los enganches son un tema bastante avanzado, es digno de mención y muestra que la funcionalidad de ProcessWire está diseñada para ser muy fácil de modificar y extender. ProcessWire contiene cientos de métodos a los que puede conectarse para modificar el comportamiento de un método..

Digamos que hemos creado un formulario de contacto simple utilizando la API o el Generador de formularios, y algunos de los campos están marcados como lo requiere el back-end. Lo que queremos lograr es agregar también el marcado de front-end HTML5 adecuado para los campos de formulario requeridos. ProcessWire hace esto bastante fácil. Simplemente conectamos el método de procesamiento de los campos de entrada y definimos lo que queremos personalizar: pregunte si el campo es obligatorio, agregue el atributo de front-end deseado y ponga un asterisco al final de la etiqueta de entrada.

$ forms-> addHookBefore ("Inputfield :: render", function ($ event) $ field = $ event-> object; if ($ field-> required) $ field-> attr ("required", "required" ); $ field-> label. = "*";);

4. No se interpone en tu camino y proporciona herramientas para crear interfaces personalizadas y fáciles de usar

Una de las principales cosas que a la gente le gusta de ProcessWire: No se interpone en tu camino. Se comporta de la manera que usted desea y se ajusta a su estilo de desarrollo de un sitio web.. 

Por ejemplo, tiene un control completo sobre la salida del marcado y no está obligado a desarrollar una plantilla en el sistema de archivos. Si está familiarizado con el estilo de desarrollo de cosas de WordPress, puede continuar tal como está acostumbrado. O si desea crear una arquitectura más sofisticada, podría utilizar un enfoque inspirado en MVC, y funcionará igual de bien..

Como mencioné anteriormente, las páginas no tienen un conjunto de campos obligatorios para que ProcessWire entienda la estructura de una página. (Al menos no visibles. Hay algunos campos incorporados, como referencias al padre de la página o al número de los hijos de la página, etc.) Si lo desea, puede poner 100 campos en una página. desea, especifique cuáles son necesarios y cuáles no, y puede colocarlos en diferentes conjuntos de campos o pestañas para una mejor experiencia de interfaz de usuario.

La otra cosa importante que a la gente le gusta de ProcessWire: Naturalmente, proporciona herramientas para crear interfaces personalizadas y fáciles de usar.. Te di un vistazo de eso en el párrafo anterior. El nivel de personalización de las plantillas es alucinante. Una vez que haya experimentado esto, comprenderá por qué ProcessWire es más un CMF que un CMS. 

Por ejemplo: Cada campo tiene un contexto específico de plantilla adjunto. Eso significa que puede especificar que uno y el mismo campo tiene una etiqueta, una descripción y un comportamiento determinados en una plantilla, y una etiqueta, una descripción y un comportamiento completamente diferentes en otra plantilla..

Otro ejemplo son las dependencias de los campos de entrada: le permiten especificar las condiciones bajo las cuales se muestra o requiere un campo en particular en el editor de páginas.

Y otro ejemplo más es el módulo PageTableExtended: permite que un usuario vea, edite y modifique las diferentes partes de su página web (que usted como desarrollador define) de una manera visual e intuitiva..

Eso para mí es la definición de elegante y profundamente empoderador..

Conclusión

Este artículo solo puede arañar la superficie de lo que puede hacer con ProcessWire y lo que tiene para ofrecer. La lista de grandes características es, simplemente, demasiado larga e iría más allá del alcance de este artículo. Déjame darte un vistazo de algunos de estos:

  • ProcessWire tiene excelentes mecanismos de almacenamiento en caché (por ejemplo, caché de plantillas y marcas o ProCache) y funciona muy bien. La escalabilidad también es bastante impresionante. Usted puede literalmente tener millones de páginas en una sola instalación..
  • ProcessWire tiene una comunidad pequeña pero fantástica. El panel de discusión es el lugar central para discutir cualquier pregunta y problema..
  • ProcessWire tiene soporte multilenguaje estelar. Los módulos multilingües forman parte de los módulos básicos preempaquetados. Es muy fácil de configurar y mantener.
  • ProcessWire tiene excelentes capacidades de administración de usuarios integradas con configuraciones que son muy detalladas y fáciles de administrar al mismo tiempo. Por ejemplo, puede crear una función para los usuarios que tienen permiso exclusivo para editar campos en francés y en ningún otro idioma..
  • Hay una gran cantidad de temas de administración que puede elegir para cambiar la apariencia de la GUI de administración..
  • La seguridad es una prioridad para ProcessWire.
  • ProcessWire tiene una hoja de ruta transparente y el desarrollo es muy activo. Hay nuevos lanzamientos menores casi todas las semanas..

Cuanto más use ProcessWire y más internalice los conceptos centrales, la API y su arquitectura modular, más se divertirá al usarlo. Se dará cuenta de lo increíblemente potentes que son realmente las herramientas y los flujos de trabajo de ProcessWire. Se podría decir que lo único que lo limita a lograr un determinado objetivo con ProcessWire es su propia imaginación..

Permítanme terminar citando al creador de ProcessWire, Ryan Cramer: 

ProcessWire es un sistema que te recompensa por ser curioso. Nuestro objetivo es mostrarte cómo pescar para que puedas capturar peces grandes..

A dónde ir desde aquí

Enlaces útiles y herramientas alrededor de ProcessWire: 

  • La sección de documentación del sitio web de ProcessWire es una excelente manera de comenzar su viaje para obtener más información sobre ProcessWire. Encontrará información sobre la API, la estructura de directorios, los archivos de plantilla, los selectores, el soporte multilingüe y la seguridad..
  • ProcessWire semanal es la Fuente semanal de noticias y actualizaciones de ProcessWire..
  • ProcessWire.tv es una colección de videos tutoriales de ProcessWire con capacidad de búsqueda..
  • wireshell es una interfaz de línea de comandos para ProcessWire basada en el componente de la Consola Symfony.
  • Padloper es una plataforma de comercio electrónico construida sobre ProcessWire.
  • ProcessWire Module Generator es una forma visual de comenzar el desarrollo de módulos con muchas de las mejores prácticas de desarrollo de módulos..
  • ProcessWire Recipes es un directorio que tiene como objetivo recopilar mini-tutoriales para tareas y problemas comunes y no tan comunes de ProcessWire, presentados en un formato conciso y preciso para ayudarlo a aumentar su dominio de ProcessWire..
  • ProcessWire Cheatsheet es una hoja de trucos muy útil para todos los métodos API disponibles.
  • Visite grap.pw para descargar la última versión estable de ProcessWire.
  • Encontrará una gran cantidad de contenido útil e interesante en la navegación a través del contenido que más le gusta en los foros de discusión oficiales de ProcessWire.
  • Vea lo que otros tienen que decir sobre ProcessWire en las revisiones de ProcessWire.
  • Echa un vistazo a algunos sitios impulsados ​​por ProcessWire.