Cara mudah untuk membuat blok secara terprogram? [Tutup]
26
Belajar Drupal. Saya tahu sekarang bahwa saya dapat membuat blok melalui backend, tapi saya lebih suka membuat mereka secara terprogram, jika memungkinkan. Sebenarnya saya cukup yakin itu mungkin. Tapi apa cara termudah?
Gunakan hook_block_info dan hook_block_view hooks di modul khusus Anda . hook_block_info mendefinisikan blok. Ini akan muncul di admin > struktur > blok . * hook_block_view * menampilkan konten. Lihat contoh di bawah ini dari API Drupal.
Contoh hook_block_info, di mana dua blok didefinisikan (berjudul Sindikasi dan konten Terbaru):
<?phpfunction hook_block_info(){// This example comes from node.module.
$blocks['syndicate']= array('info'=> t('Syndicate'),'cache'=> DRUPAL_NO_CACHE,);
$blocks['recent']= array('info'=> t('Recent content'),// DRUPAL_CACHE_PER_ROLE will be assumed.);return $blocks;}?>
Contoh hook_block_view:
<?phpfunction hook_block_view($delta =''){// This example is adapted from node.module.
$block = array();switch($delta){case'syndicate':
$block['subject']= t('Syndicate');
$block['content']= array('#theme'=>'feed_icon','#url'=>'rss.xml','#title'=> t('Syndicate'),);break;case'recent':if(user_access('access content')){
$block['subject']= t('Recent content');if($nodes = node_get_recent(variable_get('node_recent_block_count',10))){
$block['content']= array('#theme'=>'node_recent_block','#nodes'=> $nodes,);}else{
$block['content']= t('No content available.');}}break;}return $block;}?>
Lihat halaman Blokir API di Drupal.org untuk daftar lengkap kait. Drupal 6 sedikit berbeda. Tidak ada hook_block_view hook; alih-alih gunakan hook_block untuk mendeklarasikan blok.
Jika ini adalah percobaan pertama Anda ke pengembangan modul, saya sangat merekomendasikan Pro Drupal Development atau Pro Drupal 7 Development . Hampir semua yang perlu Anda ketahui ada di sana.
Tampaknya hook_block hanya dapat digunakan dalam modul terpisah: | Saya masih belum mengerti mengapa kerumitan ini ... Apakah ini merupakan praktik biasa untuk memiliki modul untuk semua yang ada di Drupal?
jayarjo
2
Ya, modul adalah konsep utama Drupal. Dalam banyak hal, Drupal sendiri adalah seperangkat modul dan semuanya dilakukan melalui kait modul.
mpdonadio
3
Anda mungkin mencari apa yang saya cari dan menemukannya di sini:
Di Drupal 7, lihat block_add_block_form_submitdi modules/block/block.admin.inc.
Ini adalah formulir pembuatan blok reguler; tampaknya hanya memasukkan catatan secara langsung daripada memanggil fungsi lain. Perhatikan bahwa setiap catatan dalam tabel blok ditautkan ke satu tema (Anda bisa menggunakan yang aktif tetapi lebih aman untuk menyisipkan catatan untuk semua tema).
Jawaban:
Untuk Drupal 7:
Gunakan hook_block_info dan hook_block_view hooks di modul khusus Anda . hook_block_info mendefinisikan blok. Ini akan muncul di admin > struktur > blok . * hook_block_view * menampilkan konten. Lihat contoh di bawah ini dari API Drupal.
Contoh hook_block_info, di mana dua blok didefinisikan (berjudul Sindikasi dan konten Terbaru):
Contoh hook_block_view:
Lihat halaman Blokir API di Drupal.org untuk daftar lengkap kait. Drupal 6 sedikit berbeda. Tidak ada hook_block_view hook; alih-alih gunakan hook_block untuk mendeklarasikan blok.
sumber
Untuk Drupal 6, jawaban singkatnya adalah Anda membuat modul khusus yang mengimplementasikan hook_block .
Untuk Drupal 7, Anda menggunakan Block API .
Jika ini adalah percobaan pertama Anda ke pengembangan modul, saya sangat merekomendasikan Pro Drupal Development atau Pro Drupal 7 Development . Hampir semua yang perlu Anda ketahui ada di sana.
sumber
Anda mungkin mencari apa yang saya cari dan menemukannya di sini:
Tetapi ketika Anda melihat fungsi ini Anda akan melihat bahwa Anda bisa melakukan sendiri db_update.
sumber
Di Drupal 7, lihat
block_add_block_form_submit
dimodules/block/block.admin.inc
.Ini adalah formulir pembuatan blok reguler; tampaknya hanya memasukkan catatan secara langsung daripada memanggil fungsi lain. Perhatikan bahwa setiap catatan dalam tabel blok ditautkan ke satu tema (Anda bisa menggunakan yang aktif tetapi lebih aman untuk menyisipkan catatan untuk semua tema).
The block_custom meja memegang konten.
sumber
Anda dapat menggunakan modul Fitur Ekstra untuk mengekspor blok.
Atau, buat catatan langsung di tabel blok.
sumber