Mới nhất

Sử dụng modules Views trong Drupal

By phantuanduy - Wednesday, March 13, 2013 No Comments

Sử dụng thuần thục hệ thống Drupal, với các khái niệm node, node type, taxonomy, user, roles, roles's permission, chúng ta đã có thể áp dụng được Drupal vào các nhu cầu thực tế. Tuy nhiên, xét về khả năng trình bày nội dung, bản thân Drupal chưa đưa ra được các khả năng cần thiết. Thí dụ, chúng ta sẽ thực hiện những thao tác nào để tìm ra:
Người dùng tích cực nhất từ thời điểm t đến thời điểm t + t'? Vocabulary nào có nhiều nội dung nhất, và những term được người dùng đọc nhiều nhất. Top 10 người dùng mới nhất của site. Những node có kiểu nội dung C, thuộc vocab V, có term T của người dùng thuộc role R. Top 10 chủ đề mới nhất/nóng nhất từ diễn đàn D... Top 10 node có liên kết trở về node N....
Không chỉ đáp ứng được những tính năng kể trên, views 2 sẽ còn mạnh mẽ hơn rất nhiều. Sử dụng views 2 không khó, nhưng bạn cần phải thông một số khái niệm.

1. View

Module views 2 định nghĩa nhiều view. Mỗi view sẽ có những cấu hình khác nhau, tuỳ thuộc vào người quản trị, để trình những kết quả khác nhau phù hợp với nhu cầu của thực tế.
     
2.  Type

 views có thể lấy nội dung từ nhiều kiểu nội dung khác nhau. Để định nghĩa một view, trước tiên, chúng ta cần xác định, kiểu nội dung chúng ta cần lấy về là gì. Mặc định, views 2 có cung cấp các kiểu nội dung sau: node, vocabulary, term, user, roles, files, comment. Trường hợp hệ thống của chúng ta có sử dụng các module khác để mở rộng views 2, có thể danh sách các kiểu nội dung sẽ nhiều hơn.

3. Display

Views cần biết được thuộc tính Display của mỗi view để xác định vị trí mà kết quả của view tương ứng được hiển thị. Mỗi view có thể có nhiều display, mỗi display lại có thể có những thiết lập riêng để tuỳ chỉnh kết quả trình bày. Nói về Display, mặc định, Views cung cấp một số Display type được liệt kê như sau. Nếu hệ thống của chúng ta có sử dụng các module khác để mở rộng views 2, lúc đó, có thể hệ thống sẽ có nhiều dislay type hơn, thí dụ JSON.
3.1 Default display
Default display, là display chính của mỗi view, được dùng để lưu trữ các thiết lập của view. Default display không thật sự được sử dụng ở bất kỳ nơi nào, ngoại trừ bên trong hệ thống Views 2.
3.2 Page display
Mỗi page display có thiết lập path và các tùy chọn thiết lập về menu. Khi trình bày một view ở dạng page display, kết quả của view sẽ được trình bày như nội dung chính của một trang, nghĩa là, kết quả của view sẽ được trình bày ở khu vực trình bày nội dung chính khi bạn truy cập vào URL ứng với path đã thiết lập cho page display.
Page display, nếu có các thiết lập về argument, sẽ nạp vào nó các argument từ URL. Chúng ta có thể nhúng các argument vào URL bằng cách sử dụng ký hiệu %. Thí dụ. thiết lập URL của chúng ta là 'node/%/foo', ứng với trường hợp display/view tương ứng có các thiết lập về argument, khi đó, page display sẽ được sử dụng, khi người dùng truy cập vào URL 'node/1/foo', và tham số đầu tiên sẽ là '1'.

3.3 Block display

Nếu một view có định nghĩa một/nhiều block display, nó đồng thời cũng sẽ định nghĩa các block trong  hệ thống Drupal với nội dung tương ứng với các thiết lập của block display.
Chú ý: block display không chấp nhận argument như các dạng view display khác. Trong trường hợp, chúng ta cần sử dụng argument cho các block display, để mở rộng khả năng trình bày, chúng ta buộc phải truyền argument vào ở dạng argument mặc định; Cách thực hiện: cấu hình view tương ứng > chọn display tương ứng > xem mục Arguments > nhấp chọn argument tương ứng > xem mục "Action to take if argument is not present" vừa hiện ra > chọn "Provide default argument" > xem mục "Default argument type" vừa hiện ra.

3.4 Attachment display

Attachment display là các display có thể được đính kèm vào các display khác ở cùng view. Khi một display được gọi, thì đồng thời các attachment display được kèm theo với display đó cũng được gọi, và kết quả của các attachment display có thể được định vị ở trước hoặc sau hoặc cả trước và sau kết quả của display chính của view. Có thể sử dụng attachment display để trình bày bảng danh mục (glossary) cho các view. Xem view "glossary" được cung cấp mặc định bởi view như một thí dụ cho việc sử dụng Attachment display.

3.5 Feed display

Feed display cho phép chúng ta đính kèm RSS feed vào một view.
   
3.       Override

Như đã biết ở mục 3, mỗi view có thể có một default display và có thể định nghĩa thêm một hoặc nhiều các display khác, với các dislay type tùy thích mà view cung cấp. Theo mặc định, các display, khác default display, sẽ sử dụng các thiết lập của default display cho việc tạo kết quả trình bày của chúng. Do đó, nếu chúng ta chỉnh sửa các thiết lập của một display, thì các display khác ở cùng một view cũng sẽ bị ảnh hưởng. Giải quyết trở ngại này, views 2 có đưa ra khả năng "override", giúp cho các display, ngoài việc sử dụng các thiết lập từ default display, có thể có những thiết lập riêng cho nó, các thiết lập này, nếu được chỉnh sửa, thì không ảnh hưởng đến các display khác ở cùng view.

5. Output style (view style)

View phát sinh ra kết quả, hệ thống style giúp chúng ta có thể tuỳ chỉnh cách trình bày kết quả được phát sinh đó. Về cơ bản, mỗi output style là một khuôn mẫu giao diện thông minh, xử lý kết quả quả của view và xuất kết quả đó ra. Tất cả các style trong Views 2 đều có thể được quá tải bằng cách đặt bản các bản sao chép của style tương ứng vào thư mục giao diện mà hệ thống đang sử dụng, sau đó, chỉnh sửa chúng. Mỗi display của view có cung cấp một mục "theme: information", nhấp chọn vào mục đó, views 2 sẽ đề xuất cho chúng ta các khuôn mẫu giao diện có thể được sử dụng đê quá tải lên các thành phần kết quả của view.
Các output style được views 2 cung cấp sẵn:
5.1 Grid:
Trình bày kết quả ở dạng ô
5.2 List:
Trình bày kết quả ở dạng danh sách
5.3 Table:
 Trình kết quả ở dạng bảng
5.4 Unformatted:
Trình bày kết quả ở đơn giản, mỗi dòng kết quả chỉ được bao quanh bởi cặp thẻ
với một số DOM class, dựa vào các class đơn giản này, quản trị viên có thể sử dụng CSS để định dạng lại kết quả trình bày.

Trường hợp các output style được cung cấp sẵn này không đáp ứng đủ nhu cầu thực tế, chúng ta có thể xây dựng module mở rộng views 2 để định nghĩa thêm các output style khác.

6. Field (trường dữ liệu)

Đối với một số output style, thí dụ table, chúng ta cần xác định cụ thể trường dữ liệu nào được trình bày trong kết quả trình bày. Tùy thuộc và trường dữ liệu được xác định, chúng ta có thể có những thiết lập riêng cho chúng.

7. Sort criteria

Các dòng kết quả được phát sinh bởi view có thể được sắp xếp thứ tự theo một hoặc nhiều tiêu chí. Tuỳ thuộc vào view type (và các relationship), mỗi view sẽ có những tùy chọn sắp xếp thứ tự kết quả trình khác nhau.

8. Filter

Filter, hay bộ lọc nội dung, là một tính năng chủ chốt của views 2, giúp người điều hành có thể lọc nội dung theo những tiêu chí nhất định. Không như các tính năng liệt kê node của nhân Drupal, /node/, chỉ liệt kê được các node được thiết lập thuộc tính "promoted to frontpage" (được quảng bá ở trang chủ) là true, /taxonomy/term/x/, chỉ liệt kê được các node có gán từ liệu là x, ... views với tính năng filter, cung cấp khả năng trình bày nội dung của hệ thống rất sinh động. Với views 2, bây giờ, chúng ta có thể trình bày các node được tạo bởi một người dùng nhất định, ở (các) term nhất định, vào thời khoảng nhất định, ...

9. Argument

