Nguyen Tien Si

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).
  • Hầu như coi dữ liệu trên Drupal là liên quan tới content trên web là chính.

2. Hiện tại và tương lai (Drupal 7 trở về sau)

  • Quản lý dữ liệu chung một chổ dựa trên ý tưởng của CCK với tên gọi mới là Field API.
  • Đưa ra khái niệm Entity (tập hợp những loại dữ liệu giống nhau) giải quyết được vấn đề mở rộng kiểu dữ liệu không phải phụ thuộc vào Node như xưa nữa.
  • Kế thừa và phát triển khái niệm Field ở CCK.
  • Mỗi Field đều có một Info (thông tin của Field), Schema (cấu trúc dữ liệu của field), Widget (cách nhập liệu hay gọi là Form), Formatter (cách hiển thị của Field hay còn gọi là Display) và Storage (cách lưu trữ dữ liệu của Field).
  • Phát triển và mở rộng khái niệm content type ở Drupal 6 lên thành Bundle của một Entity type.
  • Xây dựng cơ chế gắn một Field vào một Bundle tạo thành một Instance và được gọi chung Field, Instance và Bundle là Data Structures.
  • Xây dựng cơ chế lưu trữ liệu liệu cho một Field gọi là Field Storage API.
  • Xây dựng cơ chế truy xuất quản lý dữ liệu cho Field (CRUD) được gọi là Field CRUD API.
  • Node, User, Comment, Taxonomy term thành Entity hết và content type của node bây giờ gọi là Bundle.

1 comment

Anonymous's picture

cck fields CRUD

D6: Để giữ lại cấu trúc của fields trong DB khi tạo bằng cck (back-up dễ hơn) có thể tham khảo cách sau:

backup:
dump config array của 1 field bất kỳ:
<?php
var_export
(content_fields(field_name, node_type_name));
//field_name null trả về toàn bộ các field liên quan đến node_type đó
?>

lưu array này vào fields.inc

restore:
<?php
module_load_include
(inc,module_name,path_file_inc);
foreach (
$fields as $field)
       
content_field_instance_create($field);
?>

tham khảo: http://drewish.com/node/118

Add your comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account, used to display your avatar.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

More information about formatting options