it-swarm-es.com

Cambiar la selección predeterminada para un filtro expuesto de Vistas 2

Tengo un filtro expuesto en mi vista que permite a los usuarios elegir entre dos tipos de contenido diferentes. El valor predeterminado para el filtro expuesto parece ser elegido por el tipo de contenido que aparece primero alfabéticamente. Entonces, si dejo que los usuarios elijan entre los tipos de contenido "Banda" y "Canción", el valor predeterminado es "Banda". Quiero cambiar este valor predeterminado a un tipo de contenido diferente ("Canción" en el ejemplo aquí). No puedo encontrar una opción en la interfaz de Vistas para esto. ¿Tengo que hacer esto a través de hook_form_alter? Si es así, ¿cómo haría exactamente eso?

7
Chaulky

Entonces, probé de la manera que sugirió @David Lanier, pero no pude entenderlo. Así que volví a Drupal lo básico y lo probé desde el enfoque hook_form_alter(). Después de algunos problemas, también encontré un publicación sobre cómo cambiar los valores predeterminados del filtro de Vistas . Tomé el mismo enfoque y lo puse a funcionar. A continuación se muestra el código utilizado, con un par de modificaciones para eliminar mi material específico del sitio. Como siempre, asegúrese de reemplazar "modulename" con el nombre de su módulo .

function modulename_form_alter(&$form, $form_state, $form_id) {
 // is this the right form?
 if($form['#id'] == 'name-of-the-views-form-displayed') {
   if (empty($_GET['label-of-the-filter']))  {
    $form_state['input']['label-of-the-filter'] = 'default-value-for-filter';
   }
  }
}

Solo reemplace name-of-the-views-form-displayed con, adivinó, el nombre del formulario de vistas que desea cambiar. La forma más fácil de encontrar esto es inspeccionar la fuente de la Vista en el navegador (me encanta Firebug para esto) y encontrar el elemento form, luego tomar su atributo id. Para encontrar el nombre del filtro y el valor que debe establecer, cambie los filtros y realice la "búsqueda". Mire en la barra de direcciones y verá los valores que necesita usar aquí como parámetros en la url.

¡Espero que esto ayude a otros a solucionar este problema también!

5
Chaulky

Hice de esta manera

function hook_form_views_exposed_form_alter(&$form, &$form_state) {

  global $user;
  $account = user_load($user->uid);
  $term = taxonomy_term_load($account->field_user_industry[LANGUAGE_NONE]['0']['tid']);

  unset($form['field_event_industry_tid']['#size']);
  if ($form['#id'] == 'views-exposed-form-events-events-pane') {
    // get the view argument if defined
    $term_filter=$_GET;
    unset($term_filter['q']);
    $term_arg = $term_filter;
    if (!empty($term_arg)) {
      $terms = $term_arg;
    }

    // change our input as required
    if (isset($terms)) {
      $form_state['input']['field_event_industry_tid'] = $terms['field_event_industry_tid'];
    }
    else{
      $form_state['input']['field_event_industry_tid'] = $term->tid;
    }
  }
}

En mi caso, tuve que cambiar el valor predeterminado de acuerdo con la consulta, pero si no es así, uso el valor que quiero, ¡de esta manera funciona perfectamente!

2
David

Quizás ya obtuviste la respuesta, pero así es como lo resolví. Si edita el Filtro en la Vista, hay una opción llamada "Limitar la lista a los elementos seleccionados". Marqué esa opción y el valor predeterminado se restableció, por lo que ahora el valor predeterminado del filtro es All (con la etiqueta Any).

1
Oriol

Una vez que se expone el filtro, en las opciones de configuración del filtro, debería ver casillas de verificación para cada uno de los tipos de contenido en su sitio. Las que marca aquí son las que se seleccionan de forma predeterminada cuando un usuario final ve la vista.

Si necesita que solo algunos de sus tipos de contenido estén disponibles en el formulario, y solo algunos de los preseleccionados, deberá hacer algo como esto: Agregar dos filtros de tipo de contenido:

  • Filtro 1 = solo los tipos de contenido que deberían estar disponibles. No exponga este filtro.
  • Filtro 2 = el filtro expuesto. Seleccione aquí los que deberían preseleccionarse de manera predeterminada.
1
David Lanier

Vea la parte inferior de la publicación en:

http://realguess.net/node/28

Si no selecciona ninguna de las opciones en Sexo del cliente, y marca la casilla Opcional Este filtro expuesto es opcional y tendrá opciones adicionales para permitir que no se configure. cuadro, entonces será la opción predeterminada. Si selecciona el elemento Masculino, su selección predeterminada será Masculino cuando se visualice la vista.

0
Sid Kshatriya