Blog

Views 3 makes programmers happy

Written by Metal Toad Staff | Mar 25, 2011 12:00:00 AM
Filed under:

There are five programming customizations that I've had to do over and over with Views 2:

  1. Create custom exposed form filters, via hook_form_alter() and/or hook_views_handlers()
  2. Create "Sort By" exposed form fields.
  3. Create aggregates by adding GROUP BY via hook_views_query_alter() or hook_views_pre_execute()
  4. Create WHERE clauses what support OR via hook_views_query_alter() or hook_views_pre_execute()
  5. Hack up the pager to match client comps

All of these are addressed by Views 3:

Exposed form is now a plugin

I was very happy to see: class views_plugin_exposed_form extends views_plugin.

The new class for exposed forms can now be extended to provide custom functionality; however, Views 3 exposed forms are so feature rich, I may not ever find the need. One huge benefit is the array of options that are available: Submit buttons, reset button (awesome!), and sort buttons. Even though I will likely still use hook_form_alter(), I love having the option to build more robust exposed filter forms for clients.

Exposed sorts

If you look at the sort handlers, you'll see a new method: can_expose(). With this slice of apple pie, the query() class will ORDER BY using exposed sorts! I've spend countless hours forcing Views 2 to provide this feature, and I am very happy to see this in Views 3.

GROUP BY support

The new query plugin takes advantage of the GROUP BY methods in the Drupal 7 database abstraction layer. No more query_alters to get GROUP BY support! Note that I said query plugin: The views query itself is now a plugin and can be extended! I expect to see several contributed modules scoring big wins by extending this plugin.

AND/OR support in the WHERE clause

Just like above, the Drupal 7 database abstraction layer is insanely powerful, and Views just climbs right on board. The new WHERE Groups functionality enables endless possibilities of AND/OR WHERE clauses.

Pager is now a plugin

I've suffered many hours in overrides of theme('views_mini_pager') and theme('pager'). I'm glad to say these days are behind me. Not only is the Views 3 pager so feature rich that I'll likely never need to write code, it is now a plugin that can be easily extended. One of my favorite features is the exposed "All items" option, which is something I've hacked into Views 2 theme overrides no less than a dozen times.

References: