I've got an show/performance relationship, where a show can have multiple performances, and each performances has a single date (when the performance takes place).

I'm showing these in a Drupal view, but it's becoming a bit problematic.

I need to sort this list so that the shows with the closest performances to now appear at the top, the problem is that shows with only past performances also need to show.

The last part appears particularly problematic, I think I could just sort this by greater than or equal to now, but I don't think that will be sufficient in this case.

Is this possible? Or do I need to try and argue for a different way of displaying this content

  • Just curious: why would you want that in the first place? It sounds like the perfect way to confuse your site visitors. Jun 6, 2016 at 19:43

2 Answers 2


I would make two view lists, one to show forthcoming performances and one to show past performances.

This way you can title each list so it's clear to users which is which. It would be feasible through careful CSS to make it look like they are one list. And each list will only show as required.

Filter on the date, either '>= now' or '<= now', to make each list work as you wish.


If you're going to have all events in one view, you're going to need to define an ordered set of rules so that current/upcoming events are placed ahead. If there's some expired flag field (e.g. a checkbox that notes the event has expired) on these events that might do it (e.g. sort by expired status, then sort by ascending date).

However, if your expired/non-expired events have different sorting criteria (e.g. show non-expired events in ascending date order & expired events descending order) you're going to run into problems with Views' sorting criteria.

I'd say your intuition about creating 2 separate views is probably the right one. You can display multiple views on a page. Most likely, you want them visually distinct so this solution works well on theming level as well as site building level.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.