it-swarm-id.com

Cara mudah untuk membuat blok secara terprogram?

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?

26
jayarjo

Untuk Drupal 7:

Gunakan hook_block_info dan hook_block_view kait di modul khusus Anda . hook_block_info mendefinisikan blok. Ini akan muncul di admin > struktur > blokir . * hook_block_view * menampilkan konten. Lihat contoh di bawah ini dari Drupal API.

Contoh hook_block_info, di mana dua blok didefinisikan (berjudul Sindikasi dan konten Terbaru):

    <?php
function 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:

<?php
function 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 API Blok di Drupal.org untuk daftar lengkap kait. Drupal 6 sedikit berbeda. Tidak ada hook_block_view hook; sebaliknya gunakan hook_block untuk mendeklarasikan blok.

34
NEAR DARK

Untuk Drupal 6, jawaban singkatnya adalah Anda membuat modul khusus yang mengimplementasikan hook_block .

Untuk Drupal 7, Anda menggunakan Blok API .

Jika ini adalah perampokan pertama Anda dalam pengembangan modul, saya sangat merekomendasikan Pro Drupal Pengembangan atau Pro Drupal 7 Pengembangan . Hampir semua yang perlu Anda ketahui ada di sana.

6
mpdonadio

Anda mungkin mencari apa yang saya cari dan menemukannya di sini:

/modules/block/block.module:
block_custom_block_save ($ edit, $ delta).

Tetapi ketika Anda melihat fungsi ini Anda akan melihat bahwa Anda bisa melakukan sendiri db_update.

db_update('block_custom')
->fields(array(
  'body' => $edit['body']['value'],
  'info' => $edit['info'],
  'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
3
Dan Shumaker

Dalam Drupal 7, lihat block_add_block_form_submit di modules/block/block.admin.inc.

Ini adalah formulir pembuatan blok reguler; tampaknya hanya menyisipkan 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).

Tabel block_custom menampung konten.

2
richardg

Anda dapat menggunakan modul Fitur Ekstra untuk mengekspor blok.

Atau, buat catatan langsung di tabel blok.

INSERT INTO blocks (
  module, delta, theme, status, weight, region, custom,
  throttle, visibility, pages, title, cache)
VALUES (
  'views','blog-block_1','mytheme',1,10,'sidebar_first',0,0,1,'blog\r\nblog/*','',-1)
1
Dylan Tack