[Wiki] CHAPTER 1: Giới thiệu, cài đặt, node, user trong DRUPAL

[Wiki] CHAPTER 1: Giới thiệu, cài đặt, node, user trong DRUPAL

I. TỔNG QUAN

1. Giới thiệu

Drupal là một framework dùng cho phát triển phần mềm hướng module, một hệ thống quản trị nội dung miễn phí và mã nguồn mở.

Cũng giống như các hệ thống quản trị nội dung hiện đại 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ó cấu trúc lập trình rất tinh vi, dựa trên đó, hầu hết các tác vụ phức tạp có thể được giải quyết với rất ít đoạn mã được viết, thậm chí không cần. Đôi khi, Drupal cũng được gọi là "Framework cho ứng dụng Web" vì kiến trúc thông minh và uyển chuyển của nó.

Drupal được chạy trên rất nhiều môi trường khác nhau, bao gồm Windows, Mac OS X, Linux, FreeBSD, OpenBSD và các môi trường hỗ trợ máy phục vụ web Apache (phiên bản 1.3+) hoặc IIS (phiên bản 5+) có hỗ trợ ngôn ngữ PHP (phiên bản 4.3.3+). Drupal kết nối với cơ sở dữ liệu MySQL hoặc PostgreSQL để lưu nội dung và các thiết lập.

2. Cài đặt

Download và cài đặt tại địa chỉ http://drupal.org/project/drupal

II. MỘT SỐ KHÁI NIỆM TRONG DRUPAL

1. Node

Đối với một hệ quản trị nội dung có lẽ chúng ta sẽ nghĩ ngay đến các đối tượng như article, hay một mẫu blog,.. Các khái niệm đó được gói gọn trong DP bằng khái niệm node. Node là một khái niệm dung để biểu thị nội dung của văn bản. Tuy nhiên với kiến trúc và khả năng tùy biến của drupal người lập trình có thể tạo ra các module mở rộng những khả năng trình bày của bài viết trong drupal. Không chỉ là những dạng văn bản thuần túy mà còn là hình ảnh, video, audio, …

Các node đều được lưu trong cơ sở dữ liệu và có thể lấy ra bất cứ khi nào cần thiết. Node gồm các thành phần chính

  • Định danh. (Không trùng nhau)
  • Một giá trị đặc trưng cho phiên bản (version)
  • Thời gian khởi tạo
  • Dữ liệu meta như trạng thái văn bản, ngôn ngữ, bản dịch, …
  • 2 phần là heading và contents

Node là thành phần chính của drupal. Node cũng sử dụng rất nhiều API mà chúng ta sẽ xem xét ở phần sau đó là không phải tất cả đều là node.

        *User, block và comment không phải là node.
        *Node thường có “title” và “body” còn cấu trúc user thì không cần cái này. Hơn nữa user cần email-address, user name và cách bảo vệ an toàn để lưu trữ password.
        *Block là một giải pháp lưu trữ cho từng mảnh nội dung nhỏ hơn như : menu navigation, searcho box, danh sách các comment gần đây…
        * Comment cũng không phải là node. Nó có thể có 100 comment hoặc hơn trên một trang và nếu những comment này đều phải đi qua hệ thống hook menu thì số lần thực thi sẽ rất kinh khủng.

XÂY DỰNG NODE BẰNG MODULE CCK.

  • Việc tạo node bằng cách viết module joke.module quá nhiều công đoạn phức tạp. Bạn muốn tạo một node của mình mà không cần lập trình? Hãy dùng module CCK của Drupal.

  • CCK đã được cung cấp trong bản 5.x. Bạn có thể tạo mới các kiểu nội dung (chẳng hạn như joke) thông qua giao diện administative tại Administer  Content Manager  Content Type. Bạn phải đảm bảo rằng các kiểu nội dung không trùng tên để tránh xung đột namespace.

  • Một phần của CCK vẫn sẽ được lưu trong nhân để có thể tạo ra các fields ngoài title và body cho các kiểu nội dung mới.

  • Ví du : trong joke.module bạn cần 3 fields: title, body và punchline. Hàm dùng hook_node_info() để đặt lại nhãn cho body là Joke, tạo ra fields funchline bằng cách cài đặt một vài hook khác và tạo ra bảng để lưu trữ punchline. Trong CCK, bạn chỉ đơn giản tạo mới 1field mang tên punchline và thêm nó vào kiểu nội dung của bạn. CCK sẽ tự làm các công việc lưu trữ, nhận và xóa dữ liệu cho bạn.

NGĂN CHẶN QUYỀN TRUY CẬP ĐẾN CÁC NODE.

  • Có nhiều cách để chặn quyền truy cập đến các node. Bạn có thể dùng hook_access()và hook_perm() nhưng Drupal cung cấp bộ điều khiển try cập sử dụng bảng node_access và 2 hook_node_grants(), hook_node_access_records().

  • Định nghĩa Node-Grants : có ba quyền truy cập cơ bản cho node là: xem, chỉnh sửa và xóa. Các module sẽ cung cấp quyền truy cập cho các kiểu node qua hook node_access(). Nếu module không cung cấp vị trí quyền truy cập cho phép, Drupal sẽ hỏi tất cả các module đã định nghĩa node access chịu trách nhiệm xem các thao tác có được cho phép hay không. Nó làm điều này phản hồi lại hook_node_grants() với một danh sách các ID cho mỗi realm (lĩnh vực) dành cho người dùng hiện tại.

  • Realm là gì? Realm là một chuỗi arbitrary (chuyên quyền) cho phép nhiều module node chia sẻ quyền bảng node_access.

2. User

Một kiểu đối tượng khác trong DP là đối tượng người dùng, giống như comment và node, dữ liệu người dùng cũng được lưu trữ trong cơ sở dữ liệu và được lấy ra trong quá trình sử lý. Thông tin về người dùng phục vụ cho việc xác thực, định nghĩa và thiết lập quyền hạn truy cập.

Truy xuất và bảo mật: Các đặc quyền của người dùng được liên kết chặt chẽ với đối tượng người dùng mà hệ thống chỉ định. Drupal có cơ chế để có thể cấp quyền cho một tập hợp người dùng. Mặc định, mỗi người dùng được gán một vai trò và các đặc quyền được cấp phát hoặc thu hồi qua vai trò đó.

Khi cần kiểm tra truy cập tới các tài nguyên DP chỉ cần nạp một đối tượng người dung, tìm vai trò của người dung đó và kiểm tra tính điều kiện truy cập. Việc này thực hiện bằng cách áp dụng các API người dung các nhà phát triển module không cần quan tâm.

3. Khối và cách thể hiện trang web trong Drupal

Block là một khái niệm quan trọng trong kiến trúc của drupal. Block được dung để biểu diễn các nội dung nhỏ hơn node. Ví dụ như các menu, đoạn trích dấn khung vote, hay ô tìm kiếm,… Nó không phải là một dạng nội dung mà là một đối tượng trừu tượng được sử dụng chủ yếu để hiển thị các đối tượng khác. Có thể thao tác với block quan block editer trong để định vị trí các khối trong giao diện của trang web. Thêm và quản lý block

[Wiki] CHAPTER 1: Giới thiệu, cài đặt, node, user trong DRUPAL

Quản lý Block trong Drupal 7

Giao diện rât than thiết giúp bạn có thể thiết kế một giao diện hài hòa chỉ bằng việc anable hoặc disable các thành phần block của giao diện như search form, userlogin, who’news,… tại các vị trí khác nhau.

Một khái niệm liên quan chặt chẽ tới block là menu. DP có một hệ thống menu phức tạp được sử dụng với mục đích chính là xây dựng các controller cho trang web. Ngoài ra đây còn là thành phần thể hiện chức năng như một công cụ để ánh xạ các url tới trình điều khiển riêng bằng việc sử dụng các API menu để lien kết tới các hàm đã được định nghĩa trước.

