Note: Một mẹo nhỏ xíu, không có gì ghê gớm.
Một điểm yếu của Drupal 5, vẫn còn duy trì ở Drupal 6: Không hỗ trợ hook_block_alter (), hook_regions_alter (), khiến cho người thảo chương rất khó có thể
• Thay đổi các thuộc tính của các block được trình bày.
• Sắp xếp lại thứ tự trình bày các block trong regions, thêm động các block vào một region, ...
Tương lai, với hỗ trợ của chức năng function registry, có thể, mỗi region và mỗi block có một callback riêng, tương tự như mỗi page có một callback được định nghĩa trong hook_menu. Quá trình phát triển các tính năng này còn khá dài, trong post này, TH muốn đề cập đến một tính năng mà một hệ thống thường rất hay gặp phải: không trình bày region left và right ở một số trang cụ thể (checkout forms, forum pages, ...). Ai có sử dụng panels 2, chắc đã thấy tính năng này.
Thật ra, muốn làm một trang như vậy rất đơn giản, thay vì page callback trả về một chuỗi thì callbback này in thẳng nội dung ra bằng hàm theme ('page', $output, false);. Vấn đề ở chỗ tham số false được truyền vào hàm theme. Xem mã nguồn hàm phptemplate_page sẽ hiểu ngay:
<?php
function phptemplate_page($content, $show_blocks = TRUE) {
// ...
if ($show_blocks) {
// ...
}
// ...
}
?>Chắc chắn trong thực tế, các module cần phải áp dụng nhiều chiêu nhỏ nhỏ khác để Drupal có thể đáp ứng được các nhu cầu. Đây là một :-)
--
Thế Hồng

Comments
"TH muốn đề cập
"TH muốn đề cập đến một tính năng mà một hệ thống thường rất hay gặp phải: không trình bày region left và right ở một số trang cụ thể (checkout forms, forum pages, ...)."
Moi^~ block co' the^? dduoc dieu chinh hien len, hoac khong hien len o trang nao ma`.
Đó là đối với hệ
Đó là đối với hệ thống ít block, giả sử site của TH có:
* 100 banner quảng cáo
* 200 tin RSS
* ...
Điều chỉnh thủ công trở nên quá dở, phải có công cụ tác động hàng loạt. Muốn có tính năng này ở D 5 và 6 phải hack theme engine.
Một số yêu cầu thực tế nữa là: Block X ở trang A thì ở region T, độ nặng f, tiêu đề alpha, ở trang B thì ở region U, độ nặng g, tiêu đê beta.
:-)
--
Thế Hồng
academi quá đi, em thì chơi
academi quá đi, em thì chơi cái bài dùng Ajax cho quảng cáo nên không tới cái độ hàng trăm banner quảng cáo khắp nơi mà tăng block như thế lúc sửa thì vỡ alo anh ạ !
My blog: Jamviet.com, Hỏi đáp trực tuyến, váy dài