38
講講 ASIKA 講講講 I LOVE JOOMLA 講講 Joomla! 佈佈佈佈佈佈 http://www.facebook.com/groups/lovejoomla/

I Love Joomla! 佈景製作教學 0212

Embed Size (px)

Citation preview

Page 1: I Love Joomla! 佈景製作教學 0212

講 者 : ASIKA

所 有 權 : I LOVE JOOMLA 社 群

Joomla! 佈景製作教學

http://www.facebook.com/groups/lovejoomla/

Page 2: I Love Joomla! 佈景製作教學 0212

工欲善其事、必先利其器

Page 3: I Love Joomla! 佈景製作教學 0212

好用順手的程式編輯器

PsPad

NotePad++

UltraPad

DreamWeaver

Page 4: I Love Joomla! 佈景製作教學 0212

瀏覽器除錯工具

Chrome 內建開發者工具

FireFox 的 FireBUG 外掛

IE8,9 內建開發者工具

Page 5: I Love Joomla! 佈景製作教學 0212

新增文件檔案

Mac 上推薦安裝 Document Palette 可以像Windows 一樣新增各類型檔案文件。

Page 6: I Love Joomla! 佈景製作教學 0212

Joomla! 的模版結構

Page 7: I Love Joomla! 佈景製作教學 0212

簡易說明

Joomla!的模版皆放在:templates 資料夾下面。每個模版有一個自己的資料夾。

一定會有一個templateDteails.xml用來辨別模版資訊。

還有一個 index.php 檔案

有以上兩者模版即可使用。

html是核心輸出覆蓋功能專用。其他資料夾可以自行組織。

Page 8: I Love Joomla! 佈景製作教學 0212

templateDetails.xml

以下 xml 內容為一個模版要正常運作的最低限度需求內容。

例如模版名稱叫 sakura ,將這個 xml 放在 templates/sakura 下, Joomla! 中的擴充套件探索即可判讀

<?xml version="1.0" encoding="utf-8"?><extension type="template" version="2.5" client="site">

<name>Sakura Template</name></extension>

Page 9: I Love Joomla! 佈景製作教學 0212

設為預設佈景

探索並安裝完成後,我們就可以先設為預設了

Page 10: I Love Joomla! 佈景製作教學 0212

index.php

最簡單的模版初始頁面:

define('_JEXEC') or die 避免直接執行本php 檔

同樣放在 template 下即可執行。

<?php defined('_JEXEC') or die;?><!DOCTYPE html PUBLIC "-/W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>

<head><jdoc:include type="head" />

</head> <body>

<p>This is Sakura Template by Asika</p></body>

</html>

Page 11: I Love Joomla! 佈景製作教學 0212

執行成果

Page 12: I Love Joomla! 佈景製作教學 0212

Joomla! 模版引擎簡介

Page 13: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

<jdoc:include type="head" />

<jdoc:include type="component" />

<jdoc:include type="message" />

<jdoc:include type="module" name="footer" />

<jdoc:include type="modules" name="position-5" />

Page 14: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

標頭文件( head )標籤

<jdoc:include type="head" />

載入 Joomla! 的 <head> 與全站 meta 資訊 , 只限一個。

含有 title, generator, meta keyword 等標籤。

載入 mootools.js 等等 liberaries 。其他任何套件用程式插入的 css 或 js 檔案

Page 15: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

標頭文件( head )標籤

Page 16: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

MainBody 元件標籤

<jdoc:include type="component" />

展示主要頁面內容,元件生成的畫面等。(只限一個)

Page 17: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

MainBody 元件標籤

Page 18: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

Message 系統訊息標籤

<jdoc:include type="message" />

顯示登入需求、操作錯誤等等 Joomla! 系統訊息

Page 19: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

Module 模組標籤

<jdoc:include type="module" name="footer" /><jdoc:include type="modules" name="position-5" />

載入模組區塊位置。module 只能顯示與 name 同名的模組。modules 可以顯示任何模組。

Page 20: I Love Joomla! 佈景製作教學 0212

基本模版引擎標籤

Module 模組標籤

Page 21: I Love Joomla! 佈景製作教學 0212

模組的 Chrome Style 與 attributes

type="modules","module" 時可以有額外的參數。 <jdoc:include type="modules" name="position-5" style="rounded" attr="A" attr="B" />

Style 類型: none : 直接顯示模組內容。 rounded : 用四個 div 包起來方便製作圓角。 xhtml : 用 div 包起來方便製作一般樣式。 table, horz : 用 table 表格包起來。 outline : 顯示區塊位置名稱, ?tp=1 時用的就是這個。

Page 22: I Love Joomla! 佈景製作教學 0212

自製 chrome style

在 templates/YOUR_TEMPLATE/html 下,建立一個新檔案 modules.php

