- Drupal
- Cài đặt và sử dụng
- Sử dụng các module cộng thêm
- Drupal 6.x
- Mánh và mẹo
- Phát triển Drupal module
- Sưu tập các bài viết hay
- Sử dụng SSH comand để quản lý Drupal site
- Theming
- Thủ thuật
Nói đến Drupal là nói đến node và block. Ở bài viết này, tôi chỉ đề cập đến block.
Mỗi block trong drupal có 'mô tả', 'tiêu đề', 'nội dung', 'vị trí' và 'độ nặng'. Giới thiệu là giới thiệu bằng tiếng Việt vậy, chứ khi coding thì phải tuân theo chuẩn tiếng Anh.
- tiêu đề: bạn dòm bên phải website này coi, có các block với tiêu dề là 'phát thanh', 'phân luồng', 'nghe', 'đáng xem', ... đúng hông. Vậy là cái 'tiêu đề' của block là đâu có gì khó hiểu phải không?
- 'nội dung': ngay phía dưới tiêu đề của block là nội dung của nó.
- 'vị trí': một block có thể được đặt ở 'bên trái', 'bên phải', 'đỉnh đầu', 'gót chân'. Ví dụ block 'phản hồi gần đây' của toila.net là ở 'bên trái' và 'đáng xem' là ở 'bên phải'.
- 'độ nặng': một block có thể có độ nặng từ -10 đến +10, cái nào nhẹ hơn thì nổi lên trên, những blocks có độ nặng bằng nhau thì được sắp theo alphabet.
Drupal có cho phép người dùng tự tạo các block bằng giao diện web. Và đương nhiên, module developer có thể định nhĩa block(s) của mình cho. Hàm định nghĩa block(s) sẽ có dạng sau:
<?php
function thanhkinh_block( $op = 'list' , $delta = 0 , $edit = array() ) {
}
?>Ở đây, chúng ta thấy hàm này yêu cầu 3 tham số đầu vào. Thay vì giải thích dài dòng, chúng ta hãy xét ví dụ sau:
<?php
/*
* ...
*/
function thanhkinh_block( $op = 'list' , $delta = 0 , $edit = array() ) {
if( $op == 'list' ) {
// khi hàm được gọi ở trang diều hành block,
// tham số $op sẽ có giá trị 'list'
return array(
// định nghĩa block thứ 0
array(
'info' => 'Thông tin của block thứ 0',
'weight' => 0,
'enabled' => 1,
'region' => 'left'
),
// định nghĩa block thứ 1
array(
'info' => 'Thông tin của block thứ 1',
'weight' => 0,
'region' => 'right'
)
);
}
else if( $op == 'configure' )
{
// khi hàm được gọi ở trang cấu hình một block,
// tham số $op sẽ có giá trị 'configure'
switch( $delta ) {
// trường hợp cấu hình block thứ 0 của module
case 0:
return array(
'#type' => 'select',
'#title' => 'Tiêu đề của block thứ 0',
'#default_value' => variable_get( 'thanhkinh_block_0' , 0),
'#option' => array( '1' , '2' , '3' )
);
// trường hợp cấu hình block thứ 1 của module
case 1:
return array(
'#type' => 'select',
'#title' => 'Tiêu đề của block thứ 1',
'#default_value' => variable_get( 'thanhkinh_block_0' , 0),
'#option' => array( '1' , '2' , '3' )
);
}
}
else if( $op == 'save' ) {
// ở trang cấu hình, người điều hành submit, hàm này sẽ được gọi
// với tham số $op có giá trị 'save'
variable_set('mymodule_block_items', $edit['items']);
}
else if( $op == 'view' ) {
// khi trình bày nội dung của block ra giao diện người dùng,
// drupal gọi hàm này với $op có giá trị 'view'
switch( $delta ) {
case 0:
// tạo nội dung cho block # 0
$block = array(
'subject' => 'Tiêu đề của block # 0',
'content' => 'Nội dung của block # 0'
);
break;
case 1:
// tạo nội dung cho block # 1
$block = array(
'subject' => 'Tiêu đề của block # 1',
'content' => 'Nội dung của block # 1'
);
break;
}
}
}?>Bây giờ thêm hàm đó vào thanhkinh.module, rồi test block(s) của chúng ta xem nào. Fun nhỉ!!!
:-)
Thế Hồng,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tham khảo thêm ở:
*** http://api.drupal.org/api/HEAD/function/hook_block
Comments
Cam on rat nhieu :-). Bai
Cam on rat nhieu :-). Bai viet cua ban vo cung ro rang va de hieu.
hi
Bạn có thể giải thích lại dùm $block-delta ko? Tớ chưa hiểu rõ lắm
Post new comment