drupal 7 – ¿Cómo controlo las opciones disponibles para un filtro expuesto?

Pregunta:

Tengo un filtro expuesto "país" para la vista de mi lista de miembros (estoy usando el módulo de campo de direcciones para almacenar el país). Me gustaría mostrar solo los países en mis filtros expuestos donde tengo miembros. Puedo restringir manualmente el filtro por países seleccionados.

¿Cuál sería la mejor opción entre las siguientes?

  • temas de vistas-formulario-expuesto.tpl.php
  • usando hook_form_alter()
  • ocultando algunos campos con CSS

Respuesta:

Acabo de hacer algo similar para algunos datos que estoy exponiendo en Vistas para mi módulo personalizado (es un poco el mismo proceso sin importar de dónde las vistas obtengan sus datos).

Para hacer esto de la manera más eficiente / fácil posible, debe crear su propio controlador de filtro.

Para un ejemplo realmente simple:

<?php
class custom_handler_filter_countries extends views_handler_filter_string {
  /**
   * Shortcut to display the exposed options form.
   */
  function value_form(&$form, &$form_state) {
    $form['value'] = array(
      '#type' => 'select',
      '#title' => t('Countries'),
      '#options' => function_that_returns_options_you_want(),
    );

    return $form;
  }
}
?>

Luego, en el archivo .info de su módulo, agregue el archivo que contiene esta clase (en este ejemplo, 'custom_handler_filter_countries.inc') a la matriz de archivos del archivo .info ( files[] = includes/custom_handler_filter_countries.inc ).

Para hacer que su vista particular use este controlador de vistas en lugar del controlador predeterminado, debería poder cambiar el controlador en hook_views_pre_view() , creo. (En mi sitio en particular, dado que yo mismo definí la tabla de datos de vistas, simplemente configuré mi controlador personalizado para los campos que lo necesitaban. Para su sitio, dado que el controlador normal ya está definido por Campo de dirección, debe anular el controlador de filtro.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım