Bagaimana cara membuat pohon bersarang dengan istilah & node dengan Views 3?

22

Saya perlu membuat yang serupa seperti ini:

Warna (Kosakata)

  • Merah (istilah)
    • Gelap (istilah)
      • Simpul 1
      • Simpul 2
    • Cahaya (istilah)
      • Simpul 3
      • Simpul 4
  • Biru (istilah)
    • Simpul 5
    • Simpul 6
  • Hijau (istilah)
    • Simpul 7
    • Simpul 8

(Poin-poin adalah indentasi.)
Apakah ada cara untuk melakukan ini dengan Drupal 7 dan pandangan 3? Jika tidak, apakah ada cara lain untuk melakukan ini?

iStryker
sumber
Untuk memperjelas - karena mungkin saya salah mengerti pertanyaan Anda - Anda ingin menampilkan struktur seperti ini di satu halaman?
Maciej Zgadzaj
Ya hanya pada 1 halaman
iStryker

Jawaban:

15

Berkat refino, saya menemukan solusi yang bagus menggunakan modul-modul berikut:

Di bawah ini Anda menemukan penjelasannya:

  1. Pertama buat Taksonomi baru (sebut saja "Folder")
  2. Lalu, buat jenis konten baru (sebut saja "Elemen") dengan bidang referensi istilah ke taksonomi "Map"
  3. Buat Tampilan "Konten" baru (sebut saja "Tampilan Elemen")
  4. Pilih Tampilan Bidang
  5. Tambahkan Filter Kontekstual ke bidang referensi istilah Anda
  6. Buat Tampilan "Taksonomi" baru (sebut saja "Folder Folder")
  7. Tambahkan 2 bidang (istilah nama dan istilah id). Bidang kedua dapat dikecualikan dari tampilan
  8. Dalam Hubungan: tambahkan "istilah induk"
  9. Tambahkan bidang ketiga (istilah id) dan tetapkan ke relasi orang tua Anda. Bidang ini dapat dikecualikan dari tampilan
  10. Pilih Format "Tree (Adjacency model)" dan pilih di parameter: Daftar dipesan + Bidang utama (tid pertama Anda), bidang Induk (tid Anda ditetapkan ke relasi induk). Anda sekarang harus memiliki pohon yang bagus dengan semua istilah Anda bersarang
  11. Tambahkan bidang ke-4 "Global: View" (ini dilengkapi dengan Tampilan Bidang Tampilan) dan pilih "Tampilan elemen" Anda, tampilkan Master tambahkan [tid] di kolom teks Argumen

Semoga bantuan ini

Tepuk tangan

Edit oleh iStryker : Ini yang saya dapat. Satu-satunya hal yang saya ubah adalah membuat Tampilan Elemen tampilan tabel, dan menghapus kelas default (baris & strip).

Gambar produk akhir oleh iStryker

Fred
sumber
Sangat membantu dari komentar ini. Hanya sebuah catatan kecil: Anda mungkin ingin mengubah nama bidang (Judul administratif) karena dalam dropdown pengaturan VT kedua bidang "ID Term" tidak dapat dibedakan.
Artur
Jawaban ini membuat saya 90% di sana. Saya perlu menghapus kelas default di setiap bidang; Hapus kelas tabel pada tampilan 'Tampilan Elemen'; Tema sedikit
iStryker
Saya telah menambahkan langkah untuk mengurangi duplikat dalam tampilan Konten. Selain itu, bidang "Argumen" di Global: View sekarang diberi label "Filter kontekstual" dan token yang digunakan adalah "[! Tid]".
mesin lainnya
Apakah mungkin melakukan ini tetapi dengan Grup Organik dan bukan Taksonomi?
IamOnStage
14

Saya membuat tiga tampilan di Drupal 7.8 dan Views 3 + Views Field, menyarangkan satu tampilan ke tampilan lain menggunakan Include View, dan saya mendapat hasil seperti itu (terlampir). masukkan deskripsi gambar di sini

Langkah-langkah bagaimana melakukannya:

  1. Buat kosakata "Warna" dan isi dengan tag.

  2. Buat tampilan baru dari taksonomi node Warna - Saya menyebutnya "Nodes of Colors"

2.1 Format Tabel, Pengaturan: Pengelompokan bidang: Istilah taksonomi: Nama

2.2 Filter kontekstual Tingkat Lanjut: Istilah taksonomi: Istilah induk

2.3 Hubungan Lanjutan: Istilah taksonomi: Konten menggunakan Warna

2.4 Set Fields: Istilah taksonomi: ID Term, istilah taksonomi: Nama, (field_color) Konten: Judul

2.5 Kriteria filter: Istilah taksonomi: Kosa kata (= Warna)

2.6 Jika mau, Anda juga dapat mengatur "Kecualikan dari tampilan" untuk ID Term, istilah Taksonomi: Nama

2.7 Set Path: / node-of-colors /%

2.8 Setel tidak ada perilaku hasil: Global: Area tampilan (kami akan kembali ke sini nanti) 2.9 save

3.Buat tampilan baru Warna taksonomi node - Saya menyebutnya "Nodes of Colors 2"

3.1 Format Tabel, Pengaturan: Kolom pengelompokan: tidak ada

3.2 Filter kontekstual Lanjut: Istilah taksonomi: Term ID

3.3 Hubungan Lanjutan: Istilah taksonomi: Konten menggunakan Warna

3.4 Set Fields: Istilah taksonomi: ID Term, istilah taksonomi: Nama, (field_color) Konten: Judul

3.5 Kriteria filter: Istilah taksonomi: Kosakata (= Warna)

3.6 Jika mau, Anda juga dapat mengatur "Kecualikan dari tampilan" untuk ID Term, istilah Taksonomi: Nama

3.7 Set Path: / node-of-colors-2 /%

3.8 Setel tidak ada perilaku hasil: Global: tidak ada

3,9 Simpan

Kembali dan edit "Nodes of Colors" lagi

4.1 pergi ke Setel tidak ada perilaku hasil: Global: Area tampilan

4.2 Atur Tampilan untuk disisipkan: Lihat: nodes_of_colors2 Tampilan: halaman

4.3 mengatur filter kontekstual bawaan

4.4 simpan

5 Kembali ke Tampilan lagi (Jenis Istilah)

5.1 Buat tampilan baru dari taksonomi node Warna - Saya menyebutnya "Pohon Warna"

5.1 Format Tabel, Pengaturan: Kolom pengelompokan: tidak ada

5.2 Filter kontekstual Tingkat Lanjut: tidak ada

5.3 Hubungan Lanjutan: Istilah taksonomi: Istilah orang tua

5.4 Set Fields: Istilah taksonomi: ID Term, istilah taksonomi: ID Term, istilah taksonomi: Nama, Lihat: Sertakan Tampilan (Sertakan Tampilan)

5.5 Kriteria filter (1): Istilah taksonomi: Kosakata (= Warna)

5.6 Kriteria filter (2): (Induk) Istilah taksonomi: Term

5.7 Jika mau, Anda juga dapat mengatur "Kecualikan dari tampilan" untuk Term ID dan label Include View

5.8 Set Path: / colors-tree

5.9 Tetapkan tidak ada perilaku hasil: tidak ada

5,10 Hemat

... dan ini seharusnya, akhirnya.

Refineo
sumber
dapatkah Anda memperjelas "5,4 bidang setel ... tampilan: sertakan tampilan" sedikit lagi. Saya tidak melihat opsi untuk itu di mana pun. Terima kasih
uwe
Maaf, saya tidak menulis. Saya menggunakan Views 7.x-3.0-rc1 + Bidang Tampilan 7.x-1.0-rc1
Refineo
oke terima kasih. Saya mengikuti beberapa instruksi tentang masalah mereka juga drupal.org/node/1171604
uwe
Wow, jawaban ini mendapat banyak dukungan dalam 7 hari berlalu. Adakah yang mengujinya, atau Anda / mereka hanya mengunggah karena @Refineo memberikan jawaban yang paling terperinci?
iStryker
Saya mencoba langkah-langkah ini lagi, dan tidak berhasil. Saya benci Anda semua yang menjawab pertanyaan ini minggu lalu tanpa pengujian
iStryker
4

Saya belum pernah mencoba versi D6 atau D7 ini sendiri tetapi saya pikir saya akan menyebutkannya kalau-kalau itu yang Anda cari: Views Tree Module - D7 progress

Sunting : Sekarang ada versi D7, checkout pohon homepage modul Views

nmc
sumber
3

Jika Anda ingin mendapatkan vid dari URL kemudian gunakan kode berikut.

$vid = $_GET['vid'];
$tid = 0;
$level = 0;
print taxonomy_tree($vid, $tid, $level);
function taxonomy_tree($vid, $tid = 0, $level) {
  $children = taxonomy_get_children($tid, $vid);
  $output = '';
  if ($children) {
    $output .= '<ul>'; 
    foreach ($children as $child) {
      $level++;
      $output .= '<li class="taxonomy-tree-lvl' . $level . ' ">'; 
print $level;
      $output .= l($child->name, 'taxonomy/term/'. $child->tid) . '(' . taxonomy_term_count_nodes($child->tid) . ')'; 
      $output .= taxonomy_tree($vid, $child->tid, $level);
      $output .= '</li>';

      $level--; 
    }
    $output .= '</ul>'; 
  }

  return $output;

}

Atau gunakan kode berikut.

$vocabulary = taxonomy_vocabulary_load(2);//Here pass the vid
print $vocabulary->name;
$vid1 = $_GET['vid'];
if(!$vid1) {
$vid1 = 2;
print 'empty';
}
$vid = 2;
$parent = 0;
print get_child_terms($parent, $vid1);
 function get_child_terms($parent, $vid) {
      $sql = "SELECT td.tid, td.vid, td.name"
         . "  FROM {term_data} td"
         . "  JOIN {term_hierarchy} th on th.tid = td.tid"
         . " WHERE th.parent = %d"
         . "   AND td.vid = %d"
         . " ORDER BY td.weight, td.name";
    $terms = db_query($sql, $parent, $vid);
    $output = "";
    while ($aterm = db_fetch_object($terms)) {
        $output .= "<li>";
        $output .= l("$aterm->name", "taxonomy/term/$aterm->tid/all") . " ("
                .  taxonomy_term_count_nodes($aterm->tid) . ")</li>\n"
                .  get_child_terms($aterm->tid, $vid);
    }
    return ($output != "") ? "<ul style='list-style-type: none;
  margin: 0px 0px 0px 20px;
  padding: 0px;'>\n". $output ."</ul>\n" : "";
  }
Ahmad
sumber
2

Tentu saja ada:

  1. Atur kosakata hierarki Anda,
  2. Tambahkan ke jenis konten apa pun yang dipilih,
  3. Buat tampilan daftar node dari tipe konten itu, dengan filter kontekstual :

    • "Konten: Memiliki ID istilah taksonomi" - jika Anda ingin mendaftar hanya node yang ditetapkan untuk istilah tertentu,
    • atau "Konten: Memiliki ID istilah taksonomi (dengan kedalaman)" - jika Anda ingin membuat daftar node yang ditetapkan untuk istilah tertentu serta syarat anaknya.

      Dalam hal ini, dalam konfigurasi filter Anda perlu mengatur kedalaman - berapa banyak level di bawah (atau di atas) yang Anda inginkan agar filter ini berfungsi.

Kemudian, dengan asumsi URL tampilan Anda adalah http://mysite.com/myview dan 'Red' tid = 1, jika Anda masuk ke http://mysite.com/myview/1 itu akan mencantumkan Anda semua node yang ditugaskan ke salah satu dari istilah 'merah', 'gelap' dan / atau 'terang'.

Maciej Zgadzaj
sumber
Saya tidak mencari jawaban untuk istilah tertentu. Saya mencari tampilan untuk seluruh kosa kata
iStryker
Dan itulah yang saya jelaskan.
Maciej Zgadzaj
2

Anda dapat menggunakan modul menu Taksonomi . Berikut ini adalah kutipan tentang hal itu (dari halaman proyek modul):

Mengubah kosakata taksonomi Anda menjadi menu dengan mudah!

Fitur:

  • Menu Kustom per kosakata
  • Menggunakan jalur istilah taksonomi default atau jalur khusus
  • Integrasikan dengan Tampilan
  • Integrasikan dengan Pathauto: gunakan alias URL / path
  • Tidak mengganggu modul menu lainnya
dilari
sumber
Selamat Datang di Drupal SE! taxonomy_menu adalah proyek keren dan dapat melakukan ini dengan baik. OP ingin melakukannya di Views.
AyeshK
0

Saya mencoba untuk mencapai hal yang sama tetapi belum menemukan banyak tersedia di D7. Modul Taksonomi Blok melakukannya dalam blok - bukan tampilan.

kamu
sumber
0

Saya percaya saya telah menemukan cara lain untuk menyelesaikan masalah ini, dan saya pikir ini lebih sederhana daripada solusi lainnya. Itu tidak melibatkan modul tambahan dan Anda hanya perlu satu tampilan.

Dengan asumsi Anda telah membuat kosakata hierarki dua tingkat (Warna) dan tipe konten dengan referensi istilah untuk vocab itu, lakukan hal berikut:

  1. Buat tampilan baru dan filter dengan "Kosa kata taksonomi: Nama mesin (= Warna)"
  2. Tambahkan hubungan: (1) Taxonomy term: Content using Colordan (2)Taxonomy term: Parent term
  3. Tambahkan bidang ke Tampilan: (1) Title(pilih field_colordi "Hubungan" dan minta hubungan ini ), (2) Taxonomy term name(jangan gunakan hubungan dan kecualikan dari tampilan) (3) Taxonomy term name(ya, sekali lagi, kali ini pilih Parentuntuk hubungan dan kecualikan dari tampilan).
  4. Sekarang kelompokkan dengan mengklik Pengaturan Format: (1) pengelompokan 1:, (Parent) Taxonomy term: Name(2)Taxonomy term: Name

Selesai Jika Anda memiliki lebih dari dua level, tambahkan saja Relationship of Parent menggunakan Parent sebagai hubungan relationship.

EDIT: jika Anda tidak memerlukan hubungan Anda akan berakhir dengan dupes. Orang tua akan terdaftar dua kali jika mereka memiliki istilah anak yang dirujuk oleh node. Jadi ini membatasi jawaban sedikit dalam istilah tingkat atas itu tanpa simpul yang referensi itu tidak akan ditampilkan. Juga, karena penyortiran mungkin penting, memiliki konten apa pun yang merujuk istilah tingkat atas berpotensi menyebabkan masalah bagi Anda tergantung pada kebutuhan tampilan.

cdmo
sumber
Tidak ada filter "Kosa kata taksonomi: Nama mesin (= Warna)" hingga menambahkan hubungan. Saya menduga langkah pertama adalah menjadi yang kedua. Juga saya tidak bisa mengerti bagaimana cara menambahkan Judul bidang ketika memilih field_color di "Hubungan".
Dimetry