Nama istilah taksonomi sebagai filter kontekstual untuk dilihat

18

Di D7 saya bisa memfilter tampilan sesuai dengan nama istilah taksonomi yang diambil dari URL. Contohnya adalah URL ini

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

"drupal-planet" akan dikonversi ke ID istilah taksonomi yang kemudian akan memfilter hasil tampilan sesuai.

Sekarang saya telah menyiapkan tampilan D8 yang sesuai dengan filter kontekstual "Konten: Tag (field_tags)", field_tags menjadi bidang taksonomi. Namun tampilan D8 hanya akan menampilkan hasil ketika saya memasukkan ID istilah aktual ke URL seperti ini:

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

Saya ingin juga bekerja dengan nama istilah seperti D7. Apakah fungsionalitasnya hilang, atau apakah saya perlu mengonfigurasi tampilan secara berbeda?

gbyte.co
sumber
Ada berita tentang ini? Saya memiliki masalah yang sama
jeroen

Jawaban:

20

Nama Term yang dikonversi ke filter ID Term tampaknya tidak ada untuk Tampilan D8.

Salah satu solusi pembangun situs, adalah menambahkan Hubungan , istilah Taksonomi pada node kemudian menambahkan Taksonomi Istilah: Filter nama ke Filter Kontekstual menggunakan hubungan yang disebutkan di atas. Memeriksa kotak centang Tentukan kriteria validasi , atur Validator Anda ke nama istilah Taksonomi & centang Taksonomi yang sesuai untuk difilter.

Shawn Conn
sumber
12
Jebakan pembuat situs di D8 menambahkan UI filter kontekstual: judul filter kontekstual adalah 'Nama', dan kategorinya adalah 'Istilah taksonomi'. Pencarian 'taksonomi' tidak akan mencantumkan filter ini, karena hanya judul dan deskripsi yang dicari, bukan kategorinya.
keithm
1
Selain itu, Anda dapat menimpa judul dengan {{ arguments.name }}dalam pengaturan filter kontekstual.
cptstarling
3

Demi penyelesaian, pada saat penulisan pertanyaan saya telah berhasil mengatasi masalah ini dengan mengubah nama istilah taksonomi dari URL ke ID istilah di views_hook_pre_view () dan kemudian menggunakannya sebagai input untuk filter kontekstual yang menerima ID taksonomi.

Berikut adalah kode untuk kait pandangan:

/**
 * 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;
      }
    }
  }
}
gbyte.co
sumber
2

Untuk memperluas jawaban Shawn Conn:

  • Dalam konfigurasi tampilan, di bawah Tingkat Lanjut -> Hubungan klik 'Tambah'
  • Sekarang pilih 'Persyaratan taksonomi pada simpul'
  • Pada layar berikutnya pilih kosakata 'tag' dan minta hubungannya.
  • Sekarang dalam Advanced -> Filter Kontekstual klik 'Tambah'
  • Di bawah 'Ketika Filter TIDAK tersedia', pilih 'Berikan nilai default', 'Nilai mentah dari URL'. Pilih opsi lain yang sesuai dengan kebutuhan Anda.
  • Di bawah 'Ketika Filter ADA tersedia atau nilai default diberikan' pilih 'Tentukan Kriteria Validasi' dan pilih 'Nama Istilah Taksonomi' untuk validator. Pilih kosakata 'tanda' dan kemudian klik terapkan.

Semoga itu bisa membantu!

kapak
sumber
1

Saya tidak tahu apakah Anda masih memiliki masalah ini, tetapi saya dapat membuat hubungan untuk "istilah taksonomi pada simpul" menggunakan kosa kata taksonomi yang diinginkan dan kemudian membuat filter kontekstual menggunakan hubungan itu untuk "istilah taksonomi: nama" yang memungkinkan Anda untuk memvalidasi berdasarkan nama daripada TID.

Todd Bloom
sumber
2
Saya memiliki masalah yang sama yang dijelaskan dalam pertanyaan ini, dapatkah Anda lebih jelas. Saya sudah menetapkan hubungan tetapi filter kontekstual hanya berfungsi dengan nama istilah tid bukan Tentu saja kita berbicara tentang D8. Terima kasih sebelumnya.
Vagner
1

@kiethm Telah menyediakan cara yang benar untuk melakukan pendekatan ini - Di bawah Filter Kontekstual Anda perlu memilih 'Nama' dan bukan 'Taksonomi Istilah Taksonomi' kemudian menetapkan kriteria validasi Anda untuk menggunakan 'Taksonomi Istilah Taksonomi' .

flamesquirrel
sumber
1

Hei, aku sudah mencari jawaban ini sebentar. Untuk orang lain seperti saya yang mencari cara untuk membuatnya bekerja, saya berhasil dengan sukses saya sebagian dari sini dan hasil drupal.org dan kemudian juga dari mengikuti: http://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Saya menggunakan Drupal 8 dan Zircon. Saya baru jadi saya bisa menggunakan istilah yang salah. Saya ingin membuat tautan gambar kontekstual di "Panel first col 1" berdasarkan Kategori halaman tempat seseorang berada. Apa yang saya lakukan adalah membuka Struktur> Tampilan> Carousel (tampilan yang memiliki gambar di wilayah blok itu)> Lanjutan> Tambahkan dengan Filter Kontekstual> Memiliki ID istilah taksonomi> pilih dalam Memberikan nilai default: ID istilah taksonomi dari URL (yang dibuat tidak masuk akal bagi saya tetapi apa pun)> kemudian saya memeriksa ketiga kotak: Muat filter default dari halaman term, Muat filter default dari halaman node, itu bagus untuk blok taksonomi terkait, Batasi istilah dengan kosa kata. Kemudian untuk Kosakata saya memeriksa Kategori.

PHEW! Akhirnya! Terima kasih untuk Anda semua yang ada di sini karena menunjukkan saya ke arah yang benar! Saya tidak bisa menjelaskan mengapa itu bekerja, benar-benar, tetapi apa pun, itu berhasil dan saya akan tetap dipekerjakan.

seizethecarp
sumber
1

Saya menulis modul kecil untuk mengembalikan fungsionalitas yang hilang dan membuatnya berfungsi dengan baik lagi:

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

Itu menambahkan kembali 'Konversi nama istilah menjadi ID' validator argumen untuk istilah taksonomi yang digunakan dalam 'filter kontekstual' di Tampilan. Lihat halaman proyek untuk info dan instruksi lebih lanjut.

Selamat menikmati, -Derek (dww)

Derek
sumber
0

Anda dapat melakukannya dengan menambahkan konten: telah ID jangka taksonomi dalam filter kontekstual maka Anda dapat menggunakan taksonomi di kontekstual dengan menyesuaikan kriteria filter

masukkan deskripsi gambar di sini

Adi
sumber
Anda telah mengambil tangkapan layar dari instalasi D7. Di D8, tidak ada validator "Taksonomi". Sebaliknya, ada "ID Term Taksonomi", atau "Nama Istilah Taksonomi" yang keduanya tidak menerima nama taksonomi dari URL. Mereka hanya menerima ID.
gbyte.co
0

Saya telah mencapai ini di Drupal-8 dengan mengambil filter kontekstual: dari "istilah taksonomi: Nama"

Kemudian Berikan nilai default Jenis Taksonomi ID Jangka Waktu Dari Url

Kemudian tentukan kriteria validasi berikut:

masukkan deskripsi gambar di sini

Rimi B
sumber