Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

Drupal

Баг пагинации во Views 2

В процессе доработки Cotranslate.Net столкнулся с любопытным багом пагинации во Views 2 (Drupal 6 т.е.), с которым раньше как-то не встречался.

Воспроизводится он так:

1. Делаем модуль, в нем создаем новую таблицу истории (лога) с разными записями о том, что происходило с материалом.
2. Дружим эту таблицу с Views. Поскольку данные таблицы актуальны только для материалов, делаем ее не базовой, а просто join-им с {node}.
3. Создаем представление на базе материалов, в котором выводим поля из таблицы истории, в представление добавляем пагинацию (хоть полную, хоть мини — не важно).
4. Пока выводятся записи для всех материалов, все нормально, пагер появляется и работает.
5. Теперь добавим в таблицу аргумент, либо просто фильтр по nid (чтобы вывести историю только для заданного материала).
6. Profit Пагер немедленно пропадает. Причем не только из вывода — даже в SQL-запросе представления нет никаких его следов. И без разницы как выводить: блоком, аттачем, страницей, программно — пагера все равно нет.

Видимо, Views 2 считает, что если базовое значение (материал) — одно, то и строить пагер незачем. Самый простой (и примененный мной) выход — интегрировать таблицу истории как базовую и построить вьюху относительно этой таблицы, с присоединением материала через relationship. Тогда работает.

Интересно, есть ли такой баг во Views 3? На уровне работы с полями и entityreference — не воспроизводится.

Комментарии