emlog的模板位於安裝目錄content\templates\文件夾下,每一個模板都是一個單獨的文件夾,文件夾以模板名字命名。經過後臺上傳安裝的模板都保存在這個目錄下。php
通常來講,一個模板都會包含如下幾個部分:css
在通常的emlog模板開發中,以上說起的部分中echo_log.php、log_list.php、module.php、page.php、 t.php、header.php以及preview.jpg是不可或缺的,一旦缺省,模板將沒法運行。此外的side.php、footer.php、 main.css、images文件夾等,只須要對模板代碼作小部分更改,那麼它們都是能夠更名、移動、甚至刪除的。sql
下面咱們將對以上各模塊進行簡要分析:數據庫
經過預覽整個模板中的各個文件,你會發現如下代碼同時存在於多個文件中,這些代碼分別有如下用途: if(!defined('EMLOG_ROOT')) {exit('error!');} 此行代碼存在於模板目錄下的每一個php文件起始部分(事實上爲了安全起見,該行代碼也在admin目錄下的幾乎全部php文件起始部分存在),其做用是防 止代碼所在的php腳本被直接訪問執行。 require_once View::getView('side'); require_once View::getView('footer'); 這兩行代碼存在於log_list.php、echo_log.php、page.php、t.php裏面,其做用是調用模板文件夾下的side.php 和footer.php的代碼到當前文件的當前位置。View是emlog的模板視圖控制器,View::getView('文件名','文件後綴')將 返回當前模板安裝路徑下對應的文件。getView函數的第二個參數爲缺省參數,在不傳入值的狀況下,將默認做爲.php文件後綴返回文件路徑。跨域
開頭註釋內容是模板信息,該信息顯示在模板選擇界面數組
以後是具體代碼部分:緩存
if(!defined('EMLOG_ROOT')) {exit('error!');}安全
該行代碼一樣存在於其它模板文件中,爲防止該文件被直接執行。ide
require_once View::getView('module');函數
加載模板公共代碼.
* $site_title:站點標題 * $site_key:關鍵字 * $site_description:輸出博客設置的摘要 * BLOG_URL:博客首頁的URL,* TEMPLATE_URL:模板文件夾的URL,用於加載模板內的css、js及其餘內容, * BLOG_URL.Option::get('topimg'):這句能夠無視,由於只默認模板能夠自定義banner,其它模板沒這功能(卡片語:很沒養分的設定,嗯。)
<?php echo $curpage == CURPAGE_HOME ? 'current' : 'common';?> 判斷當前是否首頁,是則給導航加current類,用於表現當前位置。
<?php if($istwitter == 'y'):?>…….<?php endif;?> 如後臺設置在前臺顯示碎語,則輸出…….中的內容。
<?php echo $curpage == CURPAGE_TW ? 'current' : 'common';?> 判斷當前URL是否爲碎語並選擇加類名。
<?php foreach ($navibar as $key ⇒ $val):?>…….<?php endforeach;?> 輸出自定義頁面的連接
Option::EMLOG_VERSION:得到版本號。
$icp:得到後臺設置的ICP備案號。
<?php doAction('index_footer'); ?> 頁腳底部掛載點加入。
<?php doAction('index_loglist_top'); ?> 頁腳底部掛載點加入。
$value['logid'] 該變量爲當前日誌的id
<?php topflg($value['top']); ?> 顯示置頂標記,該函數位於模板module.php內。
<?php echo $value['log_url']; ?> 輸出日誌URL
<?php echo $value['log_title']; ?> 輸出日誌標題
<?php blog_author($value['author']); ?>
輸出日誌的做者,該函數位於模板module.php內。
<?php echo gmdate('Y-n-j G:i l', $value['date']); ?>
輸出日誌發佈時間,參數'Y-n-j G:i l'用於定義日期格式。
<?php blog_sort($value['logid']); ?>
輸出日誌所屬的分類,該函數位於模板module.php內。
<?php editflg($value['logid'],$value['author']); ?>
當管理員或做者登錄時顯示「編輯」連接,該函數位於模板module.php內。
<?php echo $value['log_description']; ?>
輸出日誌摘要(沒有摘要則輸出全文)。
<?php blog_att($value['logid']); ?>
如日誌有附件則輸出附件,該函數位於模板module.php內。
<?php blog_tag($value['logid']); ?> 輸出日誌的標籤,該函數位於模板module.php內。
<?php echo $value['comnum']; ?> 輸出當前日誌的評論數
<?php echo $value['tbcount']; ?> 輸出當前日誌的引用量
<?php echo $value['views']; ?> 輸出當前日誌的瀏覽量
<?php echo $page_url;?> 顯示當前列表頁的翻頁功能。
<?php include View::getView('side'); include View::getView('footer'); ?>
加入側邊欄及加入頁腳。
該文件功能函數與列表頁一致,但參數有區別,注意區分。 $logid 該變量爲當前日誌的id
<?php topflg($top); ?> 顯示置頂標記,該函數位於模板module.php內。
<?php echo $log_title; ?> 輸出日誌標題。
<?php blog_author($author); ?> 輸出日誌的做者,該函數位於模板module.php內。
<?php echo gmdate('Y-n-j G:i l', $date); ?> 輸出日誌發佈時間,參數'Y-n-j G:i l'用於定義日期格式。
<?php blog_sort($logid); ?> 輸出日誌所屬的分類,該函數位於模板module.php內。
<?php editflg($logid,$author); ?> 當管理員或做者登錄時顯示「編輯」連接,該函數位於模板module.php內。
<?php echo $log_content; ?> 輸出日誌全文內容。
<?php blog_att($logid); ?> 如日誌有附件則輸出附件,該函數位於模板module.php內。
<?php blog_tag($logid); ?> 輸出日誌的標籤,該函數位於模板module.php內。
<?php echo $comnum; ?> 日誌頁顯示評論數
<?php echo $tbcount; ?> 日誌頁顯示引用數
<?php echo $views; ?> 日誌頁顯示瀏覽量
<?php doAction('log_related', $logData); ?> 相關日誌的掛載點,與3.x版本不一樣,4.0帶第二參數。
<?php neighbor_log($neighborLog); ?> 輸出鄰近,就是上一篇及下一篇,該函數位於模板module.php內。
<?php blog_trackback($tb, $tb_url, $allow_tb); ?> 輸出該日誌被引用的信息列表,與3.x不一樣注意區分。
<?php blog_comments($comments); ?> 輸出該日誌評論列表,與3.x不一樣注意區分。
<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?> 輸出發表評論框,與3.x不一樣注意區分。
該文件寫法與echo_log.php相似,再也不重複。
與以前相同的內容再也不重複。 <?php echo $avatar; ?> 輸出頭像。
<?php echo $author; ?> 輸出做者名。
<?php echo $val['t'];?> 輸出碎語內容。
<?php echo DYNAMIC_BLOGURL; ?> 根據當前url輸出博客地址,主要用於js,解決跨域問題。
<?php echo $tid;?> 輸出碎語所在數據庫中的id號。
<?php echo $val['date'];?> 發佈碎語的時間。
$reply_code :其值爲‘n’或‘y’,後臺設置是否啓用碎語回覆驗證碼。
<?php echo $rcode; ?> 輸出驗證碼。
側邊欄,主要負責根據後臺widgets設置信息輸出側邊欄內容。建議該文件內代碼保持不變。
模板公共代碼,包含側邊widgets、評論、引用、編輯等。 該文件由若干函數組成,被博客前臺文件調用,可在內自定義函數實現更多功能。 如在自定義函數內調用emlog緩存時,假設讀取user緩存信息,則形如: global $CACHE; $user_cache = $CACHE→readCache('user'); 如須要操做數據庫,則形如: $DB = MySql::getInstance(); $res = $DB→query($sql); 以上兩點與3.x不一樣,請注意區分。
用於自定義404頁面的模板。
doAction('index_footer'); 頁腳底部掛載點
doAction('index_loglist_top'); 首頁日誌列表頂部掛載點
doAction('log_related', $logData); 相關日誌掛載點
doAction('diff_side'); 側邊欄掛載點