5. Form

Cách đưa chủ yêu các thống tin lên website mà chúng ta sử dụng đã phần là một form html. Trong DP form được được hỗ trợ đầy đủ và rất mạnh mẽ. Bộ API Form (FAPI) cung cấp một giao diện làm việc linh hoạt thuận lợi cho lập trình viên, giảm bớt công việc thiết kế cũng như thời gian để xử lý form.

Bằng cách sử dụng FAPI, người phát triển chỉ cần cung cấp thông tin một form, Drupal sẽ xây dựng và hiển thị form đó, thu thập kết quả và thậm chí kiể m tra tính hợp lệ của dữ liệu người dùng đưa vào. Cái mà rất nhiều LTV thường không chú ý khi lập trình mà không sử dụng các framework để validate data.

6. API database và lược đồ

Đây là thành phần nằm phía dưới framework nhằm quản lý các thao tác đối với cơ sở dữ liệu. Đơn giản hóa các thao tác truy vấn dữ liệu. API này có cơ chế bảo mật tốt giúp đảm bảo an toàn cho trang web cũng như server của bạn. Cụ thể là nó sẽ lọc và kiểm soát các truy vấn. LTV cũng có thể sử dụng để thực hiện với các hệ cơ sở dữ liệu khác nhau.

Một API mới được GT là API lược đồ. API này cho phép định nghĩa cấu trúc một cơ sở dữ liệu khác nhau sử dụng các cấu trúc riêng biệt cho việc định nghĩa bảng, giải quyết các vấn đề lien quan tới phân tán và di động của các module.

III. KIẾN TRÚC CƠ BẢN CỦA DRUPAL

Drupal được viết bằng ngôn ngữ PHP và sử dụng hệ cơ sở dữ liệu quan hệ để lưu trữ (thường là mysql). Tuy nhiên Drupal không sử dụng hướng đối tượng mà sử dụng theo kiểu lập trình thủ tục truyền thống. Nhìn một cách tổng quan thì Drupal vẫn áp dụng những nguyên lý của lập trình hướng đối tượng như tính đóng gói, kế thừa, đa hình, …

Nhân của Drupal gồm các thư viện và các mã thực nạp vào chương trình. Thư viện nhân Drupal đóng vai trò như lớp kết nối các modules. Phần này cung cấp các dịch vụ như kết nối và quản lý cơ sở dữ liệu, quản lý bộ khung hook, thư viện trừu tượng phục vụ mail và hình ảnh, hỗ trợ Unicode... Tuy nhiên sức mạnh của Drupal lại nằm ở chính hệ thống kiến trúc module đầy thông minh của nó.

Cấu trúc Drupal

 Cấu trúc Drupal 7

1. Kiến trúc module

Module là một bộ gồm các đoạn mã PHP, các file hỗ trợ sử dụng API và kiến trúc của Drupal tích hợp các thành phần mới vào trong framework của Drupal. Cơ chế module của Drupal được thiết kế để cung cấp một cách thức đồng nhất giúp người phát triển mở rộng khả năng của hệ thống. Những file tạo nên module được gộp vào một ví trí nhất định trong cấu trúc thư mục của Drupal. Khi Drupal cần thông tin về module nào đó, nó sẽ tìm trong những thư mục này. Mỗi module nằm ở một thư mục riêng và có ít nhất là 2 file - một file cung cấp thông tin về module và một hay nhiều file khác chứa mã PHP thực hiện chức năng của module đó. Để một module sử dụng được thì nó phải được bật bởi người quản trị trang web. Drupal sẽ chuyển các yêu cầu của người dùng đến module đó nếu cần thiết.

2. Các module lõi

