emlog模板

emlog的模板一般包括如下檔案: images資料夾:存放模板所需圖片。 echo_log.php:顯示日誌內容。 footer.php:頁面底部。 header.php:頁面頭部。 log_list.php:顯示日誌列表內容。 main.css:模板的css檔案。 module.php:模板公共代碼,包含側邊widgets、評論、引用、編輯等。 page.php:自定義的頁面內容的模板。 preview.jpg:在後台模板選擇界面顯示的模板預覽圖,300X225 jpg格式。 side.php:模板側邊欄檔案,如製作單欄模板則該檔案不是必須的。 t.php:顯示emlog系統自帶的微博(碎語)內容。

emlog模板總綱

emlog的模板一般包括如下檔案:

images資料夾:存放模板所需圖片。

echo_log.php:顯示日誌內容。

footer.php:頁面底部。

header.php:頁面頭部。

log_list.php:顯示日誌列表內容。

main.css:模板的css檔案。

module.php:模板公共代碼,包含側邊widgets、評論、引用、編輯等。

page.php:自定義的頁面內容的模板。

preview.jpg:在後台模板選擇界面顯示的模板預覽圖,300X225 jpg格式。

side.php:模板側邊欄檔案,如製作單欄模板則該檔案不是必須的。

t.php:顯示emlog系統自帶的微博(碎語)內容。

下面我們一個個分析檔案內容:

header.php

開頭注釋內容是模板信息,該信息顯示在模板選擇界面

Template Name:模板名稱

Description:模板介紹描述

Author:模板作者

Author Url:作者或模板發布的URL

Sidebar Amount:標記該模板有幾個側邊欄,一般為1,有些模板有兩個側邊欄則標記2。這樣可以在後台widgets里識別管理(具體可下載體驗官方收錄的模板G7)。

之後是具體代碼部分:

if(!defined('EMLOG_ROOT')) {exit('error!');}

該行代碼同樣存在於其它模板檔案中,為防止該檔案被直接執行。

require_once View::getView('module');

載入模板公共代碼,需要注意的是加粗部分與3.x有變化,模板升級的同學需要注意一下。

$blogtitle:標題

$site_key:關鍵字(4.0的關鍵字可以輸出日誌的標籤了)

$description:輸出部落格設定的摘要

BLOG_URL:部落格首頁的URL,輸出形如http://域名/blog/

TEMPLATE_URL:模板資料夾的URL,用於載入模板內的css、js及其他內容,輸出形如http://域名 /blog/content/templates/simue-tuso/

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;?> 輸出自定義頁面的連結

<?php doAction('navbar', '<li class="common">', '</li>'); ?> 導航掛載點加入,第2、3參數分別為包裹導航連結的開始和結束部分,可根據模板自定義。

<?php if(ROLE == 'admin' || ROLE == 'writer'): ?>......<?php endif; ?> 如管理員或作者登錄則顯示.......中的內容。

footer.php

Option::EMLOG_VERSION:獲得版本號。

$icp:獲得後台設定的ICP備案號。

<?php doAction('index_footer'); ?> 頁腳底部掛載點加入。

log_list.php

<?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');

?> 加入側邊欄及加入頁腳。

echo_log.php

該檔案功能函式與列表頁一致,但參數有區別,注意區分。

$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不同注意區分。

page.php

該檔案寫法與echo_log.php類似,不再重複。

t.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; ?> 輸出驗證碼。

side.php

側邊欄,主要負責根據後台widgets設定信息輸出側邊欄內容。建議該檔案內代碼保持不變。

doAction('diff_side'); //側邊欄掛載點。

module.php

模板公共代碼,包含側邊widgets、評論、引用、編輯等。

該檔案由若干函式組成,被部落格前台檔案調用,可在內自定義函式實現更多功能。

如在自定義函式內調用emlog快取時,假設讀取user快取信息,則形如:

global $CACHE;

$user_cache = $CACHE->readCache('user');

如需要運算元據庫,則形如:

$DB = MySql::getInstance();

$res = $DB->query($sql);

以上兩點與3.x不同,請注意區分。

最後附:前台模板部分掛載點一覽:

doAction('navbar', '<li class="common">', '</li>'); //頭部導航掛載點

doAction('index_footer'); //頁腳底部掛載點

doAction('index_loglist_top'); //首頁日誌列表頂部掛載點

doAction('log_related', $logData); //相關日誌掛載點

doAction('diff_side'); //側邊欄掛載點

emlog 模板安裝

emlog模板 emlog模板

各個部落格系統安裝更改主題模板的操作方法都是非常簡單的,通常的步驟都是下載模板壓縮檔、解壓出模板目錄、上傳模板檔案到部落格系統相關目錄位置,然後登入部落格後台進入已安裝模板界面,點擊相關選項按鈕進行切換就可以了。下面部落格吧詳細介紹下 Emlog 部落格系統安裝主題模板的操作步驟。

