Nombre del término de taxonomía como filtro contextual para ver


18

En D7 pude filtrar una vista de acuerdo con un nombre de término de taxonomía tomado de la URL. Un ejemplo sería esta URL

http://www.gbyte.co/tags/drupal-planet/rss.xml

"drupal-planet" se convertiría al ID de término de taxonomía que luego filtraría los resultados de la vista en consecuencia.

Ahora he configurado una vista D8 correspondiente con un filtro contextual "Contenido: Etiquetas (field_tags)", siendo field_tags el campo de taxonomía. Sin embargo, la vista D8 solo mostrará resultados cuando pase el ID del término real a la URL de esta manera:

http://www.gbyte.co/tags/9/rss.xml

Me gustaría que también funcione con el término nombre como lo hizo D7. ¿Falta la funcionalidad o necesito configurar la vista de manera diferente?


¿Alguna noticia sobre esto? Tengo el mismo problema
jeroen

Respuestas:


20

El término nombre convertido a plazo ID de filtro que parece ser falta de D8 Vistas.

Una solución alternativa para el creador de sitios es agregar una relación , términos de taxonomía en el nodo y luego agregar un término de taxonomía: filtro de nombre a los filtros contextuales utilizando la relación mencionada anteriormente. Al marcar la casilla de verificación Especificar criterios de validación , configure su Validador en Nombre de término de taxonomía y marque la Taxonomía apropiada para filtrar.


12
La trampa del generador de sitios en la interfaz de usuario de filtro contextual de D8 agrega: el título del filtro contextual es 'Nombre', y la categoría es 'Término de taxonomía'. La búsqueda de 'taxonomía' no podrá enumerar este filtro, ya que solo se busca el título y la descripción, no la categoría.
keithm

1
Además, puede sobrescribir el título con {{ arguments.name }}los ajustes del filtro de contexto.
cptstarling


3

Solo por completar, al momento de escribir la pregunta, he logrado solucionar este problema al convertir el nombre del término de taxonomía de la URL en un ID de término en views_hook_pre_view () y luego usarlo como entrada para el filtro contextual que acepta identificadores de taxonomía.

Aquí está el código para el enlace de vistas:

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}

2

Para ampliar la respuesta de Shawn Conn:

  • Dentro de la configuración de vista, en Avanzado -> Relaciones, haga clic en 'Agregar'
  • Ahora seleccione 'Términos de taxonomía en el nodo'
  • En la siguiente pantalla, elija el vocabulario de 'etiquetas' y requiera la relación.
  • Ahora en Avanzado -> Filtros contextuales, haga clic en 'Agregar'
  • En 'Cuando el filtro NO está disponible', elija 'Proporcionar valor predeterminado', 'Valor bruto de URL'. Seleccione cualquier otra opción apropiada para sus necesidades.
  • En "Cuando el filtro está disponible o se proporciona un valor predeterminado", elija "Especificar criterios de validación" y seleccione "Nombre del término de taxonomía" para el validador. Elija el vocabulario de 'etiquetas' y luego haga clic en aplicar.

¡Espero que ayude!


1

No sé si todavía tiene este problema, pero pude crear una relación para "Términos de taxonomía en el nodo" usando el vocabulario de taxonomía deseado y luego crear un filtro contextual usando esa relación para "Término de taxonomía: Nombre" que le permite para validar en función del nombre en lugar de TID.


2
Tengo el mismo problema descrito en esta pregunta, ¿puede ser más claro? Ya configuré una relación, pero el filtro contextual solo funciona con tid en lugar del nombre del término. Por supuesto que estamos hablando de D8. Gracias por adelantado.
Vagner

1

@kiethm ha proporcionado la forma correcta de abordar esto: en los filtros contextuales debe seleccionar 'Nombre' y no 'ID de término de taxonomía' y luego establecer sus criterios de validación para usar 'Nombre de término de taxonomía' .


1

Hola, he estado buscando esta respuesta por un tiempo. Para cualquier otra persona como yo que busca cómo hacerlo funcionar, me metí en el éxito en parte desde aquí y los resultados de drupal.org y luego también desde lo siguiente: http://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Estoy usando Drupal 8 y Zircon. Soy nuevo, así que puedo usar los términos incorrectos. Quería crear enlaces de imágenes contextuales en "Panel first col 1" según la Categoría de la página en la que alguien está. Lo que hice fue ir a Estructura> Vistas> Carrusel (la vista que tiene las imágenes en esa región de bloque)> Avanzado> Agregar por filtros contextuales> Tiene ID de término de taxonomía> seleccione en Proporcionar valor predeterminado: ID de término de taxonomía desde URL (que hizo no tiene sentido para mí, pero lo que sea)> luego marqué las tres casillas: Cargar filtro predeterminado de la página de términos, Cargar filtro predeterminado de la página de nodo, eso es bueno para los bloques de taxonomía relacionados, Limitar los términos por vocabulario. Luego, para Vocabularios, verifiqué Categorías.

¡UF! ¡Finalmente! ¡Gracias a todos ustedes por señalarme en la dirección correcta! No podría explicar por qué funciona, totalmente, pero lo que sea, funciona y seguiré trabajando.


1

Escribí un pequeño módulo para restaurar la funcionalidad faltante y hacer que vuelva a funcionar correctamente:

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

Vuelve a agregar el validador de argumento 'Convertir nombre de término en ID' para términos de taxonomía utilizados en 'filtros contextuales' en Vistas. Vea la página del proyecto para más información e instrucciones.

Disfruta, -Derek (dww)


0

Puede hacerlo agregando contenido: tiene ID de término de taxonomía en filtro contextual, luego puede usar taxonomía en contexto ajustando los criterios de filtro

ingrese la descripción de la imagen aquí


Ha tomado una captura de pantalla de una instalación D7. En D8, no hay un validador de "Término de taxonomía". En cambio, hay "ID de término de taxonomía" o "Nombre de término de taxonomía", que no aceptan el nombre de taxonomía de la URL. Solo aceptan la identificación.
gbyte.co

0

He logrado esto en Drupal-8 tomando el filtro contextual: del "Término de taxonomía: Nombre"

Luego proporcione el valor predeterminado Tipo Taxonomía ID de término de la URL

Luego, especifique los siguientes criterios de validación:

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.