Tính năng filter của Views 2 mạnh, tuy nhiên nó cũng có mổt trở ngại nhỏ: filter không động theo từng view. Thí dụ, chúng ta định nghĩa một view V1 để trình bày các node có node type là NT1, có thể truy cập view này qua URL /content/foo. Sau một thời gian, theo nhu cầu phát triển của hệ thống, chúng ta lại cần xây dựng một view V2 rất giống với V1, chỉ khác ở filter node type, thay vì node type là NT1 thì là NT2. Rõ ràng, lúc này, chúng ta phải lặp lại nhiều thao tác đã thực hiện ở V1 vào lại V2. Giả sử, chúng ta có N view như vậy, khi chỉnh sửa các view này theo nhu cầu thực tế, công sức của chúng ta sẽ xN.
Argument được đặt ra như là một mở rộng của filter. Thay vì là tĩnh ở mỗi view, argument cung cấp khả năng lọc nôi dung trong view bằng các giá trị có thể thay đổi động. Trở lại với thí dụ trên, thay vì định nghĩa một filter clause cho view, chúng ta sẽ định nghĩa một argument: "node type", và ở URL, chúng ta sẽ thay /content/foo thành /content/foo/%. Lúc này, khi người dùng truy cập URL /content/foo/NT1, view sẽ lọc nội dung và chỉ trả về những node có node type là NT1, ...

10. Relationships

Là một tính năng mới thêm vào Views 2, cung cấp cho view khả năng truy vấn kết quả khác từ các kết quả đã tìm được. Một thí dụ thực tế tương đối dễ hiểu: (1) Hệ thống chúng ta vừa tạo ra một node type là "track". (2) Chúng ta tạo thêm hai node type khác là "album" và "artist". (3) Tạo node reference từ "track" đến "album", từ "album" đến "artist" (Sử dụng module node reference của CCK) (4) Tạo một vào node ứng với các node type vừa tạo ở trên (5.1) Tạo một view; (5.2) Thiết lập output syle thành "table"; (5.3) Ở mục "relationships", thêm vào 2 node reference đã tạo ở bước 3; (5.4) Ở mục "fields", thêm 3 lần field "Node: Title" và "Node: Body", ở node thứ nhì, chọn relatioship đến 'albumn', và ở node thử ba, chọn relationship đến 'artist' (6) Xem thử kết quả.

11. Các thuộc tính khác

11.1 Tags
Có thể gán cho mỗi view những tag khác nhau để dễ dàng hơn cho việc quản lý.
11.2 View name
Là tên của view được xác định lúc view mới được khởi tạo. Không giống như các display name (tên của display), view name không thể chỉnh sửa.
11.3 Use AJAX
Nếu view/output tương ứng có thiết lập sử dụng pager và thuộc tính Use AJAX được thiết lập là Yes, khi người dùng click vào các liên kết ở mục phân trang, thay vì trình duyệt sẽ di chuyển sang trang, thì nội dung mới sẽ được nạp theo dạng AJAX.
11.4 Use pager
Thiết lập view có sử dụng bộ phân trang hay không.
11.5 Items to display
Số dòng kết quả trình bày ở mỗi lần trình bày của view/output sẽ không vượt quá giá trị thiết lập ở mục này. Nên thiết lập để view/output sử dụng bộ phân trang để người dùng có thể xem được nhiều kết quả hơn.
11.6 More link
Thêm liên kết, vào phía dưới kết quả của view, dẫn đến page view. Trường hợp view của chúng ta cung cấp hơn một page display, mục này cần chỉ định rõ page display nào cần được trỏ đến.
11.7 Distinct
Buộc view chỉ trình bày những kết quả thật sự khác nhau. Thuộc tính này có thể làm chậm đi quá trình phát sinh kết quả của view.
11.8 Access
Giới hạn các vai trò người dùng (role) được truy cập view/output.
11.9 Header
Bản văn được trình bày ở phía trên của view/output.
11.10 Footer
Bản văn được trình bày ở phía dưới của view/output.
11.11 Empty text
Bản văn được trình bày khi view/output không trả về kết quả nào.
11.12 Theme information
Trình bày các thông tin về giao diện giúp người xây dựng giao diện của hệ thống có thể dễ dàng xây dựng các khuôn mẫu giao diện quá tải.
st: Bảo Trung.

No Comment to " Sử dụng modules Views trong Drupal "