1. 把下載的emlog部落格主題壓縮檔解壓得到主題模板目錄。

2. 把解壓出來的目錄檔案上傳到content/templates/目錄下。

3. 然後部落格後台,點擊右上角的“換模板”選項進入已安裝模板界面。

4. 該頁面會列出剛上傳的主題模板的縮略圖,點擊該縮略圖表示把該主題設定為部落格當前主題。

emlog結構詳細介紹

header.php篇

<?php

/*

Template Name:默認模板

模板名稱

Description:默認模板,簡潔優雅 ……

模板簡介

Version:1.2

模板版本號

Author:emlog

模板作者名稱

Author Url:http://域名

模板作者連結地址

Sidebar Amount:1

邊欄數目(一般是0,1或者2。0代表是沒有邊欄即單欄模板,1代表1個邊欄即二欄模板,2代表2個邊欄即三欄模板)

ForEmlog:5.0.0

emlog程式版本號

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

模板檔案開頭的判斷語句。檢查是否是函式EMLOG_ROOT的絕對地址,否就顯示error。

require_once View::getView('module');

公共模組載入項,載入module,這裡面包含了模板必須要的函式。

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www點w3點org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

聲明檔案,聲明了文檔的根元素是 html,它在公共標識符被定義為 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中進行了定義。瀏覽器將明白如何尋找匹配此公共標識符的 DTD。如果找不到,瀏覽器將使用公共標識符後面的 URL 作為尋找 DTD 的位置。

<html xmlns="http:///www點w3點org<cite class="highlight" highlight="true" style="background-image: none; background-position: initial initial; background-repeat: initial initial; "></cite>/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

meta原標記,這裡標記了為UTF-8格式

<title><?php echo $site_title; ?></title>

頁面的title標記,這裡輸出的是部落格名稱。

<meta name="keywords" content="<?php echo $site_key; ?>" />

meta原標記,這裡標記的是關鍵字。輸出部落格後台設定的關鍵字。

<meta name="description" content="<?php echo $site_description; ?>" />

meta原標記,這裡標記的是網站簡介信息。這裡輸出的是部落格後台設定的站點描述。在日誌內容頁面的時候輸出的是日誌的摘要。

<meta name="generator" content="emlog" />

meta原標記,這裡標記的是系統名稱,這裡輸出的是emlog。

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<?php echo BLOG_URL; ?>xmlrpc.php?rsd" />

<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="<?php echo BLOG_URL; ?>wlwmanifest.xml" />

這兩個元素主要供遠程發布使用,比如你使用Windows Live Write等桌面部落格編輯器來發布文章。

<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo BLOG_URL; ?>rss.php" />

這裡是emlog部落格的RSS發布地址。

<link href="<?php echo TEMPLATE_URL; ?>main.css" rel="stylesheet" type="text/css" />

CSS載入連結,這裡載入的是main.css樣式檔案。該檔案存放在模板資料夾的根目錄下。

<script src="<?php echo BLOG_URL; ?>include/lib/js/common_tpl.js" type="text/javascript"></script>

JS檔案載入連結,這裡載入的是common_tpl.js檔案。該檔案存放於程式include/lib/js/目錄下,這個JS檔案主要用於鑲套評論。

<?php doAction('index_head'); ?>

頁面頭部外掛程式掛載鉤子。(主要用於外掛程式掛載一些CSS或者JS檔案)

</head>

heder頭部檔案到此結束,上面部分一般是不用修改。在移植模板或者製作模板的時候,樣式檔案是必須要修改載入的。如果有特效的話,也要在這裡載入一些JS檔案的。當然也可以在底部載入。

<body>

<div id="wrap">

<div id="header">

<h1><a href="<?php echo BLOG_URL; ?>"><?php echo $blogname; ?></a></h1>

站點名稱 站點連結

<h3><?php echo $bloginfo; ?></h3>

輸出部落格描述,輸出的是後台設定的部落格描述信息。

</div>

<div id="banner"><a href="<?php echo BLOG_URL; ?>"><img src="<?php echo BLOG_URL.Option::get('topimg'); ?>" height="134" width="960" /></a></div>

這裡是頁面頭部的banner圖片,這個只有在默認模板才有。不用理會,直接刪除就行。

<div id="nav"><?php blog_navi();?></div>

頁面頭部導航選單加函式。該函式位於module.php檔案,這個是emlog5.0新增加的與以往版本的區別。

log_list.php篇

<?php

/*

* 首頁日誌列表部分

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

注釋檔案頭,表明是日誌列表頁面。

模板檔案開頭的判斷語句。檢查是否是函式EMLOG_ROOT的絕對地址,否就顯示error。

<p id="content">

<p id="contentleft">

<?php doAction('index_loglist_top'); ?>

日誌列表頁的外掛程式鉤子,載入外掛程式所需要的檔案。如:em_ad外掛程式,RSS訂閱外掛程式等。。。

<?php foreach($logs as $value): ?>

日誌列表頁面列表循環開始。大體意思是設定變數$logs為$value。

<h2><?php topflg($value['top']); ?>

置頂日誌輸出函式,該函式位於module.php檔案。主要用於置頂日誌的顯示圖示,或者可以更改module.php檔案顯示【推薦】之類的效果。

<a href="<?php echo $value['log_url']; ?>"><?php echo $value['log_title']; ?></a>

帶超連結的日誌標題。

</h2>

<p class="date">作者:<?php blog_author($value['author']); ?>

作者名稱的輸出函式,該函式位於module.php檔案。

發布於:<?php echo gmdate('Y-n-j G:i l', $value['date']); ?>

日誌日期的輸出函式,該函式位於系統核心。一般不需要改動,如果想顯示不同樣式的日期格式,可以百度下PHP日期代碼。

<?php blog_sort($value['logid']); ?>

日誌分類的輸出函式,該函式位於module.php檔案

<?php editflg($value['logid'],$value['author']); ?>

日誌編輯函式,該函式位於module.php檔案。

</p>

<?php echo $value['log_description']; ?>

日誌摘要輸出變數,該變數位於系統核心。

<p class="tag"><?php blog_tag($value['logid']); ?>

日誌標籤輸出函式,該函式位於module.php檔案

</p>

<p class="count">

<a href="<?php echo $value['log_url']; ?>#comments">評論(<?php echo $value['comnum']; ?>)</a>

帶評論地址超連結的評論數量。點擊該地址可以到該日誌的評論列表。

<a href="<?php echo $value['log_url']; ?>#tb">引用(<?php echo $value['tbcount']; ?>)</a>

帶引用超連結地址的引用數量。點擊該地址可以到引用通告地址顯示頁面。

<a href="<?php echo $value['log_url']; ?>">瀏覽(<?php echo $value['views']; ?>)</a>

帶日誌超連結的瀏覽數量。點擊該地址可以到該日誌頁面。

</p>

<p style="clear:both;"></p>

<?php endforeach; ?>

日誌列表頁面的日誌列表循環結束。

<p id="pagenavi">

<?php echo $page_url;?>

日誌列表分頁函式,該函式位於系統核心。

</p>

</p><!-- end #contentleft-->

<?php

include View::getView('side');

載入side.php檔案,即載入邊欄。(如果是單欄模板不用載入該檔案)

include View::getView('footer');

載入footer.php檔案,即載入頁面底部。(一般顯示的是著作權,統計代碼之類,放在通用底部的代碼。)

?>

echo_log.php篇

<?php

/*

* 閱讀日誌頁面

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

注釋檔案頭,表明是閱讀日誌頁面。

模板檔案開頭的判斷語句。檢查是否是函式EMLOG_ROOT的絕對地址,否就顯示error。

<div id="content">

<div id="contentleft">

<h2><?php topflg($top); ?>

置頂日誌輸出函式,該函式位於module.php檔案。主要用於置頂日誌的顯示圖示,或者可以更改module.php檔案顯示【推薦】之類的效果。(和list_log.php的函式為同一個函式。)

<?php echo $log_title; ?>

日誌標題的輸出變數。該變數位於系統核心。

</h2>

<p class="date">作者:

<?php blog_author($author); ?>

作者名稱的輸出函式,該函式位於module.php檔案。

發布於:<?php echo gmdate('Y-n-j G:i l', $date); ?>

日誌日期的輸出函式,該函式位於系統核心。一般不需要改動,如果想顯示不同樣式的日期格式,可以百度下PHP日期代碼。

<?php blog_sort($logid); ?>

日誌分類的輸出函式,該函式位於module.php檔案

<?php editflg($logid,$author); ?>

日誌編輯函式,該函式位於module.php檔案。

</p>

<?php echo $log_content; ?>

日誌文章內容的輸出變數。該變數位於系統核心。

<p class="tag">

<?php blog_tag($logid); ?>

日誌標籤的輸出函式。該函式位於module.php檔案。

</p>

<?php doAction('log_related', $logData); ?>

日誌閱讀內容頁面的外掛程式鉤子。主要載入外掛程式檔案。如:相關日誌外掛程式,心情頂踩外掛程式,日誌頂踩外掛程式之類。

<div class="nextlog">

<?php neighbor_log($neighborLog); ?>

上一篇 下一篇列表輸出函式,該函式位於module.php檔案。

</div>

<?php blog_trackback($tb, $tb_url, $allow_tb); ?>

引用通告地址顯示函式,該函式位於module.php檔案。(注意:請百度下引用通告的意思。這裡只要顯示引用通告的地址就可以了,不用做超連結的。)

<?php blog_comments($comments); ?>

評論列表輸出函式,該函式位於module.php檔案,後期舞城會詳細介紹。

<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?>

評論表單輸出函式,該函式位於module.php檔案,後期舞城會詳細介紹。

<div style="clear:both;"></div>

</div><!--end #contentleft-->

<?php

include View::getView('side');

載入side.php檔案,即載入邊欄。(如果是單欄模板不用載入該檔案)

include View::getView('footer');

載入footer.php檔案,即載入頁面底部。(一般顯示的是著作權,統計代碼之類,放在通用底部的代碼。)

?>

page.php篇

<?php

/*

* 自建頁面模板

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

<div id="content">

<div id="contentleft">

<h2><?php echo $log_title; ?>

自建頁面的標題輸出,該變數位於系統核心。

</h2>

<?php echo $log_content; ?>

自建頁面的內容輸出,該變數位於系統核心。

<?php blog_comments($comments); ?>

評論列表

<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?>

評論表單

<div style="clear:both;"></div>

</div><!--end #contentleft-->

<?php

include View::getView('side');

side.php檔案載入。即載入邊欄。

include View::getView('footer');

footer.php檔案載入,即載入通用底部。

?>

side.php 篇

<?php

/*

* 側邊欄

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

<ul id="sidebar">

從這裡開始

<?php

$widgets = !empty(

$options_cache['widgets1']) ? unserialize(

$options_cache['widgets1']) : array();

doAction('diff_side');

邊欄的外掛程式鉤子,主要用於載入外掛程式的檔案。

foreach ($widgets as $val)

{

$widget_title = @unserialize($options_cache['widget_title']);

$custom_widget = @unserialize($options_cache['custom_widget']);

if(strpos($val, 'custom_wg_') === 0)

{

$callback = 'widget_custom_text';

if(function_exists($callback))

{

call_user_func(

$callback, htmlspecialchars(

$custom_widget[$val]['title']),

$custom_widget[$val]['content']);

}

}else{

$callback = 'widget_'.$val;

if(function_exists($callback))

{

preg_match("/^.*\s\((.*)\)/", $widget_title[$val], $matchs);

$wgTitle = isset($matchs[1]) ? $matchs[1] : $widget_title[$val];

call_user_func($callback, htmlspecialchars($wgTitle));

}

}

}

?>

到這裡以上的所有代碼都不用修改,這些主要是用於載入邊欄組件。其函式位於module.php檔案。

<div class="rss">

<a href="<?php echo BLOG_URL; ?>rss.php" title="RSS訂閱"><img src="<?php echo TEMPLATE_URL; ?>images/rss.gif" alt="訂閱Rss"/></a>

含有RSS訂閱連結的圖片超連結。

</div>

</ul><!--end #siderbar-->

side.php檔案基本上是不用動的,如果是單欄模板的話,這個頁面就可以刪除掉。

footer.php 篇

<?php

/*

* 底部信息

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

</div><!--end #content-->

<div style="clear:both;"></div>

<div id="footerbar">

Powered by <a href="http://emlog官網網址" title="emlog <?php echo Option::EMLOG_VERSION;?>">emlog</a>

emlog程式官網超連結,title顯示的是emlog版本號。請支持國產開源的emlog程式,保留他們的著作權。

<a href="http://備案信息網網址" target="_blank"><?php echo $icp; ?></a>

帶有超連結的備案號。備案號是在後台設定的。

<?php echo $footer_info; ?>

頁面底部信息輸出變數,可以在後台設定。可以添加統計代碼等信息。

<?php doAction('index_footer'); ?>

</div><!--end #footerbar-->

</div><!--end #wrap-->

</body>

</html>

module.php上篇

<?php

/*

* 側邊欄組件、頁面模組

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

<?php

//widget:blogger

邊欄blogger組件

function widget_blogger($title){

global $CACHE;

$user_cache = $CACHE->readCache('user');

$name = $user_cache[1]['mail'] != '' ? "<a href=\"mailto:".$user_cache[1]['mail']."\">"

.$user_cache[1]['name']."</a>" : $user_cache[1]['name'];?>

讀取blogger快取。

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="bloggerinfo">

<div id="bloggerinfoimg">

<?php if (!empty($user_cache[1]['photo']['src'])): ?>

如果有用戶圖片,就顯示用戶圖片。

<img src="<?php echo BLOG_URL.$user_cache[1]['photo']['src']; ?>"

width="<?php echo $user_cache[1]['photo']['width']; ?>"

height="<?php echo $user_cache[1]['photo']['height']; ?>" alt="blogger" />

顯示用戶圖片

<?php endif;?>

</div>

<p><b>

<?php echo $name; ?>

輸出用戶名稱

</b>

<?php echo $user_cache[1]['des']; ?>

輸出用戶的個人描述

</p>

</ul>

</li>

<?php }?>

<?php

//widget:日曆

邊欄日曆組件

function widget_calendar($title){ ?>

<li>

<h3><span><?php echo $title; ?></span></h3>

<div id="calendar">

</div>

這個id="calendar"千萬別刪除喔。是日曆的顯示樣式。

<script>sendinfo('<?php echo Calendar::url(); ?>','calendar');</script>

有文章的日曆項鍊接。

</li>

<?php }?>

<?php

//widget:標籤

邊欄標籤組件

function widget_tag($title){

global $CACHE;

$tag_cache = $CACHE->readCache('tags');?>

讀取標籤快取。

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="blogtags">

<?php foreach($tag_cache as $value): ?>

標籤循環開始

<span style="font-size:<?php echo $value['fontsize']; ?>pt; line-height:30px;">

標籤字型大小樣式,根據該標籤文章數量來決定大小。

<a href="<?php echo Url::tag($value['tagurl']); ?>"

title="<?php echo $value['usenum']; ?> 篇日誌"><?php echo $value['tagname']; ?></a>

帶超連結的標籤。

</span>

<?php endforeach; ?>

標籤循環結束

</ul>

</li>

<?php }?>

<?php

//widget:分類

邊欄 分類 組件

function widget_sort($title){

global $CACHE;

$sort_cache = $CACHE->readCache('sort'); ?>

讀取分類快取

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="blogsort">

<?php foreach($sort_cache as $value): ?>

分類循環開始

<li>

<a href="<?php echo Url::sort($value['sid']); ?>">

<?php echo $value['sortname']; ?>(<?php echo $value['lognum'] ?>)

</a>

帶分類超連結的分類名稱+該分類日誌數量

<a href="<?php echo BLOG_URL; ?>rss.php?sort=<?php echo $value['sid']; ?>">

<img src="<?php echo TEMPLATE_URL; ?>images/rss.png" alt="訂閱該分類"/>

</a>

帶分類訂閱連結的RSS圖片(位於該分類的名稱後面)

</li>

<?php endforeach; ?>

分類循環結束

</ul>

</li>

<?php }?>

<?php

//widget:最新碎語

邊欄 最新碎語 組件

function widget_twitter($title){

global $CACHE;

$newtws_cache = $CACHE->readCache('newtw');

$istwitter = Option::get('istwitter');

?>

讀取最新碎語快取

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="twitter">

<?php foreach($newtws_cache as $value): ?>

最新碎語循環開始

<?php $img = empty($value['img']) ? "" :

'<a title="查看圖片" class="t_img" href="'.BLOG_URL.str_replace('thum-', '', $value['img']).'" target="_blank"></a>';?>

這個是emlog5.0新增加的功能,碎語圖片功能。設定變數$img的圖片地址。

<li><?php echo $value['t']; ?><?php echo $img;?><p><?php echo smartDate($value['date']); ?></p>

輸出碎語(文字+圖片) 發布碎語的時間。

</li>

<?php endforeach; ?>

最新碎語循環結束。

<?php if ($istwitter == 'y') :?>

<p><a href="<?php echo BLOG_URL . 't/'; ?>">更多»</a></p>

<?php endif;?>

判斷是否開啟碎語,開啟的話顯示帶碎語頁面超連結的更多字樣。

</ul>

</li>

<?php }?>

<?php

//widget:最新評論

邊欄 最新評論 組件

function widget_newcomm($title){

global $CACHE;

$com_cache = $CACHE->readCache('comment');

?>

讀取最新評論快取

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="newcomment">

<?php

foreach($com_cache as $value):

最新評論循環開始

$url = Url::comment($value['gid'], $value['page'], $value['cid']);

設定變數$url為評論的連結地址

?>

<li id="comment"><?php echo $value['name']; ?>

輸出評論者的名稱

<br />

<a href="<?php echo $url; ?>"><?php echo $value['content']; ?></a>

帶評論超連結的評論內容

</li>

<?php endforeach; ?>

最新評論循環結束

</ul>

</li>

<?php }?>

<?php

//widget:最新日誌

邊欄 最新日誌 組件

function widget_newlog($title){

global $CACHE;

$newLogs_cache = $CACHE->readCache('newlog');

?>

讀取最新日誌快取。

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="newlog">

<?php foreach($newLogs_cache as $value): ?>

最新日誌循環開始

<li>

<a href="<?php echo Url::log($value['gid']); ?>"><?php echo $value['title']; ?></a>

帶日誌超連結的日誌標題

</li>

<?php endforeach; ?>

最新日誌循環結束

</ul>

</li>

<?php }?>

<?php

//widget:熱門日誌

邊欄 熱門日誌 組件

function widget_hotlog($title){

$index_hotlognum = Option::get('index_hotlognum');

$Log_Model = new Log_Model();

$randLogs = $Log_Model->getHotLog($index_hotlognum);?>

讀取熱門日誌設定

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="hotlog">

<?php foreach($randLogs as $value): ?>

熱門日誌循環開始

<li>

<a href="<?php echo Url::log($value['gid']); ?>"><?php echo $value['title']; ?></a>

帶日誌超連結的日誌標題

</li>

<?php endforeach; ?>

熱門日誌循環結束

</ul>

</li>

<?php }?>

<?php

//widget:隨機日誌

邊欄 隨機日誌 組件

function widget_random_log($title){

$index_randlognum = Option::get('index_randlognum');

$Log_Model = new Log_Model();

$randLogs = $Log_Model->getRandLog($index_randlognum);?>

讀取隨機日誌設定

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="randlog">

<?php foreach($randLogs as $value): ?>

隨機日誌循環開始

<li>

<a href="<?php echo Url::log($value['gid']); ?>"><?php echo $value['title']; ?></a>

帶日誌超連結的日誌標題

</li>

<?php endforeach; ?>

隨機日誌循環結束

</ul>

</li>

<?php }?>

<?php

//widget:搜尋

邊欄 搜尋 組件

function widget_search($title){ ?>

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="logserch">

<form name="keyform" method="get" action="<?php echo BLOG_URL; ?>index.php">

<input name="keyword" class="search" type="text" />

</form>

from內的name method和action不要更改,搜尋功能就不會出錯。

</ul>

</li>

<?php } ?>

<?php

//widget:歸檔

邊欄 歸檔 組件

function widget_archive($title){

global $CACHE;

$record_cache = $CACHE->readCache('record');

?>

讀取歸檔快取

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="record">

<?php foreach($record_cache as $value): ?>

歸檔循環開始

<li>

<a href="<?php echo Url::record($value['date']); ?>">

<?php echo $value['record']; ?>(<?php echo $value['lognum']; ?>)

</a>

帶歸檔時間超連結的歸檔時間

</li>

<?php endforeach; ?>

歸檔循環結束

</ul>

</li>

<?php } ?>

<?php

//widget:自定義組件

邊欄 自定義 組件

function widget_custom_text($title, $content){ ?>

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul>

<?php echo $content; ?>

輸出用戶設定的自定義代碼

</ul>

</li>

<?php } ?>

<?php

//widget:連結

邊欄 連結 組件

function widget_link($title){

global $CACHE;

$link_cache = $CACHE->readCache('link');

?>

讀取連結快取

<li>

<h3><span><?php echo $title; ?></span></h3>

<ul id="link">

<?php foreach($link_cache as $value): ?>

連結循環開始

<li>

<a href="<?php echo $value['url']; ?>" title="<?php echo $value['des']; ?>" target="_blank">

<?php echo $value['link']; ?>

</a>

帶連結站點超連結的連結名稱

</li>

<?php endforeach; ?>

連結循環結束

</ul>

</li>

<?php }?>

module.php中篇

<?php

//blog:導航

頁面頂部的導航函式

function blog_navi(){

global $CACHE;

$navi_cache = $CACHE->readCache('navi');

?>

讀取導航快取

<ul>

<?php

foreach($navi_cache as $value):

導航循環開始

if($value['url'] == 'admin' && (ROLE == 'admin' || ROLE == 'writer')):

?>

<li class="common"><a href="<?php echo BLOG_URL; ?>admin/write_log.php">寫日誌</a></li>

<li class="common"><a href="<?php echo BLOG_URL; ?>admin/">管理站點</a></li>

<li class="common"><a href="<?php echo BLOG_URL; ?>admin/?action=logout">退出</a></li>

<?php

continue;

endif;

判斷是否是管理員登入,是就顯示管理員相關功能連結

$newtab = $value['newtab'] == 'y' ? 'target="_blank"' : '';

$value['url'] = $value['isdefault'] == 'y' ? BLOG_URL . $value['url'] : trim($value['url'], '/');

$current_tab = (BLOG_URL . trim(Dispatcher::setPath(), '/') == $value['url']) ? 'current' : 'common';

?>

設定相關變數,不需要改動。$newtab (是否是新視窗打開,後台設定) $value['url'] (導航連結) $current_tab(導航的class類,當前頁面的類為current,非當前頁的類為common)

<li class="<?php echo $current_tab;?>"><a href="<?php echo $value['url']; ?>" <?php echo $newtab;?>><?php echo $value['naviname']; ?></a></li>

輸出帶導航地址超連結的導航名稱。

<?php endforeach; ?>

導航循環結束。

</ul>

<?php }?>

<?php

//blog:置頂

function topflg($istop){

$topflg = $istop == 'y' ? "<img src=\"".TEMPLATE_URL."/images/import.gif\" title=\"置頂日誌\" /> " : '';

echo $topflg;

}

?>

置頂日誌函式,主要用於log_list.php echo_log.php檔案。

<?php

//blog:編輯

function editflg($logid,$author){

$editflg = ROLE == 'admin' || $author == UID ? '<a href="'.BLOG_URL.'admin/write_log.php?action=edit&gid=".$logid."">編輯</a>' : '';

echo $editflg;

}

?>

日誌編輯函式,主要用於echo_log.php page.php檔案,也可以用在log_list.php檔案。

<?php

//blog:分類

function blog_sort($blogid){

global $CACHE;

$log_cache_sort = $CACHE->readCache('logsort');

?>

<?php if(!empty($log_cache_sort[$blogid])): ?>

分類:<a href="<?php echo Url::sort($log_cache_sort[$blogid]['id']); ?>"><?php echo $log_cache_sort[$blogid]['name'];?></a>

<?php endif;?>

<?php }?>

日誌分類函式,主要用於echo_log.php檔案,也可以用在log_list.php檔案。

<?php

//blog:日誌標籤

function blog_tag($blogid){

global $CACHE;

$log_cache_tags = $CACHE->readCache('logtags');

if (!empty($log_cache_tags[$blogid])){

$tag = '標籤:';

foreach ($log_cache_tags[$blogid] as $value){

$tag .= " <a href=\"".Url::tag($value['tagurl'])."\">".$value['tagname'].'</a>';

}

echo $tag;

}

}

?>

日誌標籤函式,主要用於echo_log.php檔案。

<?php

//blog:日誌作者

function blog_author($uid){

global $CACHE;

$user_cache = $CACHE->readCache('user');

$author = $user_cache[$uid]['name'];

$mail = $user_cache[$uid]['mail'];

$des = $user_cache[$uid]['des'];

$title = !empty($mail) || !empty($des) ? "title=\"$des $mail\"" : '';

echo '<a href="'.Url::author($uid)."\" $title>$author</a>";

}

?>

日誌作者函式,主要用於echo_log.php檔案。

<?php

//blog:相鄰日誌

function neighbor_log($neighborLog){

extract($neighborLog);?>

<?php if($prevLog):?>

« <a href="<?php echo Url::log($prevLog['gid']) ?>"><?php echo $prevLog['title'];?></a>

<?php endif;?>

<?php if($nextLog && $prevLog):?>

|

<?php endif;?>

<?php if($nextLog):?>

<a href="<?php echo Url::log($nextLog['gid']) ?>"><?php echo $nextLog['title'];?></a>»

<?php endif;?>

<?php }?>

相鄰日誌函式(即上一篇 下一篇),主要用於echo_log.php檔案。

<?php

//blog:引用通告

function blog_trackback($tb, $tb_url, $allow_tb){

if($allow_tb == 'y' && Option::get('istrackback') == 'y'):?>

<div id="trackback_address">

<p>引用地址: <input type="text" style="width:350px" class="input" value="<?php echo $tb_url; ?>">

<a name="tb"></a></p>

</div>

<?php endif; ?>

<?php foreach($tb as $key=>$value):?>

<ul id="trackback">

<li><a href="<?php echo $value['url'];?>" target="_blank"><?php echo $value['title'];?></a></li>

<li>BLOG: <?php echo $value['blog_name'];?></li><li><?php echo $value['date'];?></li>

</ul>

<?php endforeach; ?>

<?php }?>

module.php下篇

<?php

//blog:評論列表

function blog_comments($comments){

extract($comments);

if($commentStacks): ?>

<a name="comments"></a>

<p class="comment-header"><b>評論:</b></p>

<?php endif; ?>

<?php

$isGravatar = Option::get('isgravatar');

foreach($commentStacks as $cid):

評論列表循環開始(注意!)

$comment = $comments[$cid];

$comment['poster'] = $comment['url'] ? '<a href="'.$comment['url'].'" target="_blank">'.$comment['poster'].'</a>' :$comment['poster'];

?>

以上為Gravatar頭像,地址,內容的相關變數設定,一般無需更改,除了紅色字型部分。

<div class="comment" id="comment-<?php echo $comment['cid']; ?>">

該ID為評論列表的編號ID

<a name="<?php echo $comment['cid']; ?>"></a>

name為評論列表的編號

<?php if($isGravatar == 'y'): ?><div class="avatar"><img src="<?php echo getGravatar($comment['mail']); ?>" /></div><?php endif; ?>

判斷Gravatar頭像是否開啟,開啟就顯示Gravatar頭像。

<div class="comment-info">

<b>

<?php echo $comment['poster']; ?>

評論人名稱

</b><br /><span class="comment-time">

<?php echo $comment['date']; ?>

評論時間

</span>

<div class="comment-content">

<?php echo $comment['content']; ?>

評論內容

</div>

<div class="comment-reply">

<a href="#comment-<?php echo $comment['cid']; ?>" onclick="commentReply(<?phpecho $comment['cid']; ?>,this)">回復</a>

回復該評論的連結

</div>

</div>

<?php blog_comments_children($comments, $comment['children']); ?>

子評論列表函式。

</div>

<?php endforeach; ?>

評論列表循環結束(注意)

<div id="pagenavi">

<?php echo $commentPageUrl;?>

評論分頁輸出變數

</div>

<?php }?>

<?php

//blog:子評論列表

function blog_comments_children($comments, $children){

$isGravatar = Option::get('isgravatar');

foreach($children as $child):

子評論列表循環開始

$comment = $comments[$child];

$comment['poster'] = $comment['url'] ? '<a href="'.$comment['url'].'" target="_blank">'.$comment['poster'].'</a>' :$comment['poster'];

?>

以上為Gravatar頭像,地址,內容的相關變數設定,一般無需更改

<div class="comment comment-children" id="comment-<?php echo $comment['cid']; ?>">

該ID為評論列表的編號ID

<a name="<?php echo $comment['cid']; ?>"></a>

name為評論列表的編號

<?php if($isGravatar == 'y'): ?><div class="avatar"><img src="<?php echo getGravatar($comment['mail']); ?>" /></div><?php endif; ?>

判斷Gravatar頭像是否開啟,開啟就顯示Gravatar頭像。

<div class="comment-info">

<b>

<?php echo $comment['poster']; ?>

評論人名稱

</b><br /><span class="comment-time">

<?php echo $comment['date']; ?>

評論時間

</span>

<div class="comment-content">

<?php echo $comment['content']; ?>

評論內容

</div>

<?php if($comment['level'] < 4): ?>

鑲套級數,這裡為4級鑲套。

<div class="comment-reply">

<a href="#comment-<?php echo $comment['cid'];?>" onclick="commentReply(<?php echo $comment['cid']; ?>,this)">回復</a>

回復該評論的連結

</div><?php endif; ?>

鑲套級數判斷結束

</div>

<?php blog_comments_children($comments, $comment['children']);?>

子評論列表函式。

</div>

<?php endforeach; ?>

子評論列表循環結束。

<?php }?>

<?php

//blog:發表評論表單

function blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark){

if($allow_remark == 'y'): ?>

<div id="comment-place">

<div class="comment-post" id="comment-post">

<div class="cancel-reply" id="cancel-reply" style="display:none"><a href="javascript:void(0);" onclick="cancelReply()">取消回復</a></div>

<p class="comment-header"><b>發表評論:</b><a name="respond"></a></p>

<form method="post" name="commentform" action="<?php echo BLOG_URL; ?>index.php?action=addcom" id="commentform">

<input type="hidden" name="gid" value="<?php echo $logid; ?>" />

<?php if(ROLE == 'visitor'): ?>

<p>

<input type="text" name="comname" maxlength="49" value="<?php echo $ckname; ?>" size="22" tabindex="1">

<label for="author"><small>暱稱</small></label>

</p>

<p>

<input type="text" name="commail" maxlength="128" value="<?php echo $ckmail; ?>" size="22" tabindex="2">

<label for="email"><small>郵件地址 (選填)</small></label>

</p>

<p>

<input type="text" name="comurl" maxlength="128" value="<?php echo $ckurl; ?>" size="22" tabindex="3">

<label for="url"><small>個人主頁 (選填)</small></label>

</p>

<?php endif; ?>

<p><textarea name="comment" id="comment" rows="10" tabindex="4"></textarea></p>

<p><?php echo $verifyCode; ?> <input type="submit" id="comment_submit" value="發表評論" tabindex="6" /></p>

<input type="hidden" name="pid" id="comment-pid" value="0" size="22" tabindex="1"/>

</form>

</div>

</div>

<?php endif; ?>

<?php }?>

評論表單裡面其實沒什麼好介紹,主要是紅色標出的name id之類的別弄錯,基本上是沒問題的。還有就是鑲套評論所使用到的ID,要保留。如果非要更改也要在common_tpl.js檔案更改。

404.php篇

404錯誤頁面,這個是emlog5.0新增加的頁面。可能是因為官方論壇有網友提到無法自定義404錯誤,或者更有說emlog根本就沒有404頁面。所以emlog官方索性把404錯誤頁面放到模板中來,讓用戶自己定義。

這個其實是很簡單的頁面,主要是由CSS樣式與html語言組成。

<?php

/*

* 自定義404頁面

*/

if(!defined('EMLOG_ROOT')) {exit('error!');}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:///www點w3點org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http:///www點w3點org<cite class="highlight" highlight="true" style="background-image: none; background-position: initial initial; background-repeat: initial initial; "></cite>/1999/xhtml" lang="zh-CN">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>錯誤提示-頁面未找到</title>

錯誤頁面標題

<style type="text/css">

<!--

body {

background-color:#F7F7F7;

font-family: Arial;

font-size: 12px;

line-height:150%;

}

.main {

background-color:#FFFFFF;

font-size: 12px;

color: #666666;

width:650px;

margin:60px auto 0px;

border-radius: 10px;

padding:30px 10px;

list-style:none;

border:#DFDFDF 1px solid;

}

.main p {

line-height: 18px;

margin: 5px 20px;

}

-->

</style>

CSS樣式

</head>

<body>

<div class="main">

<p>抱歉,你所請求的頁面不存在!</p>

<p><a href="javascript:history.back(-1);">«點擊返回</a></p>

404錯誤頁面提示信息

</div>

</body>

</html>

相關詞條

相關搜尋

熱門詞條

聯絡我們