Bagaimana cara membuat tautan kontekstual untuk blok yang saya render dalam kode saya?


11

Saya memuat subjek dan konten blok module_invoke()dan digunakan render()untuk merendernya. Saya ingin menggunakan tautan kontekstual untuk blok ini. Bagaimana saya bisa membuat mereka juga?

Ini adalah kode yang saya gunakan di halaman - front.tpl.php template.

$block = module_invoke('block', 'block_view', '4);
print render($block);

Kode apa yang harus saya gunakan?

Jawaban:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

Sayang sekali kita harus menggunakan fungsi pribadi dari modul blok (_ * ()) untuk mencapai ini.


Jadi untuk contoh OPs akan menjadi: $ block = block_load ('block', '4');
Cameron

12

Jawaban Bart akan memberikan peringatan Standar Ketat (diaktifkan secara default di PHP 5.4). Untuk memperbaikinya cukup gunakan variabel perantara untuk array yang dapat diurai:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

Alasan peringatan itu terjadi adalah karena drupal_renderfungsi mengharapkan parameternya menjadi referensi. Itu memiliki tanda tangan drupal_render(&$elements). Untuk informasi lebih lanjut, lihat jawaban untuk pertanyaan serupa ini .


2

Tautan kontekstual sangat membantu dan sangat mudah diimplementasikan. Untuk kasus penggunaan Anda, Anda perlu menerapkan hook_block_view_alter()untuk mengubah item #contextual_links agar sesuai dengan kebutuhan Anda. Referensi ini akan membantu Anda:

GL :)


1
Apa yang OP maksudkan adalah bahwa dia secara terprogram menampilkan blok, tetapi tautan kontekstual tidak ditambahkan.
Bart
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.