Drupal : how to sort and display nodes grouping by first letter in view

Disco picture Disco · Jan 3, 2011 · Viewed 12.9k times · Source

I have a huge list of companies (nodetype : company, only field is title) that I want to display in a nice way groupping them by first letter like a dictionnary like this :

A
Abc company
Alot of work company

B
Beautiful company
Best company

Trying to find a way to do it in an elegent way; no module seems to exist for that. Any idea ?

Answer

messedup picture messedup · Mar 23, 2011

You don't really need to go down the code path to achieve this. You can see some of this described here: http://drupal.org/node/641342

Basically, add the node title to the view twice. The first is your normal field with links, etc. The second one is for the grouping.

The second field you mark to exclude from display, remove the label, and trim the field to a maximum length of 1 (uncheck the word boundary, ellipsis, and html options).

Then, under the "row style" options you'll find the "group by" setting, and you just select the second node title field.

You may need to apply additional theming if you want to have it look a certain way or possibly adding anchors for each letter, but otherwise that should work for version 6 of Drupal with views 2 module

Also, I should point out the group by module http://drupal.org/project/views_groupby which can offer some additional functionality but which isn't really needed for the original question.