1. XOOPS的開發環境   1-1 xoops_version.php   1-2 languages/tchinese_utf8/modinfo.php   1-3 images/logo.png   1-4 tad_ebook 資料表   1-5 tad_ebook_page 資料表 2. 後台頁面與表單物件   2-1 sql/mysql.sql   2-2 xoops_version.php   2-3 admin/menu.php   2-4 language/tchinese_utf8/modinfo.php   2-5 templates/tad_ebook_adm_main.html   2-6 admin/main.php 3. 樣板與管理功能   3-1 admin/main.php   3-2 temaplates/tad_ebook_adm_main.html 4. 前台頁面與HTML表單   4-1 admin/main.php   4-2 /templates/tad_ebook_adm_main.html   4-3 /interface_menu.php   4-4 /post.php   4-5 /templates/tad_ebook_post.html   4-6 /xoops_version.php 5. 前台顯示及各種控管   5-1 /post.php   5-2 /templates/tad_ebook_post.html   5-3 /index.php   5-4 /templates/tad_ebook_index.html   5-5 /xoops_version.php 6. XOOPS群組與權限   6-1 /admin/menu.php   6-2 /admin/groupperm.php   6-3 /modules/system/admin/groupperm.php   6-4 /interface_menu.php   6-5 /xoops_version.php   6-6 /function.php   6-7 /verify.php   6-8 /templates/tad_ebook_verify.html   6-9 /post.php   6-10 /templates/tad_ebook_post.html 7. 搜尋、語系、偏好設定、自動功能   7-1 /templates/tad_ebook_post.html   7-2 /xoops_version.php   7-3 /include/search.php   7-4 /admin/main.php   7-5 /language/tchinese_utf8/admin.php   7-6 /templates/tad_ebook_adm_main.html   7-7 /language/tchinese_utf8/modinfo.php   7-8 /post.php   7-9 /include/onUpdate.php   7-10 /include/onInstall.php   7-11 /sql/mysql.sql   7-12 /include/onUninstall.php   7-13 /index.php 8. 上傳、區塊與BootStrapS3   8-1 /xoops_version.php   8-2 /sql/mysql.sql   8-3 /include/onUpdate.php   8-4 /admin/main.php   8-5 /templates/tad_ebook_adm_main.html   8-6 /blocks/tad_ebook_list.php   8-7 /templates/blocks/tad_ebook_list.html   8-8 /index.php   8-9 /templates/tad_ebook_index.html 9. 評論與通知功能   9-1 /xoops_version.php   9-2 /index.php   9-3 /templates/tad_ebook_index.html   9-4 /comment_new.php   9-5 /include/notification.inc.php   9-6 /admin/main.php   9-7 /language/tchinese_utf8/mail_template/new_ebook.tpl   9-8 Uniform Server的信件設定   9-9 /templates/tad_ebook_index_b3.html   9-10 /templates/tad_ebook_verify_b3.html   9-11 bootstrap2與bootstrap3水平表單結構   9-12 /templates/tad_ebook_post_b3.html   9-13 /templates/tad_ebook_adm_main_b3.html 
             
        
        
     
    
        
            
            
                                    
                        3.
                        樣板與管理功能
                     
                
                                
一、 smarty樣板 
	樣板(template)是使用者眼睛看到的界面,我們經由程式產生的任何結果,都可以傳送至樣板以便呈現在畫面上。 
	樣板檔=html檔+smarty樣板標籤,樣板標籤看起來像這樣:<{$樣板標籤}> 
	XOOPS透過$xoopsTpl物件,來將PHP產生的值套用到樣板中(即樣板標籤): 
	$xoopsTpl->assign('樣板標籤' , $值); 
	若是在函數中要使用$xoopsTpl樣板物件,記得用global $xoopsTpl,才能使用。 
	若要在樣板中直接使用語系,請用: 
	<{$smarty.const._語系名稱}> 
 
二、 smarty迴圈:製作樣板標籤二維陣列變數 
	樣板標籤除了一次傳一個值外,也可以傳陣列,方法一模一樣,但陣列格式必須像這樣:
	
		
			
				資料庫 
				二維陣列格式 
				實際範例 
			 
			
				第一筆資料 
				$陣列名稱[0]['索引名稱1'] 
				$list_ebook[0]['ebook_sn']=1; 
			 
			
				第二筆資料 
				$陣列名稱[1]['索引名稱1'] 
				$list_ebook[1]['ebook_sn']=2; 
			 
		 
	
	 
	利用 $ebook = $xoopsDB->fetchArray($result); 剛好可以取得一維陣列,即:
	
		
			
				$ebook['ebook_sn']=1; 
				該筆資料的「ebook_sn」欄位值 
			 
		 
	
	 
	也就是說,在while迴圈中,再給予一個數字索引即可完成所需的二維陣列
	
