2009-09-20 21 views

Trả lời

15

drupal_get_form($form_id) - đặt trong mô-đun hook_block ($ op == 'view') hoặc thậm chí ... shudder ... bên trong một khối có bộ lọc PHP bật.

Bạn cần tìm id biểu mẫu trước - tìm kiếm input ẩn với tên form_id trong biểu mẫu. Giá trị của nó phải là id biểu mẫu.

Ngoài ra, bạn có thể chỉ cần sử dụng mô-đun Form Block.

+1

Cảm ơn. Điều đó đã làm các trick. Nhưng tại sao lại rùng mình? – coderama

+3

Về cơ bản, bộ lọc PHP là một ý tưởng tồi. Từ trang sổ tay Drupal về chủ đề: "... nó là một nguy cơ bảo mật đáng kể và nguy hiểm trong tay của một người dùng độc hại. Ngay cả một người dùng đáng tin cậy có thể vô tình xâm phạm trang web bằng cách nhập mã PHP không đúng định dạng hoặc không chính xác". Bạn gần như luôn luôn tốt hơn viết một mô-đun (chỉ là một vài dòng trên không, thực sự). –

+3

Một giai thoại, tôi đã có một lỗi cú pháp nhỏ trong một nút với bộ lọc PHP. Nó phá vỡ chỉ mục tìm kiếm, đã phá vỡ cron. Nó không có giá trị phức tạp gỡ lỗi. – Grayside

0

Một điều khác là nó đặt một số mã PHP vào cơ sở dữ liệu, thay vì trong hệ thống tệp nơi phần còn lại là. Thật dễ dàng để quên và lãng phí rất nhiều thời gian tìm kiếm mã, và grep thuận tiện hơn rất nhiều khi đi qua từng khối và xem liệu PHP có ở đó không.

26

Trong Drupal 7, nó trông như thế này:

function yourmodule_block_view($delta='') 
{ 
    switch($delta) { 
    case 'your_block_name': 
     $block['subject'] = null; // Most forms don't have a subject 
     $block['content'] = drupal_get_form('yourmodule_form_function'); 
     break; 
    } 
    return $block; 
} 

Mảng hình thức trả về bởi drupal_get_form sẽ tự động trả lại.

yourmodule_form_function là một hàm (trong mô đun của bạn hoặc mô-đun Drupal hiện có) trả về mảng biểu mẫu;

+1

hãy nhớ rằng bạn cần triển khai hook_block_info() –

Các vấn đề liên quan