Hero

Como modificar filtros expuestos de Vistas en Drupal 7

Mayo 19, 2014

enzo
Drupal
Desarrollo de Modulos
Vistas

Dentro del modulo de Vistas una de las características que hace mas atractivo nuestro sitio a los usuarios finales son los filtros expuestos, ya que estos permiten que los usuarios puedan obtener los datos bajo los criterios que el usuario final realmente necesita.

Comúnmente las opciones que se presentan en los filtros expuestos provienen de integración con otros módulos que permiten exponer los datos para filtrarlo, pero que pasa cuando necesitamos un pequeño cambio visual sin que esto afecte realmente los datos; veamos el siguiente la siguiente imagen que implementa filtros expuestos.

exposed taxonomy dropdown 0

Los anteriores filtros expuestos funcionan perfecto, aunque quizá el label <Any> no nos gusta y deseamos que se lea ALL; bueno para ello vamos a hacer uso del hook hook_form_alter() al final de cuenta los filtros expuestos son un formulario, veamos un ejemplo del cambio propuesto.

/**
 * Implements hook_form__alter().
 */
function MIMODULE_form_alter(&$form, $form_state, $form_id) {
  if($form_id == 'views_exposed_form' && $form_state['view']->name == 'YOUR_VIEW_NAME' 
    && $form['#id'] == 'YOUR_FORM_ID') {
    $form['type']['#options']['all'] = t('ALL');
  }
}

Como se puedes apreciar en el código el hook_form_alter recibe un id que en el caso de los filtros expuestos siempre es views_exposed_form por lo tanto se debe utilizar en nombre de la vista para verificar que vista deseamos modificar. Además usamos un segundo id esta ves el $form[‘#id’] con el cual podemos identificar el display dentro de la vista que estamos modificando, recuerda que dentro de una vista puedo tener varios display.

EL valor correcto para el $form[‘#id’] lo puedes obtener haciendo un debug o puedes ir al html y dentro del formulario de los filtros expuestos encontrara un input hidden llamado form_id que esta disponible en todos los formularios.

También es posible agregar opciones falsas, imaginemos que queremos una opción llamada Vinyasa que permitiría en teoría al usuario obtener el contenido relacionado con los términos de taxonomy Soft Vinyasa y Sweet Vinyasa, la nueva opción seria de gran utilidad. Pero con el ejemplo aquí mostrado solo se cubre la parte visual de la opción falsa, para lograr que el modulo de Views procese nuestra opción debemos realizar una modificación a la consulta ejecutada como se explica en la entrada de blog Como modificar resultados de una Vista en Drupal 7.

Espero que haya sido de su agrado.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.