# GÓC SÁNG TẠO > Khu vực lập trình > Mã nguồn mở >  Tổng hợp về Drupal

## hai0chin

DRUPAL là gì?
Drupal là một khung sườn phát triển web hướng module, một hệ thống quản trị nội dung (CMS) miễn phí và mã nguồn mở. Cũng giống như các hệ thống quản trị nội dung khác, Drupal cho phép người quản trị hệ thống tạo và tổ chức dữ liệu, tùy chỉnh cách trình bày, tự động hóa các tác vụ điều hành và quản lý hệ thống.

Drupal có thể giúp bạn làm những gì?
Với Drupal cùng với các module cộng thêm của nó, chúng ta có thể xây dựng nhiều ứng dụng mà không cần phải bỏ ra nhiều thời gian để phát triển, các hướng ứng dụng có thể phát triển dựa trên Drupal như:
- Hướng cá nhân/ tổ chức: Blog, Calendar, Dicussing forum,…
- Hướng cộng đồng: Multi blog site, Organic Groups, Voting,…
- Hướng doanh nghiệp: Webservice, Brochure, Newsletter, News site,… 

Bắt đầu với Drupal như thế nào?

*1. HOOK*
+ Hook được xem như là các event bên trong bộ nhân Drupal.
+ Chúng được gọi là các hàm callbacks.
+ Ví dụ : khi một user login vào drupal, Drupal sẽ phát ra hook user, nghĩa là lúc này tất cả các hàm hook user có trong tất cả các moudle sẽ được gọi.
+ Đây là cách phổ biến nhất để tương tác với nhân Drupal.

*2. NODE*
+ Các kiểu nội dung trong Drupal đều kế thừa từ kiểu cơ bản là node.
+ Ví dụ : blog entry, post, page, recipe… tất cả đều có cùng cấu trúc bên dưới giống nhau là node.
+ Cách tương tác với node là mở rộng chúng.
+ Ví dụ : các developer có thể thêm vào các node như : comment, file attachment, rate…
+ Bất kỳ node nào cũng có thể được đưa ra frontpage (trang chủ).

*3. BLOCK.*
+ Block là các khối nội dung có thể enable hoặc disable và được đặt vào một vị trí cụ thể trên site.
+ Ví dụ : user login là 1 block và thường được đặt ở left-sidebar. Bạn có thể tạo 1 block chứa số người đang truy cập…
+ Block thường được đặt ở left-sidebar, right-sidebar, header hoặc footer.


*4. VAI TRÒ CỦA WEB-SERVER.*
+ Drupal chạy bên dưới 1 web-server. Ví dụ : apache.
+ Nếu web-server có quan tâm đến file Drupal .htaccess, lúc đó một số thiết lập PHP sẽ được khởi tạo và sẽ có cơ chế clean URL.
+ Cơ chế clean URL : khi 1 request URL được gọi, vd : http://localhost:81/drupal/ttp/manager . Khi đó qui luật mod_write được định nghĩa trong file Drupal .htaccess sẽ chuyển URL lại thành : http://localhost:81/drupal/index.php?q=ttp/manager
+ Đường dẫn ttp/manager được gọi là đường dẫn bên trong (internal path) hay còn gọi là Drupal path.

*5. CÁCH VIẾT 1 MODULE.*
+ Module trong Drupal được xây dựng theo hướng modular và extensbile. Nghĩa là các người lập trình sẽ phát triển mà không thay đổi bộ nhân drupal.
+ Nếu ko thay đổi code của nhân Drupal thì làm sao tương tác với nó? Chúng ta sẽ tương tác bằng cách mở rộng thêm thông qua xử lý các event do nhân Drupal phát ra (hook).
+ Các bước để xây dựng 1 module :
- Tạo 1 folder lưu trữ các file của module.
- Tạo 1 file ten_module.info : để báo cho drupal biết thông tin về module của mình.
- Ví dụ : nội dung file ttp.info :
Code: Chọn hết
; $Id$
name = ttp
description = mo ta ve module.
package = ten goi.
version = "1.0”

+ Tạo file ten_module.module : cài đặt cho module của mình.
- Ví dụ : về cú pháp ghi chú trong file cài đặt :
Code: Chọn hết
<?php
// $Id$
/**
* @file
* Lets users add private annotations to nodes.
*
* Adds a text field when a node is displayed
* so that authenticated users may make notes.
*/


+ Cài đặt hook : trong suốt quá trình thực thi, Drupal sẽ gọi các module nếu nó cần thực hiện công việc.

----------

