template Nội dung của Module Nội dung của Component Khái niệm cơ bản về template Cơ chế template trong Joomla... Khái niệm cơ bản về template Cấu trúc files của 1 template gfavicon.ico C
Trang 1Cơ chế template trong
Joomla! 1.5
Bùi Huy Thắng
Trang 2Trong 45 phút tới
1 Khái niệm cơ bản về template
2 Chức năng nâng cao của template
3 Nguồn thông tin tham khảo
Trang 3Joomla! template cơ bản
Khái niệm cơ bản về template
Trang 4Joomla! template trông như thế nào?
Khái niệm cơ bản về template
Cơ chế template trong Joomla
Trang 5Thành phần trong Joomla! template
Nội dung của Module Nội dung của Component
Khái niệm cơ bản về template
Cơ chế template trong Joomla
Trang 6Khái niệm cơ bản về template
Cấu trúc files của 1 template
gfavicon.ico
Cơ chế template trong Joomla
Trang 7Khái niệm cơ bản về template
Hãy thử tạo một template
Cơ chế template trong Joomla
Trang 8Firefox IE Opera Chrome Safari
Cơ chế template trong Joomla
Trang 9Khái niệm cơ bản về template
index.php
Cơ chế template trong Joomla
Trang 10Tạo file templateDetails.xml
Khái niệm cơ bản về template
1 Khai báo metadata về file XML
2 Khai báo metadata về template
3 Khai báo danh sách file và folder trong
template
4 Khai báo các vị trí cho module
Cơ chế template trong Joomla
Trang 11Khai báo metadata về file XML
Khái niệm cơ bản về template
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template
1.0//EN" install.dtd">
Cơ chế template trong Joomla
Trang 12Khai báo metadata về template
Khái niệm cơ bản về template
<version>1.0</version>
Cơ chế template trong Joomla
Trang 13Khai báo danh sách file và folder
Khái niệm cơ bản về template
<files>
<folder>images/</folder>
<folder>css/</folder>
</files>
Cơ chế template trong Joomla
Trang 14Khai báo các vị trí cho modules
Khái niệm cơ bản về template
<positions>
<position>top</position>
<position>bottom</position>
</positions>
Cơ chế template trong Joomla
Trang 15Khái niệm cơ bản về template
Tạo file index.php
1 Khai báo khởi đầu cho file index.php
2 Khai báo nội dung trong thẻ <head>
3 Khai báo nội dung trong thẻ <body>
Cơ chế template trong Joomla
Trang 16Khai báo khởi đầu cho file index.php
Khái niệm cơ bản về template
<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
$this->language; ?>" lang="<?php echo $this->language; ?>“ dir="<?php echo $this->direction; ?>”>
Cơ chế template trong Joomla
Trang 17Khai báo nội dung trong thẻ <head>
Khái niệm cơ bản về template
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?
>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?
>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?
type="text/css" />
</head>
Cơ chế template trong Joomla
Trang 18Khai báo nội dung trong thẻ <body>
Khái niệm cơ bản về template
<body>
<jdoc:include type="modules" name="top" />
<jdoc:include type="component" />
<jdoc:include type="modules" name="bottom" />
</body>
Cơ chế template trong Joomla
Trang 19Thuộc tính cho template
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 20Thuộc tính cho template là gì?
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 21Tại sao nên dùng thuộc tính?
Chức năng nâng cao
1 Cho phép người dùng tuy biến template mà không cần
sửa code
2 Tạo thêm nhiều tính năng cho template mà không làm
quá trình sử dụng phức tạp hơn
3 Tiết kiệm thời gian để tùy biến template
Cơ chế template trong Joomla
Trang 22Thêm một thuộc tính cho template
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 23Thêm thuộc tính cho template
Chức năng nâng cao
Cơ chế template trong Joomla
1 Khai báo về thuộc tính trong file templateDetails.xml
2 Lưu giá trị của thuộc tính trong file params.ini
3 Tạo code PHP để xử lý giá trị của thuộc tính
Trang 24Khai báo trong file templateDetails.xml
Chức năng nâng cao
Cơ chế template trong Joomla
<params>
<param name="templateColor" type="list" default="blue"
<option value="blue">Blue</option>
<option value="red">Red</option>
</param>
</params>
Trang 25Lưu giá trị trong file params.ini
Chức năng nâng cao
Cơ chế template trong Joomla
templateColor=blue
Trang 26Tạo code PHP để xử lý giá trị
Chức năng nâng cao
Cơ chế template trong Joomla
<?php
$tplColor = $this->params->get( 'templateColor' );
$this->addStyleSheet( $this->baseurl '/templates/' $this->template
?>
Trang 27Những định dạng thuộc tính có sẵn
Chức năng nâng cao
Cơ chế template trong Joomla
1 Joomla! có sẵn 21 định dạng cho mọi trường hợp
2 Trên thực tế hay dùng nhất là
List Radio Text
Trang 28Template override
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 29Template override là gì?
Chức năng nâng cao
Cơ chế template trong Joomla
Trước khi override Sau khi override
Trang 30Tại sao nên dùng override?
Chức năng nâng cao
1 Có code HTML đặc biệt mà không cần động đến code
của extension
2 Có được code HTML tối ưu hóa cho công cụ tìm kiếm
3 Tiết kiệm thời gian để tùy biến template
Cơ chế template trong Joomla
Trang 31Mô hình MVC là gì?
Chức năng nâng cao
Cơ chế template trong Joomla
Hiển thị
nội dung
Nội dung
Điều khiển Nội dung
Trang 32Mô hình MVC trong Joomla!
Chức năng nâng cao
Cơ chế template trong Joomla
Xem nội dung trên trang web Joomla!
Phân tích yêu cầu và đưa
về component phù hợp
(com_content)
Nội dung cần thiết được
lấy từ DB và đưa về View
Nội dung được hiển thị
căn cứ vào View va Layout
Trang 33Views và Layout
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 34Files của Views và Layout
Chức năng nâng cao
Cơ chế template trong Joomla
com_content/ <- folder chứa file chung thuộc component
views/ <- folder chứa file thuộc phần View
article/ <- folder chứa file thuộc View một bài viết
tmpl/ <- folder chứa file layout
default.php <- file layout
form.php <- file layout
category/
tmpl/
Trang 35Đối với Module
Chức năng nâng cao
Cơ chế template trong Joomla
mod_mainmenu/ <- folder chứa file chung thuộc module
tmpl/ <- folder chứa file layout
default.php <- file layout
helper.php <- helper file với logic xử lý của module
mod_mainmenu.php <- file chính của module
mod_mainmenu.xml <- file thông tin về module
Trang 36Tạo một override cho component
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 37Tạo một override cho component
Chức năng nâng cao
Cơ chế template trong Joomla
1 Tạo folder theo cấu trúc chuẩn trong template folder
2 Copy file View gốc của component vào folder mới được
tạo
3 Thực hiện override trên file mới được copy
4 Cập nhật thông tin trong file templateDetails.xml
Trang 38Tạo folder theo cấu trúc chuẩn
Chức năng nâng cao
Cơ chế template trong Joomla
YourTemplate/ <- folder template của bạn
html/ <- folder chứa các file overrides
com_content/ <- folder mang tên component sẽ bị overridearticle/ <- folder mang tên view sẽ bị override
com_user/
login/
Trang 39Copy file View gốc của component
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 40Thực hiện override trên file mới
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 41Override module cũng tương tự
Chức năng nâng cao
Cơ chế template trong Joomla
Copy
/components/mod_mainmenu/tmpl/default.phpvào
/templates/your_template/html/mod_mainmenu/default.php
Trang 42Bạn cần lưu ý
Chức năng nâng cao
Cơ chế template trong Joomla
1 Bạn chỉ có thể override khi component hoặc module
được thực hiện theo chuẩn MVC (có folder views/tmpl)
2 Bạn không thể override PDF và RSS feeds (phải chỉnh
sửa file core)
3 Đường dẫn đến file override phải thật chính xác
4 Override chỉ có giá trị cho template mà bạn đang
override
5 Lưu ý cập nhật file templateDetails.xml
Trang 43Module Chrome
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 44Module Chrome là gì?
Chức năng nâng cao
Cơ chế template trong Joomla
modChrome_xhtml modChrome_mystyle
jdoc:include type=“modules”
name=“left”
style=“xhtml mystyle”
HTML CSS JS IMAGES
templates/system/html/modules.php your_template/html/modules.php
Trang 45Tại sao nên dùng module chrome?
Chức năng nâng cao
1 Thể hiện module style cao cấp mà cơ chế có sẵn không
đáp ứng được
2 Để có thể tối ưu hóa code HTML của module phù hợp
cho nhu cầu nhất định
Cơ chế template trong Joomla
Trang 46Module chrome khác gì Module override?
Chức năng nâng cao
Cơ chế template trong Joomla
Module chrome wrapper
Modulecontent / override
Trang 47Những module chrome có sẵn trong Joomla!
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 48Tạo một module chrome
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 49Tạo một module chrome
Chức năng nâng cao
Cơ chế template trong Joomla
1 Tạo hoặc sửa file modules.php trong template folder
html/
2 Tạo hàm với tên và tham số phù hợp
3 Tạo code thực thi hàm để có module chrome mong
muốn
Trang 50Tạo hoặc sửa file modules.php
Chức năng nâng cao
Cơ chế template trong Joomla
YourTemplate/ <- folder template của bạn
html/ <- folder chứa các file overrides
modules.php <- file khai báo hàm cho module chrome
/templates/system/html/modules.php
Trang 51Tạo hàm với tên và tham số phù hợp
Chức năng nâng cao
Cơ chế template trong Joomla
<?php function modChrome_customh( $module , &$params , &$attribs ){
Trang 52Tạo code thực thi hàm
Chức năng nâng cao
Cơ chế template trong Joomla
<?php function modChrome_customh($module, &$params, &$attribs){
Trang 53Nói thêm về jdoc:include
Chức năng nâng cao
Cơ chế template trong Joomla
<jdoc:include type="modules" name="left"
Gọi module position
Gọi một module đơn lẻ
Gọi nhiều chrome cùng một lúc
Trang 54Những điều bạn cần biết
Cơ chế template trong Joomla
Chức năng nâng cao
Trang 55Những trang web dùng Joomla! ấn tượng
Chức năng nâng cao
Cơ chế template trong Joomla
Trang 56Nguồn thông tin tham khảo
Chức năng nâng cao
Cơ chế template trong Joomla