header-object

Template trong Joomla (4) - Module Chrome

2/ Chi tiết về style trong thẻ jdoc

Như chúng ta đã nói, khi đặt một thẻ jdoc có type là modules, chúng ta thiết lập thuộc tính style cho nó, thuộc tính này sẽ quyết định cách thức mark-up các thẻ “xung quanh” một module. Xem bảng bên dưới để dễ hình dung, trong trường hợp này thẻ <ol> chính là nội dung module mod_news đẩy ra ở vị trí position-7 khi chúng ta thiết lập các kiểu style khác nhau:


style

html

none

template041

table

template042

horz

template043

xhtml

template044

rounded

template045

outline

template046

Như vậy, mỗi kiểu style tương ứng joomla sẽ tạo ra phần bao quanh nội dung module khác nhau (phù hợp với cách thức định dạng css tương ứng). Lấy một ví dụ là style rounded. Joomla đẩy ra 4 thẻ div chồng nhau bao quanh nội dung module. Nếu bạn là người làm css quen bạn sẽ nhận ra ngay là ta có thể dùng 4 hình làm background tương ứng cho 4 thẻ div chồng nhau này thì chúng ta có thể round 4 góc của vùng nội dung mỗi module.
Vậy module chrome làm gì? Ta thấy rằng 6 kiểu trên là hoàn toàn chưa đủ cho tất cả các trường hợp định dạng. Và đây, module-chrome cho phép chúng ta tự định nghĩa một style cho riêng mình, quyết định cấu trúc đẩy ra như thế nào khi chúng ta đi xây dựng template.

 

3/ Tạo các style mới bằng việc xây dựng các hàm modChrome_

Trong thư mục templates/hoangnguyen, tạo thư mục có tên html, trong thư mục này tạo tập tin có tên modules.php. Đây sẽ là tập tin chứa các hàm modChrome_.
Mở tập tin modules.php mới tạo và thêm vào hàm modChrome_newstyle() có code được viết như sau:

template047

Chúng ta sẽ không tự gọi hàm này, việc gọi hàm này là do Joomla thực hiện trong quá trình render các module. Việc tiếp sau là chúng ta sử dụng style mới này trong template hoangnguyen.
Mở tập tin index.php của template. Đổi lại giá trị của thuộc tính tyle của thẻ jdoc có tên position-7 thành newStyle. Tải lại trang ngoài và kiểu tra mã html đẩy ra tại vị trí tương ứng position-7 chúng ta có cấu trúc như sau (lưu ý, ở đây thẻ ol chứa nội dung module).

template048

Đối chiếu với hàm modChrome_newStyle() mới tạo trên, chúng ta dễ dàng nhận thấy cấu trúc đẩy ra hoàn toàn giống. Nói cách khác, hàm modChrome_newStyle() chính là nơi tạo ra cấu trúc html “xung quanh” của các module ở vị trí được đặt style là newStyle.
Vị trí nào đó được đặt style là newStyle có bao nhiêu module thì hàm modChrome_newStyle() sẽ được Joomla gọi tới bấy nhiêu lần.
Điều tiếp theo chúng ta thắc mắc vậy 3 tham số đã truyền vô cho hàm này lần lượt có ý nghĩa như thế nào?

  1. $module: chứa toàn bộ nội dung, tiêu đề, một số tham số của module đang được đẩy ra.
  2. $params: các tham số đã được thiết lập cho module tương ứng
  3. $attribs: giá trị các thuộc tính của thẻ jdoc được đặt style là newStyle.

Vậy, với việc xây dựng thêm các hàm modChrome_, chúng ta có thể tạo cấu trúc đẩy ra “xung quanh” các module một cách tùy ý.
Câu hỏi đặt ra tiếp theo là: Vậy, khi tạo ra template, chúng ta có thể nào thay đổi cả nội dung của chính module hay không? Câu trả lời là có và bạn có thể tìm thấy ngay sau đây trong phần Override.

GV: Đào Ngọc Giang
(còn tiếp)

Thêm ý kiến


Security code
Làm mới


2

Facebook

Thống kê truy cập

Hiện có 847 khách đang truy cập
2492008