Progressive content filtering, with clean url's, using taxonomies as facets.

Ideal for eCommerce carts, real estate / properties sites, classified ads, or other sites with multiple categories, where users need to filter content progressively by applying filters from one or more categories.

Category Landing Pages

Taxonomy terms are used as Facets to help users filter content progressively. Similar to the way it is done on most of today’s eCommerce sites, like Amazon. This module can be used to improve your site SEO, (but be careful, you need to know what you are doing, see note at the bottom) so as the user applies different filters the clean URL's are preserved with each filter change. For example, if the user applies these three filters: Computer Monitors, Samsung and LCD, then the URL will look something like:

http://sitename.com/products/computer-monitors/samsung/lcd

When the user then changes the filters to Computer Monitors, HP and LCD, the URL will change to:

http://sitename.com/products/computer-monitors/HP/lcd

Filters can be applied in various permutations, so producing a clean URL for each unique filter combination will allow search engines to index a huge amount of landing pages.

Node pages

When a user arrives on the “node body page”, like the product page, the full URL path will be preserved.

http://sitename.com/products/computer-monitors/HP/lcd/Monitor-123-AB

If a user finds the same product (node) with different filter permutations this will be reflected in the URL:

http://sitename.com/products/multimedia/displays/HP/Monitor-123-AB

Furthermore, if a user arrives on the product page via a direct URL, say directly from a Google search, the filters from the URL will be applied automatically and menu items expanded and highlighted accordingly.

For example, if a user arrives on the site via this URL:

http://sitename.com/products/computer-monitors/HP/lcd/Monitor-123-AB

The menu tree / facets will look something like

Computer hardware
--Monitors (highlighted)
--Peripherals
--Hard discs
--Workstations

Brand
--Sony
--HP (highlighted)
--Dell
--Apple

TYPE
--LCD (highlighted)
--Plasma

But if they arrive on the same product page via a different URL, say:

http://sitename.com/products/multimedia/displays/HP/Monitor-123-AB

The menu tree / facets will now look something like

Stores
--Multimedia (highlighted)
--Books
--House appliance

Product type
--displays (highlighted)
--gaming
--handheld

Brand
--Sony
--HP (highlighted)
--Dell
--Apple

This module produces "menus" on the fly, i.e. no need for rebuilding menus or indexing as the menu items are not Drupal menu items but just items in the block. This is useful for sites where taxonomies may change frequently.

Filters / facets blocks are cached for better performance.

NOTE: This module can improve your SEO, particularly for landing pages, but it will also generate duplicate URLs for the node body. I advise adding "nofollow" to all links to the node body that appear on the landing pages, i.e in the teaser of the node. Then to index the actual node body you will need to implement site map or find another way to list nodes with follow links, such as implementing a view based on a primary category and having a different template for that view.

You should also read about robots.txt and metatags:
http://drupal.org/project/nodewords

TROUBLESHOOTING:
I installed this module with the Commerce Kickstart distribution and it's not working?
Make sure that your taxonomy term path is set to term only, i.e go to http://mysite.com/admin/config/search/path/patterns
and change pattern for, say, "Pattern for all Shoe size paths" from shoe-size/[term:name] to [term:name]. Then go to admin/config/search/path/delete_bulk and delete all aliases for "Taxonomy terms". Then go to config/search/path/update_bulk and re generate all patterns for "Taxonomy term paths". Go to admin/structure/block and create Taxo faceted blocks for the desired category.

LIMITATIONS:
If you have different terms with the same name, you may experience unpredictable results, so make sure that each term has a different name, (that is within the same vocabulary or if two terms that are part of different vocabularies share the same name). This module could be enhanced to deal with it but would need further development, let me know if you are interested in sponsoring it, www.thenoisyspider.com

Project Information

Downloads