//用$i做第一個索引,這裡先設初始值
$i=0;
//設定二維陣列變數的初始值
$list_ebook="";
//用迴圈一筆一筆抓出資料庫的數據
while($ebook = $xoopsDB->fetchArray($result)){
  //將抓出的數據陣列,放到一維陣列中
  $list_ebook[$i]=$ebook;
  //索引值+1
  $i++;
}
//將此陣列套用到樣板標籤 list_ebook
$xoopsTpl->assign('list_ebook' , $list_ebook); 
	 
 
三、 smarty迴圈:套用二維陣列變數的樣板標籤 
	做好二維陣列並套用到樣板後,可以利用<{foreach}>的方式來一筆一筆讀出陣列值:
	
		
			
				<{foreach from=$list_ebook item=ebook}> 
				從$list_ebook擷取一筆資料,並塞入ebook樣板標籤中 
			 
		 
	
	 
	from就是來自PHP的二維陣列變數 
	item就是設定樣板標籤名稱,以便將該變數取出陣列值後,塞進此樣板標籤 
	樣板標籤若是陣列,其表示方式為:<{$樣板標籤.索引名稱}> 
 
四、 BootStrap表格 
	在表格標籤加入 class="table table-striped table-bordered table-hover" 
	table-striped 會出現斑馬紋,較容易辨識 
	table-bordered 會加入表格框線 
	table-hover 移過去該列會變色,較醒目 
 
五、 在樣板檔中加入刪除的功能連結 
	利用 get 的傳遞方式可過連結來傳遞各種參數,格式為:
	
<a href="檔案.php?參數1=值1&參數2=值2&參數3=值3">連結名稱</a> 
	 
	流程控制是利用$op,所以需傳遞一個op變數,以便告訴程式接下來要執行什麼動作。 
	此外,還要傳遞流水號,如此,才能知道要刪除哪一筆資料(編號請用樣板標籤):
	
<a href="main.php?op=delete_ebook&ebook_sn=編號">刪除</a> 
	 
 
六、 在php檔的流程控制中加入刪除 
	一旦有設定一組op的動作(如op=delete_ebook),接收端(main.php)就必須在流程控制的switch中加入一組 case "delete_ebook": 的對應動作。
	
//若$op=del_ebook時
case "del_ebook":
  //執行del_ebook()函數以刪除資料
  del_ebook($ebook_sn);
  //刪除後轉向回自己這頁
  header("location:{$_SERVER['PHP_SELF']}");
  //停止程式
  exit;
//跳出流程(基本上執行不到...)
break; 
	 
	由於del_ebook()需要傳入期刊編號$ebook_sn,此編號用get方式傳來,但未來易可能從post方式傳來,故在流程控制之前,可先產生$ebook_sn的初始值:
	
$ebook_sn=empty($_REQUEST['ebook_sn'])?"":intval($_REQUEST['ebook_sn']); 
	 
	這是三元一次式的寫法:(條件)?真:假; 
	intval()用來強制數字化,用$_REQUEST則可接收來自get、post、cookie的變數。 
 
七、 刪除資料庫資料 
	在資料庫中要刪除資料的SQL語法:
	
delete from 資料表where 條件 
	 
	執行刪除或更新等動作時,需用 $xoopsDB->queryF($sql) 來強制執行 SQL 語法。 
 
八、 加入確認後刪除 
	先修改原先的刪除連結,改為執行javascript函數
	
<a href="javascript:del_ebook_func(編號)" class="btn btn-mini btn-danger">刪除</a> 
	 
	在樣板中,加入以下javascript函數語法(需在執行之前)
	
		
			
				<script> 
				script起始標籤 
			 
		 
	
	 
 
九、 加入修改功能 
	和加入刪除的動作差不多,但op值可改為edit_ebook,一樣要傳遞流水號。 
	新增一組edit_ebook流程,直接呼叫原有的表單函數ebook_form($ebook_sn),並傳入流水號,以便修改之。換言之,有傳入流水號即修改,沒傳入流水號即新增。 
	在ebook_form()函數加入一組$ebook_sn參數。 
	修改時,需讀出原有資料,並將之設為表單元件預設值。 
	記得將$xoopsDB物件設為global,以便在函數中使用。
	
// 假如有流水號(更新模式)
if($ebook_sn){
  // 先加入資料表前置字串
  $tbl=$xoopsDB->prefix('ebook');
  // 讀取指定流水號的所有資料
  $sql="select * from $tbl where $ebook_sn='$ebook_sn'";
  // 送出執行,執行失敗則停止,並秀出原因
  $result=$xoopsDB->query($sql) or die(mysql_error());
  // 利用list()將得到的一筆結果,四個欄位值,分別塞入四個指定變數中。
  list($ebook_sn,$ebook_title,$ebook_post_date,$ebook_publish_date) = $xoopsDB->fetchRow($result);
  // 設定$op值為 update_ebook
  $op="update_ebook";
  // 將投稿截止日的日期轉為時間戳記
  $ebook_post_date=strtotime($ebook_post_date);
  // 將發行日的日期轉為時間戳記
  $ebook_publish_date=strtotime($ebook_publish_date);
// 若沒有傳入流水號(新增模式)
}else{
  // 標題和編號初始值均為空值
  $ebook_title=$ebook_sn="";
  // 投稿截止日設為現在時間
  $ebook_post_date=time();
  // 發行日設為現在時間
  $ebook_publish_date=time();
  // 設定$op值為insert_ebook
  $op="insert_ebook";
} 
	 
	op的值記得改為變數,變根據不同情形,使用不同op。另加入ebook_sn的隱藏欄位,以便將流水號帶給下一個動作。
	