假設我想新增一個 style="custom" ,就在該文件下新增一個 function: function modChrome_custom($modules,&$params,&$attr){}

$modules : 模組物件,包含所有模組資訊。 $params : 模組參數,用 $params->get('key') 取得參

數。 $attr : 自定屬性,會生成陣列, $attr['attr1']=="A" 。

Page 23: I Love Joomla! 佈景製作教學 0212

自製 chrome style

以下為 xhtml 模式的範例 Chrome Style

function modChrome_xhtml($module, &$params, &$attribs){

if (!empty ($module->content)) : ?><div class="moduletable<?php echo htmlspecialchars($params-

>get('moduleclass_sfx')); ?>"><?php if ($module->showtitle != 0) : ?>

<h3><?php echo $module->title; ?></h3><?php endif; ?>

<?php echo $module->content; ?></div>

<?php endif;}

Page 24: I Love Joomla! 佈景製作教學 0212

特殊功能

Page 25: I Love Joomla! 佈景製作教學 0212

沒有模組時隱藏模組位置

<?php if ($this->countModules( 'position-1' )) : ?><jdoc:include type="modules" name="position-1" />

<?php endif; ?>

用 php 標籤包住 jdoc 標籤

以 $this->countModules() 計算此位置的模組數量,大於 1 才會顯示。

避免該位置沒有模組時出現空白或奇怪的線條

Page 26: I Love Joomla! 佈景製作教學 0212

可用的 php 功能說明

使用方式 說明

<?php echo $this->baseurl ; ?>

[ 變數 ]若網站放在子目錄,將返回子目錄名稱。( subdir/ )若放在根目錄,將返回斜線( / )

<?php echo $this->template ; ?>[ 變數 ] 返回現在的模版資料夾名稱。

<?php echo $this->params->get('key') ; ?> [ 函式 ] 取得模版參數。

<?php echo $this->countMenuChildren() ; ?>

[ 函式 ] 若本頁面是某個選單,計算下方還有幾個子選單。

<?php echo $this->countModules('position') ; ?> [ 函式 ] 計算模組數量。

Page 27: I Love Joomla! 佈景製作教學 0212

Config 佈景參數

Page 28: I Love Joomla! 佈景製作教學 0212

製作佈景參數

在 templateDetails.xml 中新增 <config> 標籤

Page 29: I Love Joomla! 佈景製作教學 0212

參數標籤結構

第一層: config 參數的根元素,在 extension下

第二層: fields name 必須為 params第三層: fieldset 可以有多個第四層: field 一筆一筆的參數設定<config>

<fields name="params"><fieldset name="basic">

<field name="title" type="text" label="TITLE" /><field name="width" type="text" label="WIDTH" />

</fieldset><fieldset name="advanced">

<field ... /><field ... />

</fieldset></fields>

</config>

Page 30: I Love Joomla! 佈景製作教學 0212

參數種類

可參考官方 wiki formfield 欄位說明 : http://docs.joomla.org/Form_field

Page 31: I Love Joomla! 佈景製作教學 0212

參數種類

每個項目點進去後都有參數詳細說明

Page 32: I Love Joomla! 佈景製作教學 0212

範例

Text 欄位: http://docs.joomla.org/Text_form_field_type

<field name="sitetitle" type="text" label=" 網站標題 " description=" 網站標題說明 "

/>

Page 33: I Love Joomla! 佈景製作教學 0212

範例

select list 下拉式選單欄位: http://docs.joomla.org/List_form_field_type

<field name="color" type="list" label=" 佈景主題顏色 " ><option value="nature"> 自然 </option><option value="personal"> 專業 </option>

</field>

Page 34: I Love Joomla! 佈景製作教學 0212

語系檔製作

Page 35: I Love Joomla! 佈景製作教學 0212

設定 key

Joomla! language key 格式:大寫並用底線相連 TPL_SAKURA_SITE_TITLE

使用時機: 當佈景參數中的 label, description, option 等任何會

顯示出來的字串。

當 php 檔案中使用 echo Jtext::_('LAGUAGE_KEY') 時

Page 36: I Love Joomla! 佈景製作教學 0212

範例

當 templateDetails.xml 中的參數這樣寫時:

<field name="sitetitle" type="text" label="TPL_SAKURA_SITE_TITLE"

/>

未翻譯時長這樣:

Page 37: I Love Joomla! 佈景製作教學 0212

範例

在 templates/sakura/language/zh-TW 下新增檔案: zh-TW.tpl_sakura.ini 英文則改成 laguage/en-GB/en-GB.tpl_sakura.ini

在 ini 檔中加入一段字串: TPL_SAKURA_SITE_TITLE=" 網站標題 "

成果:

Page 38: I Love Joomla! 佈景製作教學 0212

Thank You