Một số module có vai trò rất quan trọng trong hệ thống drupal. Nếu gỡ bỏ sẽ làm cho drupal mất đi những tính năng thiết yếu. Ta có thể thấy DS các module này ở Administer | Site building | Module. 5 module quan trọng nhất là Block, Filter, Node, System và User. Không thể disable được các module này. Một nét đặc biệt nữa trong cấu trúc của drupal là các module này có thể tác động trực tiếp với một cách dễ dàng bằng cách sử dụng cơ chế hook, dịch vụ mà các module khác nhau cung cấp có thể kết hợp với nhau để tạo nên các tính năng mạnh hơn mà không cần phải viết lại một lượng lớn mã nguồn.

3. Cơ chế Hook

Hook là một kỹ thuật mà ở đó cho phép chặn, bắt, theo dõi, xử lý các sự kiện (event) từ ứng dụng tới ứng dụng, ứng dụng tới hệ điều hành và hệ điều hành tới ứng dụng hay nói cách khác là có thể chặn, bắt, theo dõi, xử lý các sự kiện trước khi nó tới nơi tiếp nhận.// VD: Cách làm việc của chương trình soạn thảo văn bản Unikey, và chương trình từ điển Lingoes. Cách làm việc của chúng là đón lấy các sự kiện về gỏ bàn phím, và các sự kiện từ con chuột để xử lý các thao tác riêng.// Hook trong drupal: Đây là một khái niệm rất quan trọng trong việc phát triển module cho Drupal. Cơ chế này giúp cho Drupal biết được phải gọi module nào khi xử lý các yêu cầu khác nhau từ người dùng. Một yêu cầu người dùng sẽ được drupal xử lý như sau:

  • Phần lõi khởi động ứng dụng, định nghĩa các biến và các hàm thường dung

  • Nạp các thư viện, giao diện và module cần thiết, ánh xạ URI đến đoạn điều khiển tương ứng

  • Dữ liệu sẽ đươc định dạng và đặt vào giao diện để trả về cho trình duyệt

Ví dụ, trong khi tạo nội dung cho một trang dạng View. Drupal có thể quét qua các module để tìm những hàm có tên <modulename>_block() và <modulename>_view() với modulename được thay bằng tên của module cụ thể khi kiểm tra. Những module chứa các hàm trên bổ sung cho các hook hook_block() và hook_view(). Khi Drupal tìm thấy những hàm đó thì sẽ thực thi chúng và sử dụng dữ liệu lấy được để trả lời yêu cầu của người dùng. Sau đó hệ thống sẽ tiếp tục quá trình xử lý từng bước đã nói ở trên và có thể sẽ thực thi các hook khác nếu cần thiết. Khi tất cả các bước đã hoàn thành, phản hồi được gửi lại người dùng. Drupal sẽ dọn dẹp hệ thống và thoát ra.

Có thể xem hook là một cơ chế tương tự như các giao diện hoặc phương thức ảo. Giống như giao diện trong lập trình hướng đối tượng. Bản triển khai (bao gồm tên, các tham số và giá trị trả về) phải khớp với phần khai báo của hook. Khác với giao diện, người phát triển module có thể chọn những hook nào sẽ sử dụng và những hook nào được bỏ qua. Drupal không yêu cầu tất cả các hook đã định nghĩa phải được triển khai và sử dụng.

Module có thể định nghĩa các hook riêng và module khác có thể dùng chung các hook đó. Theo cách này, cơ chế hook được mở rộng để cung cấp các chức năng phức tạp. Sử dụng hook thực chất là cách để người phát triển tương tác gián tiếp với bộ nhân của Drupal.

4. Giao diện

