Nguyen Tien Si

Topic “Drupal 7”

Các hook bắt buộc khi tạo Field type mới cho Drupal (7+)

Trước khi tìm hiểu những hook bắt buộc phải biết một Field type gồm những thành phần nào, theo kiến trúc của Field API thì một Field type gồm 3 thành phần chính:

  1. Đinh nghĩa thông tin cho Field - Phần định nghĩa Field này khai báo thông tin như: Khai báo thông tin cho Field, định nghĩa cấu trúc CSDL cho Field, kiểm tra giá trị hợp lệ, kiểm tra Field rổng hay không.
  2. Định nghĩa Formatter cho Field - Khai báo kiểu hiển thị của Field.
  3. Định nghĩa Widget cho Field - Khai báo phần nhập liệu của Field.

Vậy khi viết một Field type mới cần bắt buộc các hook sau đây:

Chú ý khi nâng cấp Drupal 7 từ alpha 5 lên alpha 6

Khi nâng cấp Drupal 7 từ phiên bản Alpha 5 lên phiên bản Alpha 6 cần chú ý các vấn đề sau:

  • Trên bảng users của alpha 6 có sử dụng cột signature_format đứng sau cột signature, nhưng trong file user.install thì chưa có hook để alter những thay đổi này, nên thực hiện việc này trong database bằng tay, cột signature_format có data type là smallint(6).

Ghi chú ngắn gọn về cấu trúc thông tin ở Drupal

1. Quá khứ (Drupal 6)

  • Các loại dữ liệu chính: Node, User, Comment, Taxonomy term (mỗi loại dữ liệu này đều có key (hay còn gọi là property - thuộc tính) và data).
  • Dữ liệu quản lý theo cách khác nhau, ví dụ Node có cách tương tác của node (hook_nodeapi), User có cách tương tác của user (hook_user).
  • Truy xuất theo cách khác nhau.
  • Lưu trữ theo cách khác nhau.
  • Dẫn đến truy xuất/mở rộng/chia sẽ khó khăn.
  • Hầu như dữ liệu mở rộng đều phụ thuộc vào node (vậy có loại dữ liệu mới phải phụ thuộc rất nhiều vào workflow cũng như cách tương tác của node).

Những thay đổi ở theme D7 so với D6

1. CSS ID đặt tên thân thiện hơn

Recent blog posts
Old CSS ID (Drupal 6): block-blog-0
New CSS ID (Drupal 7): block-blog-recent

Book navigation
Old CSS ID (Drupal 6): block-book-0
New CSS ID (Drupal 7): block-book-navigation

Recent comments
Old CSS ID (Drupal 6): block-comment-0
New CSS ID (Drupal 7): block-comment-recent

Active forum topics
Old CSS ID (Drupal 6): block-forum-0
New CSS ID (Drupal 7): block-forum-active

New forum topics

Old CSS ID (Drupal 6): block-forum-1

Những thay đổi ở Drupal 7

Database

  • Viết lại DAL (Database Abstraction Layor) sử dụng PHP 5's PDO abstraction layer.
  • Viết câu truy vấn cho Drupal dựa trên MySQL 5.0.15 và PostgreSQL 8.3 trở lên.
  • Xây dựng câu truy vấn cho các mệnh đề INSERT, UPDATE, DELETE, MERGE, và SELECT (xem ở http://api.drupal.org/api/group/database/7).
  • Hỗ trợ Replication (master/slave), transactions, multi-insert queries, delayed inserts.
  • Hỗ trợ thêm SQLite.
  • Storage engine mặc định là InnoDB.
  • Chuẩn hóa cách đặt tên cho bảng của cơ sở dữ liệu http://drupal.org/node/335086

Security

Syndicate content