Recap and Review of ProcessWire 3.x so far

ProcessWire 3.0.20

Working through GitHub issue reports was the focus of this week, and it looks like we've got one more week to go in working through the current queue. There have not been any major bugs in 3.x, so things are looking more and more stable. Most updates in this weeks version (3.0.20) are about fixing minor bugs and various cosmetic things.

There's nothing particularly exciting to report in this version other than that. But working towards a fully stable 3.x master version is itself an exciting thing. So rather than focus on the small tweaks and fixes from this week, lets backtrack and review all that's new in 3.x relative to the current 2.7 master version.

What’s changed between 2.x and 3.x?

Namespaces

Technically, the biggest difference between 2.x and 3.x is that 3.x uses PHP namespaces. This either matters to you a lot, or not at all, but it's a good thing for the growth of ProcessWire as a project. More

Support for compiled modules and template files

In order to ease the transition to namespaces for modules and template files, ProcessWire 3.x originally came with a compatibility mode ($config->compat2x). However, FileCompiler was later introduced to 3.x, which eliminated the need for any kind of compatibility mode. ProcessWire is able to automatically compile non-namespaces modules or template files into a format that makes them recognize namespaces. More

Front-end editing

Built-in, front-end editing capabilities come with ProcessWire 3.x, opening a whole new path for page edits. More

Major image field upgrades

Image fields got a major upgrade in 3.x thanks to a redesign by Renobird and development help from LostKobrakai. The design was originally introduced in this post by Renobird, and the results now appear in the current 3.x version with more info and screencasts here and here.

New $pages->findOne() method

ProcessWire 3.x adds a new $pages->findOne() method that behaves as kind of a hybrid between the $pages->find() and $pages->get() methods.

New $pages->getPath() and $pages->getByPath() methods

The getPath() method enables you to get the path to a page without actually loading it, making it a nice optimization for several instances. And the getByPath() method enables you to retrieve a Page object when you only know the path. Of course you can already do that with any page finding method that accepts a selector, but the difference is that getByPath() is very task focused and can do it a lot more quickly, and with a few extras as well. More

New $pages->touch() method

This method works very much like the unix "touch" command. Given a $page, it quickly updates that page's modification time (in the database) to now. More

New $pages->findMany() method

This new method enables you to find thousands upon thousands of pages at once, and even iterate them without running out of memory! More

New link abstraction features

Full page link abstraction is now built into the core Textarea field, making it possible to move or rename linked pages and have any internal links to them get updated automatically. More

Repeater upgrades

Repeaters have a ton of upgrades in 3.x, making them far more useful and efficient than before. Read more here and here.

Repeater Matrix support

In combination with some of the Repeater upgrades mentioned above, 3.x also supports the ProFields Repeater Matrix Fieldtype, which is opens up a whole new landscape of editing possibilities. More

Page tree upgrades

One of my favorite tweaks in 3.x are the page tree upgrades that make it remember where you left it and also enables it to load the page list much faster than before. More

Image resizing upgrades

Thanks to the work of Horst, we added support for new ImageSizerEngine modules and bundled the new ImageMagick resizing engine as a faster alternative to the built in GD resizing engine. More

Field rendering template files

ProcessWire 3.x also adds support for a new kind of template file. You can now have template files for any field in ProcessWire, and those template files can be used to render output for any given field. Read more here and here.

New page view options

You now have a lot more options when it comes to viewing a page on the front-end. Our "view" link is now a drop-down letting you choose to view it in the same window, in a modal, in a panel or in a new window. More

Improvements to sub-selectors

The speed at which sub-selectors operate has now been greatly improved. Basically, they are now hundreds of times faster than before. 3.x also now supports nested sub-selectors.

Extended page names

We added support for extended page names enable you to have URLs containing almost any UTF-8 characters. This is great for multi-language sites too. More

Multi-instance support

ProcessWire 3.x lets you boot multiple copies of ProcessWire at the same time, which opens new possibilities for sharing data among multiple installations.

Panel support

In addition to the common modal windows that you see in ProcessWire, we now support panels and are using them in our page list quick tree and the new debug tools panel. Panels are also an option when viewing a page.

And much more…

  • ProcessWire 3.x goes all-in on Composer support! More
  • The PagePathHistory module now supports multi-language URLs. More
  • Nice improvements to the ~= text finding operator. More
  • New long-click modal actions. More
  • New submit buttons with dropdown actions. More here and here.
  • You can now use selector arrays in addition to selector strings. More
  • New options for required fields. More
  • New 3.x comprehensive API reference documentation. More
  • And yes there's a lot more too that isn't mentioned here, but mostly smaller optimizations and tweaks.

Have a great weekend

As you can see, 3.x is really coming along nicely and a huge upgrade. We're also feeling very good about the stability of it, and think we may be getting close to making it the new master.

Next week we'll be continuing to cover GitHub issue reports and hope to get into some of the PRs as well. For those that like using the 2.x branch, we may also have some news you'll like coming very soon.

Have a great weekend and remember to read the ProcessWire Weekly!

Comments

  • Can

    Can

    • 8 years ago
    • 70

    Awesome article...remembered me about some great features I already used but forgot to implement in new projects..thx for that :D

    And I'm really looking forward to docs about multi-instance ;)
    Abrazos

  • apeisa

    apeisa

    • 8 years ago
    • 00

    I don't think there will be much news regarding 2.x branch. All focus on development has been and will be on 3.0.

  • Renobird

    Renobird

    • 8 years ago
    • 40

    Wow! Seeing it all in one place gives you a sense of how huge these updates really are. A huge thank you for all this amazing work. And, a huge thank you to everyone who has contributed ideas, code, testing, etc...

  • Basilis

    Basilis

    • 8 years ago
    • 20

    You are my hero!!! Thank you so much, and also everyone who has contributed!!!

  • Fil

    Fil

    • 8 years ago
    • 01

    Thanks for the great PW 3 upgrades! Curious about the 2.x branch news.

     

    NextProcessWire 3.0.21 and 2.8.21!

    3

    We've got some great updates for you this week, especially for those still running ProcessWire 2.x. ProcessWire 3.x also got a lot more stable this week. In fact, this week ProcessWire 2.x and 3.x formed a new alliance! More 

    Latest news

    • ProcessWire Weekly #547
      In the 547th issue of ProcessWire Weekly we're going to check out the latest core updates, introduce a couple of new modules, and more. Read on!
      Weekly.pw / 2 November 2024
    • Custom Fields Module
      This week we look at a new ProFields module named Custom Fields. This module provides a way to rapidly build out ProcessWire fields that contain any number of subfields/properties within them.
      Blog / 30 August 2024
    • Subscribe to weekly ProcessWire news

    “We were really happy to build our new portfolio website on ProcessWire! We wanted something that gave us plenty of control on the back-end, without any bloat on the front end - just a nice, easy to access API for all our content that left us free to design and build however we liked.” —Castus, web design agency in Sheffield, UK