Сегодня у меня был интересный запрос от клиента, и я не совсем уверен, как лучше всего его решить с помощью Drupal Views. В настоящее время у них есть тип контента «Член команды», который представляет членов их сотрудников. На странице каждого сотрудника есть ссылка на все другие страницы сотрудников. Пока это не проблема.
Они хотят, чтобы этот список начинался с человека, на которого мы сейчас смотрим, а затем продолжаем с того, кто идет сразу после него в «отсортированном» порядке. Затем, когда он достигает конца списка, он оборачивается и начинает с самого начала, пока они не вернутся к себе (аналогично тому, как работает круговой связанный список).
Так, например, предположим, что у меня есть члены команды A, B, C, D, E, F и G:
- Если я смотрю на члена команды A, порядок списка следующий: A, B, C, D, E, F, G.
- Если я смотрю на члена команды D, список будет следующим: D, E, F, G, A, B, C.
- Если я смотрю на члена команды G, список будет следующим: G, A, B, C, D, E, F.
Если бы я имел дело с какой-то другой структурой данных в обычной среде программирования, я уверен, что мог бы придумать какой-то алгоритм, чтобы определить, где мы сейчас находимся, и начать отсюда сортировку и подделать «круговой список». Взгляды кажутся немного сложнее.
Единственное возможное решение, которое я могу придумать, - это создать два отдельных представления, а затем просто объединить результаты вместе после факта.
- Одно представление было бы отсортированным списком всех членов команды, у которых число сортировки больше или равно текущему члену команды.
- Второе представление, представляющее собой отсортированный список всех членов команды, у которых число сортировки меньше или равно текущему члену команды.
Мне просто любопытно, есть ли более эффективные способы сделать такую сортировку с представлениями?