Đối với một hệ quản trị nội dung (CMS) trên nền web, sức mạnh xử lý không phải là tất cả, một hệ quản trị mềm mại, dễ thay đổi về giao diện sẽ rất tốt đối với người sử dụng. Drupal cung cấp cho chúng ta một hệ thống giao diện mạnh mẽ để phục vụ mục đích này. Hệ thống giao diện của Drupal khá phức tạp. Giống như các module, giao diện được thiết kế sao cho có thể được cải tiến và mở rộng bằng cách sử dụng cơ chế hook. Giao diện bao gồm một bộ tài nguyên bao gồm các mẫu PHP, CSS, Javascript và hình ảnh, tạo nên bố cục và cách trình bày cho nội dung trong Drupal. Một giao diện đơn giản có thể được tạo ra bởi một vài file - một file định nghĩa cách trình bày, một file thông tin về giao diện và một vài hình ảnh. Bằng cách sử dụng mẫu có sẵn của Drupal, người phát triển có thể tạo ra một giao diện tùy chỉnh mà không tốn nhiều thời gian.

Chúng ta cũng có thể tự tạo ra các giao diện với những nhu cầu cao hơn. Với những khuôn mẫu tùy biến, thường được viết bằng ngôn ngữ PHP dành cho các mẫu, có thể tái cấu trúc các chi tiết của HTML. Một số file PHP được viết để nạp chồng các phương thức của bộ giao diện. Các cấu hình phức tạp của Javascript và các file CSS cũng được hỗ trợ. Module có thể được sử dụng để giao tiếp với hệ thống giao diện phức tạp này. Nói tóm lại, một giao diện có thể trở thành đơn giản hay phức tạp là tùy vào thiết kế của người phát triển.

VI. HỆ THÔNG THƯ MỤC TRONG DRUPAL

Hiểu rõ cấu trúc thư mục của Drupal giúp người quản trị quản lý website một cách toàn diện và người phát triển có thể can thiệp sâu hơn vào hệ thống. Mặc định, cấu trúc thư mục của Drupal đượ c sắp xếp như sau.

 Hệ thống thư mục

Hệ thống thư mục Drupal 7

  • Include: Chứa các thư viện của các hàm thường sử dụng.

  • Misc: Lưu trữ các biểu tượng, hình ảnh dùng cho Javascript và một số tài nguyên khác.

  • Profiles: Chứa các profile khác nhau dùng cho cài đặt và thiết lập drupal. Mục đích của các profile là giúp tự động hoá việc cài đặt bằng cách bật các module và chức năng định sẵn trong phần nhân hệ thống để phù hợp với mục đích sử dụng website.

  • Script: Chứa các tệp lệnh dùng để phân tích cú pháp, dọn dẹp mã nguồn và xử lý các tác vụ đặc biệt với cron. Những tập lệnh này được viết bằng ngôn ngữ shell hoặc Perl.

  • Themes: Chứa các công cụ tạo khuôn mẫu hoặc giao diện cho website.

  • Site: Chứa các thay đổi đối với drupal dưới dạng thiết lập, module và giao diện. Các module được thêm vào sẽ nằm trong thư mục sites/all/modules. Trong sites có chứa thư mục tên là default chứa các thiết lập mặc định cho hệ thống được ghi lại trong file setting.php. \\Cụ thể như sau:

 Thư mục

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Smartphone Android 2014 có gì đáng xem

Smartphone Android 2014 có gì đáng xem

LG và Samsung đã mang đến cho người dùng sự xuất hiện của chiếc G Flex và Galaxy Round có thiết kế màn hình cong, còn Vivo và Japan Display

Tính năng mới After Effects: Tự Điền Nội Dung – Content Aware Fill

Tự Điền Nội Dung – Content Aware Fill một tính năng mới After Effects

Mới đây, hãng Adobe thông báo đã mang tính năng mới “Content – Aware Fill” vào After Effects – phần mềm chuyên nghiệp trong xử lý hiệu ứng kỹ xảo hình ảnh.

Cardapio – Thanh menu tuyệt vời cho Ubuntu 11.04

Cardapio – Thanh menu tuyệt vời cho Ubuntu 11.04

Trên bài viết trước mình đã hướng dẫn các bạn sử dụng menu kiểu của trên Unity, còn trong bài viết này, mình xin giới thiệu một tiện ích khác giúp bạn đem thanh menu...

Công ty diệt chuột T&C

 

Diet con trung