Drupal 7 melihat filter kontekstual (taksonomi: tampilan ringkasan), menampilkan term-name yang dapat dibaca alih-alih term-id

9

Dalam pandangan saya, saya menggunakan filter kontekstual - dengan " output ringkasan " default - untuk menyaring hasil saya dengan istilah taksonomi .

Masalahnya adalah bahwa hasil ringkasan dikelompokkan berdasarkan daftar taksonomi term-id's (termasuk jumlah simpul) dan bukan term-id yang dapat dibaca manusia.

  • 1 (21)
  • 2 (16)
  • dll.

Apakah mungkin untuk mengubah (atau mengaitkan) tampilan tampilan ringkasan, dengan tidak mencantumkan term-id-nya, tetapi term-id-nama?

  • Nama jangka A (21)
  • Nama jangka B (16)

(Tidak masalah bagi saya jika URL permintaan yang sebenarnya tetap sama.)

Tujuan saya adalah membuat format output yang lebih mudah dibaca dari ringkasan istilah taksonomi saya, yang dapat dipahami oleh pengguna akhir.

Stefan Looij
sumber
Saya telah menemukan pertanyaan yang sama ketika ditanya tentang Bagaimana cara menggunakan argumen Tampilan untuk mengembalikan nama istilah taksonomi dan bukan ID jangka? , dan diskusi aktif tentang hal itu di Atur judul tampilan ke nama istilah saat argumen filter adalah istilah id . Mereka memberikan tambalan, tetapi tidak berhasil.
Stefan Looij

Jawaban:

7
  1. Setel tampilan Anda ke bidang dan buka bidang yang berisi istilah taksonomi terkait.

  2. Tetapkan filter kontekstual Anda untuk memfilter istilah taksonomi dan pilih untuk menyertakan validator.

  3. Atur validator ke istilah taksonomi dan centang kotak untuk kosakata Anda.

  4. Pilih opsi untuk jenis nilai filter sebagai 'Nama term dikonversi ke Term ID.

  5. Simpan filter dan pergi ke kotak pratinjau. Jika Anda memasukkan nama teks istilah Anda, Anda akan melihat konten yang diinginkan.

Jika Anda meneruskan informasi dari URl Anda mungkin harus memilih kotak centang 'Ubah tanda hubung di URL ke spasi dalam nilai filter nama jangka' juga karena nama mesin menggunakan tanda hubung

Ashlar
sumber
Sesuatu yang saya lupa adalah bahwa ketika memilih filter kontekstual, itu harus untuk Istilah Taksonomi (nama) dan menggunakan hubungan dengan bidang pada node yang Anda tampilkan untuk istilah itu sendiri, daripada Konten: my_term_field_name
CR47
Jawaban ini memberi tahu Anda cara membuat filter kontekstual bekerja dengan nama yang dapat dibaca manusia dari istilah taksonomi, tetapi itu tidak menjawab pertanyaan. Pertanyaannya adalah bagaimana menampilkan nama yang dapat dibaca manusia dari istilah taksonomi dalam hasil yang difilter.
BrokenBinary
5

Salin folder "views_view-summary.tpl.php" folder "modules / contrib / views / theme" Anda. (Anda dapat membuatnya melihat atau memblokir spesifik dengan menambahkan akhiran nama file.)

Catatan: Jika Anda menggunakan ini sebagai tampilan admin, pastikan Anda menyalin file ini dalam folder tema admin, bukan folder tema default Anda!

Anda tidak memerlukan perubahan apa pun dalam pengaturan tampilan Anda. Sesuaikan tpl-override Anda dengan baris berikut, dan Term-ID Anda dikonversi menjadi Term-names yang dapat dibaca:

<div class="item-list">
  <ul class="views-summary">
    <?php foreach ($rows as $id => $row): ?>
    <li>
      <a href="<?php print $row->url; ?>"<?php print !empty($row_classes[$id]) ? ' class="'. $row_classes[$id] .'"' : ''; ?>>
        <?php
        /* begin replacement */
        $term_object = taxonomy_term_load($row->link);
        print  $term_object->name; 
        /* end replacement*/
        ?>
      </a>
      <?php if (!empty($options['count'])): ?>
      &nbsp;(<?php print $row->count?>)
      <?php endif; ?>
    </li>
    <?php endforeach; ?>
  </ul>
</div>
Stefan Looij
sumber
1

Ada artikel tentang Drupal yang mudah: Menggunakan lampiran tampilan untuk memberikan ringkasan yang konsisten dalam Tampilan 2 .

kamu
sumber
Dengan contoh Anda atau misalnya berdasarkan pada simpul-judul sebagai filter kontekstual, itu berfungsi dengan baik. Tetapi dalam pertanyaan saya filter kontekstual didasarkan pada istilah Taksonomi itu. Dalam hal ini, ringkasan hanya akan menampilkan ID Term dan Anda tidak dapat menampilkan nama Term yang lebih mudah dibaca.
Stefan Looij