Bagaimana saya bisa meneruskan parameter ke blok?


8

Apakah mungkin untuk secara parameter melewatkan parameter ke suatu blok?

Jawaban:


7

Per jawaban lain , blok 'bodoh' dan tidak memiliki kemampuan untuk memiliki argumen 'disahkan'. Namun, mereka dapat mengambil argumen dari konteks halaman, seperti ID node, pengguna saat ini, dll.

Anda benar-benar memiliki dua pilihan 'mudah':

  • Tulis blok Anda sendiri: Cukup mudah, jika Anda bisa melakukan sedikit PHP. Buat modul dan terapkan hook_block () . Ada banyak contoh di Drupal.org .
  • Gunakan modul Panel dan / atau Tampilan: Panel memungkinkan Anda membuat panel yang dapat meloloskan semua variabel dan konteks, TETAPI tanpa tema khusus, blok itu harus tinggal di area konten, bukan wilayah Drupal; jadi itu tergantung pada situs Anda, dan di mana Anda ingin blok. Tampilan dapat membuat blok juga, dan menerima argumen dari URL halaman, pengguna saat ini dan juga kode khusus melalui modul Views PHP . Tampilan dan Panel bekerja sama dengan sangat baik.

1
Secara umum juga dengan panel, jika tema Anda mendukungnya, Anda dapat mematikan semua blok lain dan menampilkan konten lain yang akan sadar konteks sebagai blok "pseudo".
Malks

2

Anda tidak dapat meneruskan apa pun secara terprogram ke blok AFAIK. Anda bisa membiarkan blok bisa dikonfigurasi (menggunakan hook_block_configure di D7). Atau Anda dapat membuat fungsi tema Anda sendiri, dan Anda bisa meneruskan argumen untuk itu. Apa yang sedang Anda coba lakukan?


2

Konfigurasikan filter kontekstual pilih "Berikan nilai default" type => "kode php" dan gunakan argumen yang Anda inginkan. mis: return arg (1);


2

Untuk kasus khusus (tetapi tersebar luas) di mana blok Anda adalah tampilan dari View, Anda dapat menggunakan views_embed_viewuntuk membuat blok dengan parameter yang didapatnya melalui filter kontekstual dari View (yaitu, biasanya dari URL).

Sebagai contoh:

print views_embed_view('news', 'panel_pane_1', 'world');

Setiap parameter setelah yang kedua akan diteruskan sebagai nilai filter kontekstual ke blok.

Sumber: Ditulis ulang dari jawaban ini oleh David Thomas , berlisensi CC-BY-SA 3.0

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.