Ryan Cramer

Content Management

ProcessWire - Introduction

Note that this article was written for ProcessWire v1. For information about ProcessWire v2, please see processwire.com. Though the majority of what is in the article applies to both versions.

ProcessWire is a content management system written by Ryan Cramer Design. It is written in PHP 5 and is built on an original MVC framework bearing the same name. Nearly every component within the application is plugin-based, making the application adaptable to a diversity of needs. Within this article and associated screencasts, I hope to communicate what makes ProcessWire a unique platform and where it’s strengths are.

Background

ProcessWire is a continuation of concepts that I’ve worked with for nearly a decade in designing and developing custom CMS products. It’s based on an underlying content management methodology and process that has repeatedly worked well for both our clients needs and ours.

Over the years, these processes have been continuously refined to the point where it made sense to create a product. As such, ProcessWire is a system that keeps these processes bundled together like a wire … simple, organized, secure and fast. Based on a plugin architecture, ProcessWire’s name also reflects the wires that join together these plugins to create new processes.

View a higher quality version of this video (Quicktime, 3:30, 9.5 mb)

There are many excellent CMS products out there, especially in the open source CMS category. But they work in a way that is not the way we do, never quite fitting our needs. Being involved with CMS development for such a long time gives us the ability to define our clients needs and our own very specifically. I have logical opinions about the way a CMS product should work and function relative to the project. But ProcessWire is not a one-fits-all product, and it rarely serves a developer well to suggest that any one product is always the right solution.

Target

The system is geared towards managing corporate, institutional and educational web sites, web applications, and sites that have more complex data relationships, rather than blogs or purely community-driven sites.

ProcessWire handles content-heavy sites, highly custom sites, searchable inventories, and sites with unique design needs very well. But it is equally strong with sites that have simple content needs. Such sites don’t want to introduce an excess of unnecessary terminology and features that confuse the client.

Many CMS products need to be designed for by way of themes, blocks, widgets, etc. Likewise, many CMS products output predefined HTML/XHTML that must be themed or styled according to the site. The designer needs to adapt to the system rather than the other way around. While there is value in this approach for many sites, there are also obvious disadvantages for others. ProcessWire is built around design and code agnosticism. It focuses on providing a simple and strong developer API so that the system can easily cater to the needs of the design. As a result, ProcessWire is appealing to designers, developers, and clients that want simplicity without sacrificing uniqueness. ProcessWire excels at maintaining design integrity over time, scale, and change.

Easy to Grasp

The hierarchy and page structure within ProcessWire is often easier for clients to grasp than the abstract content containers present in many other products. ProcessWire is designed to have a Google-like simplicity that is retained regardless of scale. From the surface, there is very little complexity and the application requires little if no training. But open the hood, and you have a lot of horsepower at your disposal for just about any content need.

Design Independent

ProcessWire does not dictate anything about the design for the site that it manages … this is completely open ended. The system is well suited to power just about any output, whether that output ultimately goes towards generating an XHTML web page or feeds into another application through XML, like Flash.

Structure

ProcessWire uses a hierarchal structure for pages and navigation. There is no limit to the depth in which this structure can be defined. It is comfortable scaling to large and complex data needs, and remains simple regardless of scale.

Simplicity

The underlying structure of ProcessWire is quite a bit simpler than many other CMS products. There are no blocks, modules, sidebars, or widgets per se. Rather, everything is simply a Page in ProcessWire, with a distinct combination of fields that you define. A page in ProcessWire most often represents a physical page on the web site. But it can also be just a data container for use by other pages.

For example, see the following screencast of a campus map which demonstrates Pages being used as floors of a building. This structure of pages is ultimately rendered on just one page in the web site. But the structure made this map relatively simple to build, and even easier for the client to change.

Relational

Any given pages may cross reference each other in a one-to-one or one-to-many relationship. This gives ProcessWire the ability to function like a relational database on top of a CMS. The client (or developer of the web site), rather than the software, defines what these relationships are.

To illustrate this, lets take the familiar example of an article that needs to cross reference one or more categories or topics. Categories/topics are common features in a CMS, especially a blogging CMS. While these aren’t features in ProcessWire, they are easy to make in this system. See the relational references screencast for an example of setting up topics, and then making an article cross reference them.

See Also: ProcessWire - Developer API