Felfedett szűrős nézetek találatlistája és az "üres szöveg"

Bálint képe

Ha felfedett szűrővel ellátott nézeteket készítünk, időnként felmerül az igény, hogy csak akkor jelenítsünk meg találatokat, ha a felhasználó már adott meg szűrőfeltételeket. Boobaa írt erről egy bejegyzést, az ott bemutatott megoldás szépen teszi a dolgát.
Viszont mi a helyzet, ha csak akkor szeretnénk az üres szöveget megjeleníteni, ha már adtunk meg valamilyen szűrőfeltételt, és arra nem született találat? Módosítanám tehát a feladatot: csak a felfedett szűrők megjelenítése mindaddig, amíg a felhasználó nem adott meg szűrőfeltételt. Ezután vagy a találati listát kapja, vagy pedig az üres szöveget.

A megoldás egy kis hookkal lehetséges, íme:

<?php
/**
 * Implementation of hook_views_pre_render()
 */
function mymodule_views_pre_render(&$view) {
  if ($view->name == 'myview' && $view->current_display == 'page_1'
      && !count($view->exposed_input)) {
	  $view->display_handler->set_option('empty', NULL);
  }
}
?>

A hook_views_pre_render() minden nézet kimenetének előállítása előtt lefut.
Először is írnunk kell egy feltételt, hogy csak a nekünk megfelelő view és display esetén legyen érvényes a változtatásunk, ezután megvizsgáljuk, hogy érkezett-e input felfedett szűrőn keresztül. Amennyiben nem, az üres szöveg értékét NULL-ra állítjuk.