Nome del termine tassonomia come filtro contestuale per la visualizzazione


18

In D7 sono stato in grado di filtrare una vista in base al nome di un termine tassonomia preso dall'URL. Un esempio potrebbe essere questo URL

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

"drupal-planet" verrebbe convertito nel termine ID tassonomia che quindi filtrerebbe i risultati della vista di conseguenza.

Ora ho impostato una vista D8 corrispondente con un filtro contestuale "Contenuto: tag (field_tags)", poiché field_tags è il campo della tassonomia. Tuttavia, la vista D8 mostrerà i risultati solo quando passo l'ID del termine effettivo nell'URL in questo modo:

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

Vorrei che funzionasse anche con il nome del termine come ha fatto D7. Manca la funzionalità o devo configurare la vista in modo diverso?


Qualche novità al riguardo? Ho lo stesso problema
jeroen il

Risposte:


20

Il nome del termine convertito in filtro ID termine sembra mancare per le viste D8.

Una soluzione alternativa al site builder è aggiungere una relazione , termini di tassonomia sul nodo, quindi aggiungere un termine di tassonomia: filtro nome ai filtri contestuali utilizzando la relazione di cui sopra. Selezionando la casella di controllo Specifica criteri di convalida , imposta il Validatore sul nome del termine Tassonomia e seleziona la Tassonomia appropriata su cui filtrare.


12
La trappola del costruttore di siti nella D8 aggiunge l'interfaccia utente del filtro contestuale: il titolo del filtro contestuale è "Nome" e la categoria è "Termine tassonomico". La ricerca di "tassonomia" non riuscirà a elencare questo filtro, poiché vengono cercati solo il titolo e la descrizione, non la categoria.
keithm,

1
Inoltre puoi sovrascrivere il titolo con {{ arguments.name }}nelle impostazioni del filtro contestuale.
scrutando il


3

Solo per completezza, al momento della stesura della domanda sono riuscito a risolvere questo problema convertendo il nome del termine tassonomia dall'URL in un ID termine in views_hook_pre_view () e quindi utilizzandolo come input per il filtro contestuale che accetta gli ID tassonomia.

Ecco il codice per l'hook delle viste:

/**
 * 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

Per espandere la risposta di Shawn Conn:

  • Nella configurazione della vista, in Avanzate -> Relazioni fai clic su "Aggiungi"
  • Ora seleziona "Termini di tassonomia sul nodo"
  • Nella schermata successiva scegli il vocabolario 'tag' e richiedi la relazione.
  • Ora sotto Avanzate -> Filtri contestuali fai clic su "Aggiungi"
  • In "Quando il filtro NON è disponibile", seleziona "Fornisci valore predefinito", "Valore non elaborato dall'URL". Seleziona qualsiasi altra opzione adeguata alle tue esigenze.
  • In "Quando il filtro È disponibile o viene fornito un valore predefinito", scegliere "Specifica criteri di convalida" e selezionare "Nome termine tassonomia" per il validatore. Scegli il vocabolario 'tag' e quindi fai clic su Applica.

Spero possa aiutare!


1

Non so se hai ancora questo problema, ma sono stato in grado di creare una relazione per "Termini di tassonomia sul nodo" usando il vocabolario di tassonomia desiderato e quindi creare un filtro contestuale usando quella relazione per "Termine di tassonomia: Nome" che ti consente per convalidare in base al nome anziché a TID.


2
Ho lo stesso problema descritto in questa domanda, puoi essere più chiaro. Ho già impostato una relazione, ma il filtro contestuale funziona solo con tid anziché con il nome del termine. Naturalmente stiamo parlando di D8. Grazie in anticipo.
Vagner

1

@kiethm ha fornito il modo corretto di affrontare questo problema: in Filtri contestuali è necessario selezionare "Nome" e non "ID termine tassonomia", quindi impostare i criteri di convalida per utilizzare "Nome termine tassonomia" .


1

Ehi, ho cercato questa risposta per un po '. Per chiunque come me che cercasse come farlo funzionare, mi sono fatto strada verso il mio successo in parte da qui e dai risultati di drupal.org e poi anche da: http://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Sto usando Drupal 8 e Zircon. Sono nuovo di zecca quindi posso usare termini sbagliati. Volevo creare collegamenti di immagini contestuali in "Panel first col 1" in base alla categoria della pagina in cui si trova qualcuno. Quello che ho fatto è stato andare su Struttura> Viste> Carosello (la vista che contiene le immagini in quella regione di blocco)> Avanzate> Aggiungi per filtri contestuali> Ha un ID termine tassonomia> selezionare in Fornisci valore predefinito: ID termine tassonomia dall'URL (che ha reso non ha senso per me, ma comunque)> quindi ho selezionato tutte e tre le caselle: Carica filtro predefinito dalla pagina dei termini, Carica filtro predefinito dalla pagina del nodo, va bene per i blocchi di tassonomia correlati, Limita i termini per vocabolario. Quindi per i vocabolari ho controllato le categorie.

Accidenti! Infine! Grazie a tutti voi per avermi indicato nella giusta direzione! Non potrei spiegare perché funziona, totalmente, ma qualunque cosa, fa e continuerò ad essere impiegato.


1

Ho scritto un piccolo modulo per ripristinare la funzionalità mancante e farlo funzionare di nuovo correttamente:

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

Aggiunge nuovamente il validatore dell'argomento "Converti nome del termine in ID" per i termini di tassonomia utilizzati nei "filtri contestuali" in Views. Vedi la pagina del progetto per maggiori informazioni e istruzioni.

Divertiti, -Derek (dww)


0

Puoi farlo aggiungendo contenuto: ha il termine ID tassonomia nel filtro contestuale, quindi puoi usare la tassonomia nel contesto modificando i criteri di filtro

inserisci qui la descrizione dell'immagine


Hai preso uno screenshot da un'installazione D7. In D8, non esiste un validatore "Termine tassonomia". Esiste invece "ID termine tassonomia" o "Nome termine tassonomia" entrambi i quali non accettano il nome tassonomia dall'URL. Accettano solo l'ID.
gbyte.co,

0

Ho raggiunto questo obiettivo in Drupal-8 prendendo il filtro contestuale: di "Termine tassonomico: Nome"

Quindi fornire il valore predefinito Tipo ID tassonomia Termine da URL

Quindi specificando i seguenti criteri di convalida:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.