$form->addElement(new XoopsFormHidden('ebook_sn', $ebook_sn));
$form->addElement(new XoopsFormHidden('op', $op)); 
	 
 
十、 編輯時無須秀出列表 
	修改樣板檔,在列出所有期刊列表的語法前後,利用<{if $list_ebook}><{/if}>將之包起來,如此,只有在有傳入$list_ebook二維陣列時,才會出現列表。 
	編輯時,並不會產生$list_ebook陣列,故列表剛好可以隱藏,無須出現。 
 
十一、 更新資料庫資料 
	在流程新增一組update_ebook的流程,並建立update_ebook函數 
	在資料庫中要更新資料的SQL語法:
	
update 資料表 set 欄位1='值1' ,  欄位2='值2' , … where 條件 
	 
 
十二、 BootStrap按鈕 
	在<a>或<button>標籤中,加入 class="btn" 可使用bootstrap的按鈕風格 
	btn-mini 可以讓按鈕縮小,另有btn-small或btn-large 
	btn-primary 藍色按鈕,用在主功能按鈕,例如「送出」、「儲存」、「查詢」 
	btn-warbing 黃色按鈕,有警告意味,例如「修改」 
	btn-danger 紅色按鈕,較重要或危險之動作,例如「刪除」 
	另有btn-success 綠色按鈕及btn-info淺藍色按鈕可套用。 
 
             
         
     
    
        
        
            
                1. XOOPS的開發環境   1-1 xoops_version.php   1-2 languages/tchinese_utf8/modinfo.php   1-3 images/logo.png   1-4 tad_ebook 資料表   1-5 tad_ebook_page 資料表 2. 後台頁面與表單物件   2-1 sql/mysql.sql   2-2 xoops_version.php   2-3 admin/menu.php   2-4 language/tchinese_utf8/modinfo.php   2-5 templates/tad_ebook_adm_main.html   2-6 admin/main.php 3. 樣板與管理功能   3-1 admin/main.php   3-2 temaplates/tad_ebook_adm_main.html 4. 前台頁面與HTML表單   4-1 admin/main.php   4-2 /templates/tad_ebook_adm_main.html   4-3 /interface_menu.php   4-4 /post.php   4-5 /templates/tad_ebook_post.html   4-6 /xoops_version.php 5. 前台顯示及各種控管   5-1 /post.php   5-2 /templates/tad_ebook_post.html   5-3 /index.php   5-4 /templates/tad_ebook_index.html   5-5 /xoops_version.php 6. XOOPS群組與權限   6-1 /admin/menu.php   6-2 /admin/groupperm.php   6-3 /modules/system/admin/groupperm.php   6-4 /interface_menu.php   6-5 /xoops_version.php   6-6 /function.php   6-7 /verify.php   6-8 /templates/tad_ebook_verify.html   6-9 /post.php   6-10 /templates/tad_ebook_post.html 7. 搜尋、語系、偏好設定、自動功能   7-1 /templates/tad_ebook_post.html   7-2 /xoops_version.php   7-3 /include/search.php   7-4 /admin/main.php   7-5 /language/tchinese_utf8/admin.php   7-6 /templates/tad_ebook_adm_main.html   7-7 /language/tchinese_utf8/modinfo.php   7-8 /post.php   7-9 /include/onUpdate.php   7-10 /include/onInstall.php   7-11 /sql/mysql.sql   7-12 /include/onUninstall.php   7-13 /index.php 8. 上傳、區塊與BootStrapS3   8-1 /xoops_version.php   8-2 /sql/mysql.sql   8-3 /include/onUpdate.php   8-4 /admin/main.php   8-5 /templates/tad_ebook_adm_main.html   8-6 /blocks/tad_ebook_list.php   8-7 /templates/blocks/tad_ebook_list.html   8-8 /index.php   8-9 /templates/tad_ebook_index.html 9. 評論與通知功能   9-1 /xoops_version.php   9-2 /index.php   9-3 /templates/tad_ebook_index.html   9-4 /comment_new.php   9-5 /include/notification.inc.php   9-6 /admin/main.php   9-7 /language/tchinese_utf8/mail_template/new_ebook.tpl   9-8 Uniform Server的信件設定   9-9 /templates/tad_ebook_index_b3.html   9-10 /templates/tad_ebook_verify_b3.html   9-11 bootstrap2與bootstrap3水平表單結構   9-12 /templates/tad_ebook_post_b3.html   9-13 /templates/tad_ebook_adm_main_b3.html