it-swarm-vi.com

Cách dễ dàng để tạo khối lập trình?

Học Drupal. Bây giờ tôi biết rằng tôi có thể tạo khối thông qua phần phụ trợ, nhưng tôi muốn tiền xử lý chúng theo chương trình, nếu có thể. Trong thực tế tôi khá chắc chắn rằng nó có thể. Nhưng cách dễ nhất là gì?

26
jayarjo

Cho Drupal 7:

Sử dụng hook_block_infohook_block_view hook trong mô-đun tùy chỉnh . hook_block_info xác định khối. Nó sẽ hiển thị trong cấu trúc admin > > khối . * hook_block_view * hiển thị nội dung. Xem các ví dụ bên dưới từ API Drupal.

Ví dụ về hook_block_info, trong đó hai khối được xác định (có tiêu đề Nội dung và nội dung gần đây):

    <?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;
}
?>

Ví dụ về 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;
}
?>

Tham khảo trang API Blocks trên Drupal.org để biết danh sách đầy đủ các hook. Drupal 6 có một chút khác biệt. Không có hook_block_view hook; thay vào đó sử dụng hook_block để khai báo các khối.

34
NEAR DARK

Với Drupal 6, câu trả lời ngắn gọn là bạn tạo một mô-đun tùy chỉnh thực hiện hook_block .

Với Drupal 7, bạn sử dụng API khối .

Nếu đây là bước đột phá đầu tiên của bạn vào phát triển mô-đun, tôi rất khuyến khích Pro Drupal Development hoặc Pro Drupal 7 Phát triển . Khá nhiều thứ bạn cần biết là ở đó.

6
mpdonadio

Bạn có thể đang tìm kiếm những gì tôi đang tìm kiếm và tìm thấy nó ở đây:

/modules/block/block.module:
[.__.] block_custom_block_save ($ chỉnh sửa, $ delta).

Nhưng khi bạn nhìn vào chức năng này, bạn sẽ thấy rằng bạn có thể tự mình thực hiện 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

Trong Drupal 7, hãy xem block_add_block_form_submit trong modules/block/block.admin.inc.

Đây là hình thức tạo khối thông thường; có vẻ như chỉ cần chèn các bản ghi trực tiếp chứ không phải gọi một chức năng khác. Lưu ý rằng mỗi bản ghi trong bảng khối được liên kết với một chủ đề (bạn chỉ có thể sử dụng bản ghi hoạt động nhưng sẽ an toàn hơn khi chèn bản ghi cho tất cả các chủ đề).

Bảng block_custom giữ nội dung.

2
richardg

Bạn có thể sử dụng mô đun Tính năng bổ sung để xuất khối.

Ngoài ra, chỉ cần tạo bản ghi trực tiếp trong bảng khối.

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