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