Drupal view с контекстными фильтрами, возвращающими пустой экран
Это очень специфический вопрос, поэтому любые отзывы будут оценены...
Я использую панели и представления в файле пользовательского шаблона представления на сайте drupal 7. Панель имеет встроенный вид, а также дополнительный контент под ней. У меня есть представление с 3 контекстными фильтрами, у которых термин таксономии извлечен из URL. Это работает нормально. Так что, если я пойду к чему-то вроде
/search/ford/red
Он успешно вытянет все элементы, имеющие таксономический термин "ford", к которым также применен таксономический термин "красный".
Но что интересно, если я заменю один из терминов на что-то, что существует в словаре, но не имеет никакого отношения к элементам, которые успешно соответствуют первым критериям, он просто загрузит упаковщик сайта с пустой панелью. Никаких ошибок, окно фильтра поиска исчезает, нумерация страниц исчезает, даже другой контент, встроенный в представление, исчезает.
Кажется, не имеет значения, что я выбрал для "Действие, которое нужно предпринять, если значение фильтра не проверяется" для любого или всех фильтров, примененных к представлению. Я попытался установить его так, чтобы он не показывал результаты, но я предположил, что он не применяется, так как я также использую пользовательский файл шаблона для представления.
Я ожидаю, что это не даст результатов. Но я также ожидаю, что панель поиска будет вверху, чтобы пользователь мог выбрать другой фильтр из меню, а также другой контент, встроенный в представление.
Поле поиска настраивается для файла шаблона представления. Единственная причина, по которой он не будет отображаться, заключается в том, что само представление не загружается. В этом случае похоже, что вся панель не отображается.
Не стесняйтесь спрашивать о деталях, если этого недостаточно для продолжения. Благодарю.
1 ответ
Для будущих читателей, испытывающих множество необъяснимых дыр в друпале, вот полный взлом, который я должен был сделать, чтобы предотвратить эту необъявленную ошибку:
В моем обычном представлении я должен был проверить размер $view->result
а затем переопределить его, если он пуст:
<?php if(sizeof($view->result) < 1): $view->result = array(0 => array()); ?>
<div class="no-results">
There are no results.
</div>
<?php else: ?>
--- normal view loop here ---
<?php endif; ?>
Нет, просто добавление подсчета в цикл результатов не сработало. Я не знаю, как drupal обрабатывает представления, но если бы я позволил массиву результатов быть пустым, он бы не отображал содержимое этой панели.
Обратная сторона - он по-прежнему не отображает никакого другого содержимого, встроенного в эту панель, поэтому, если бы у меня было другое встроенное представление под этим, оно таинственным образом исчезло бы. О, хорошо, я просто скажу администраторам, что они не могут заполнить эту страницу ничем, кроме фильтруемого индекса. Фу, но это друпальная жизнь... поз.