標籤:des style class blog code http
請求地址http://127.0.0.1/phpcms/index.php?m=content&c=index&a=show&catid=6&id=8
先來判斷地址對應的資料表
查閱phpcms v9 資料表結構手冊 http://v9.help.phpcms.cn/html/2010/database_1228/107.html 可以獲知我們要取出news,v9_news_data 兩個表中的資料
下一步就要理解資料是如何取出的
相關的控制器如下
這個比較簡單就是調用 content模組下index控制器的show方法 資料表結構手冊
下一步介紹下show()方法如何操作資料庫的
請求參數catid=6&id=6
而我們已經知道文章儲存在 文章模型表 news,news_data表id=6這一行,
catid為欄目id 查詢資料表結構手冊 或者開啟資料庫 可以找到_category欄目表可以輕易發現
每個欄目的文章模型 由modelid欄位定義
再查手冊可以確認modelid對應表model
所以請求參數在show()轉化為參數modelid=1&id=6
至此我們知道要擷取表news,news_data中=6的資訊
下面就是操作資料庫了
$tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid][‘tablename‘];$r = $this->db->get_one(array(‘id‘=>$id));if(!$r || $r[‘status‘] != 99) showmessage(L(‘info_does_not_exists‘),‘blank‘);$this->db->table_name = $tablename.‘_data‘;$r2 = $this->db->get_one(array(‘id‘=>$id));$rs = $r2 ? array_merge($r,$r2) : $r;
取出主表內容和附表內容
其中get_one方法在 mysql.class.php 資料庫實作類別
$content_output = new content_output($modelid,$catid,$CATEGORYS);
$data = $content_output->get($rs);判斷是否有緩衝有的話讀取緩衝沒有輸出$rs
extract($data);這個是php本身的函數將本函數用來將變數從數組中匯入到當前的符號表中
<?php/* 假定 $var_array 是 wddx_deserialize 返回的數組*/$size = "large";$var_array = array("color" => "blue", "size" => "medium", "shape" => "sphere");extract($var_array, EXTR_PREFIX_SAME, "wddx");echo "$color, $size, $shape, $wddx_size\n";?>
blue, large, sphere, medium
再去看模板檔案就比較簡單了
<div class="main"> <div class="col-left"> <div class="crumbs"><a href="{siteurl($siteid)}"><?php echo $title?>首頁</a><span> > </span>{catpos($catid)} 本文</div> <div id="Article"> <h1>{$title}<br /><span>{$inputtime} 來源:{$copyfrom} 評論:<a href="#comment_iframe" id="comment">0</a> 點擊:</span><span id="hits"></span></h1> {if $description}<div class="summary" >{$description}</div>{/if} <div class="content"> {if $allow_visitor==1} {$content}