Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

9.14.1. Ampliando el controlador de filtro personalizado de Views en Drupal

04/05/2025, by Ivan

En el artículo anterior vimos cómo integrar el módulo Views con una base de datos personalizada para el módulo ¿Esto ayudó?:

https://www.drupal.org/project/did_this_help

En este artículo sobrescribiremos el filtro de Views para el campo de opción (sí/no):

Campo Sí/No

Ahora es un campo de texto normal creado por el handler "string", que permite introducir una palabra clave de búsqueda. Pero como solo tenemos dos opciones (Sí/No), sería mejor usar un menú desplegable en lugar de un campo de texto. Vamos a crear un archivo en /did_this_help/src/Plugin/views/filter/DidThisHelp.php:

<?php

namespace Drupal\did_this_help\Plugin\views\filter;

use Drupal\views\Plugin\views\filter\InOperator;

/**
 * Filtra por una lista dada de opciones sí/no.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("did_this_help")
 */
class DidThisHelp extends InOperator {

}

Vamos a heredar la clase DidThisHelp desde la clase padre InOperator, que proporciona el filtro con menú desplegable, botones de radio o casillas de verificación según la configuración en la interfaz de Views.

En el método getValueOptions() agregaremos la lista de opciones disponibles:

  /**
   * {@inheritdoc}
   */
  public function getValueOptions() {
    if (isset($this->valueOptions)) {
      return $this->valueOptions;
    }

    $this->valueOptions = [
      'yes' => $this->t('Sí'),
      'no' => $this->t('No'),
    ];

    return $this->valueOptions;
  }

La propiedad valueOptions ya está definida en la clase padre InOperator, por lo que solo necesitamos definir el array de opciones.

Como resultado, obtenemos ese filtro:

Filtro Sí/No

Si activamos el filtro expuesto, entonces vemos este menú desplegable:

Desplegable Sí/No

Puedes sobrescribir cualquier clase de filtro de esta lista de clases proporcionadas por Views y otros módulos: