it-swarm-id.com

Bagaimana saya bisa membuat tampilan simpul anak berdasarkan hubungan menu?

Katakanlah Anda memiliki halaman berikut dalam susunan menu:

  • Proyek
    • Proyek Satu
    • Proyek Dua
    • Proyek Tiga

Saya mencari cara untuk membuat tampilan yang akan disematkan di halaman Proyek (induk) yang akan menampilkan gambar, judul, dan teks (ringkasan) dari halaman anak.

Hubungan antara orang tua dan anak-anak didefinisikan dalam susunan menu.

Saya tahu saya bisa menggunakan referensi simpul, tetapi itu berarti setiap kali seseorang membuat halaman mereka harus mendefinisikan hubungan menu dan kemudian hubungan referensi simpul.

Saya juga tahu bahwa saya bisa membuat tipe konten lain tapi saya pikir ini berlebihan karena semua halaman konten terlihat sama.

17
Camsoft

Salah satu solusinya adalah dengan menggunakan istilah taksonomi untuk mendefinisikan hubungan dan kemudian menggunakan modul Menu Taksonomi untuk menerjemahkan hubungan istilah tersebut ke dalam item menu. Anda kemudian dapat menggunakan modul modul Halaman Kustom dan Konteks untuk mengontrol informasi dan wilayah di semua halaman jika Anda tidak ingin menggunakan panel.

4
Adam S

Anda dapat melakukan ini menggunakan modul Menu Node API dan Menu Node Views .

Buat tampilan dengan tipe konten yang diperlukan, dan pilih filter kontekstual "Menu: ID tautan menu" (ini hanya tersedia dengan modul-modul di atas terpasang).

Di bawah, "Ketika nilai filter tidak tersedia," pilih "Berikan nilai default" dan pilih "kode PHP."

Cuplikan berikut akan melakukannya, maka Anda cukup memperlihatkan blok dari tampilan dan Anda ada di sana:

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
16
Emile Kott

The Node Hierarchy Module memungkinkan jenis hubungan ini, serta menyediakan integrasi tampilan.

Hierarki Node memungkinkan node menjadi anak-anak dari node lain yang membuat hierarki konten seperti pohon. Modul ini menawarkan:

  • 1-Klik pembuatan menu hierarkis
  • Remah roti hierarkis
  • URL hierarkis otomatis menggunakan Pathauto (dan modul token)

    (misalnya: q = aboutus/sejarah/awal).

  • Pembuatan menu hierarkis secara otomatis jika diinginkan.
  • Integrasi Tampilan Opsional.
  • Opsional Node Integrasi akses.
4
CCMonkey

Mungkin ini telah berubah untuk D7/Views 3, tetapi Anda tidak memerlukan PHP untuk mencapai perilaku yang diinginkan:

  1. instal menu_views , menu_node dan menu_node_views modul.
  2. buat tampilan baru jenis "pohon menu"
  3. tambahkan bidang "Menu: judul tautan" dan "Menu: deskripsi"
  4. Tambahkan Filter/Argumen Kontekstual "Menu: Node ID"; Berikan nilai default "Content ID from URL"
  5. Tambahkan Hubungan "Menu: ID tautan menu induk"

voila. Itu seharusnya tidak berfungsi , tetapi ternyata berhasil.

Ini berfungsi dengan baik hanya dengan node, tetapi keuntungan menggunakan tautan menu melalui hierarki node adalah Anda tidak terbatas untuk membangun navigasi di sekitar node. Anda bahkan dapat memasukkan tautan eksternal dalam tampilan Anda.

2
aaronbauman

Ada modul yang relatif baru Menu Tampilan Node Filter Anak yang tampaknya melakukan persis apa yang Anda inginkan:

Modul ini menambahkan filter kontekstual ke Views yang akan mengambil simpul anak simpul sesuai dengan struktur menu.

2
nwellnhof

Jika Anda menggunakan terjemahan entitas dan simpul dilampirkan ke menu yang berbeda, berikut adalah adaptasi dari kode yang memfilter pada bahasa saat ini. Anda perlu menyalin ini sebagai PHP kode untuk filter kontekstual (id tautan menu induk) dalam tampilan Anda seperti dijelaskan dalam jawaban lain

 if (function_exists('menu_node_get_links')) {
global $language;
$lang = $language->language;
$node = node_load(intval(arg(1)));
if (isset($node->menu_node_links)) {
  foreach ($node->menu_node_links as $mlid => $data) {  
    if ($lang == $data->language) {
      return($mlid);
    }
  }
}
  }
0
bendev

Jawaban dari Emile benar, tetapi saya harus menempelkan kode PHP dalam filter kontekstual dari jenis " Menu: Id tautan menu induk ".

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
0
cptstarling

Sudahkah Anda mempertimbangkan untuk menggunakan Referensi Node untuk tujuan ini?

  1. Berikan bidang referensi simpul ke tipe konten yang ingin Anda tampilkan.
  2. Gunakan bidang itu sebagai filter kontekstual dalam Tampilan (nilai default: ID Konten dari url ).
  3. Tambahkan tampilan tampilan ini sebagai blok ke konten. Node yang sedang ditampilkan akan dilihat sebagai induk dari node yang merujuknya misalnya.

Dengan demikian Anda dapat mencapai hasil yang sama seperti yang mungkin Anda cari.

0
cptstarling

Dari masalah antrian of Menu Node Views kami memiliki solusi yang bagus ini:

  • tambahkan filter kontekstual dengan 'ID tautan menu induk',
  • pilih 'Berikan nilai default'
  • pilih 'kode php khusus'
  • masukkan kode berikut

    $menu_item = menu_get_active_trail();  
    $current_item = array_pop($menu_item);  
    $menu_item_plid = $current_item['plid'];  
    return $menu_item_plid;  
    
0
tostinni