emlog模板结构说明
header.php篇
<?php
/*
Template Name:默认模板
模板名称
Description:默认模板,简洁优雅 ……
模板简介
Version:1.2
模板版本号
Author:emlog
模板作者名称
Author Url:http://www.emlog.net
模板作者链接地址
Sidebar Amount:1
边栏数目(一般是0,1或者2。0代表是没有边栏即单栏模板,1代表1个边栏即二栏模板,2代表2个边栏即三栏模板)
ForEmlog:5.0.0
emlog程序版本号
*/
if(!defined('em_ROOT')) {exit('error!');}
模板文件开头的判断语句。检查是否是函数em_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/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>
<p id="wrap">
<p id="header">
<h1><a href="<?php echo BLOG_URL; ?>"><?php echo $blogname; ?></a></h1>
站点名称 站点链接
<h3><?php echo $bloginfo; ?></h3>
输出博客描述,输出的是后台设置的博客描述信息。
</p>
<p id="banner"><a href="<?php echo BLOG_URL; ?>"><img src="<?php echo BLOG_URL.Option::get('topimg'); ?>" height="134" width="960" /></a></p>
这里是页面头部的banner图片,这个只有在默认模板才有。不用理会,直接删除就行。
<p id="nav"><?php blog_navi();?></p>
页面头部导航菜单加函数。该函数位于module.php文件,这个是emlog5.0新增加的与以往版本的区别。
log_list.php篇
<?php/*
* 首页日志列表部分
*/
if(!defined('em_ROOT')) {exit('error!');}
?>
注释文件头,表明是日志列表页面。
模板文件开头的判断语句。检查是否是函数em_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('em_ROOT')) {exit('error!');}
?>
注释文件头,表明是阅读日志页面。
模板文件开头的判断语句。检查是否是函数em_ROOT的绝对地址,否就显示error。
<p id="content">
<p 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); ?>
日志阅读内容页面的插件钩子。主要加载插件文件。如:相关日志插件,心情顶踩插件,日志顶踩插件之类。
<p class="nextlog">
<?php neighbor_log($neighborLog); ?>
上一篇 下一篇列表输出函数,该函数位于module.php文件。
</p>
<?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文件,后期舞城会详细介绍。
<p style="clear:both;"></p>
</p><!--end #contentleft-->
<?php
include View::getView('side');
加载side.php文件,即加载边栏。(如果是单栏模板不用加载该文件)
include View::getView('footer');
加载footer.php文件,即加载页面底部。(一般显示的是版权,统计代码之类,放在通用底部的代码。)
?>
page.php篇
<?php
/*
* 自建页面模板
*/
if(!defined('em_ROOT')) {exit('error!');}
?>
<p id="content">
<p 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); ?>
评论表单
<p style="clear:both;"></p>
</p><!--end #contentleft-->
<?php
include View::getView('side');
side.php文件加载。即加载边栏。
include View::getView('footer');
footer.php文件加载,即加载通用底部。
?>
side.php&footer.php 篇
side.php
<?php
/*
* 侧边栏
*/
if(!defined('em_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文件。
<p 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订阅链接的图片超链接。
</p>
</ul><!--end #siderbar-->
side.php文件基本上是不用动的,如果是单栏模板的话,这个页面就可以删除掉。
下面是footer.php文件
<?php
/*
* 底部信息
*/
if(!defined('em_ROOT')) {exit('error!');}
?>
</p><!--end #content-->
<p style="clear:both;"></p>
<p id="footerbar">
Powered by <a href="http://www.emlog.net" title="emlog <?php echo Option::em_VERSION;?>">emlog</a>
emlog程序官网超链接,title显示的是emlog版本号。请支持国产开源的emlog程序,保留他们的版权。
<a href="http://www.miibeian.gov.cn" target="_blank"><?php echo $icp; ?></a>
带有超链接的备案号。备案号是在后台设置的。
<?php echo $footer_info; ?>
页面底部信息输出变量,可以在后台设置。可以添加统计代码等信息。
<?php doAction('index_footer'); ?>
</p><!--end #footerbar-->
</p><!--end #wrap-->
</body>
</html>
<?php
下篇
module.php文件中比较重要的评论列表与表单的函数。因为在4.0版本开始emlog引入了镶套评论的效果,所以评论列表比以前的也稍微复杂了点。如果这里更改了相关的class类与ID的话,也要在common_tpl.js文件更改相关ID。(一般建议不要更改ID,不给ID设置相关CSS属性就没问题,不会产生页面变形问题。)
module.php篇
/*
* 侧边栏组件、页面模块
*/
if(!defined('em_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">
<p 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;?>
</p>
<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>
<p id="calendar">
</p>
这个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 }?>
中篇
<?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'):?>
<p id="trackback_address">
<p>引用地址: <input type="text" style="width:350px" class="input" value="<?php echo $tb_url; ?>">
<a name="tb"></a></p>
</p>
<?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 }?>
引用通告地址函数,主要用于echo_log.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头像,地址,内容的相关变量设置,一般无需更改,除了红色字体部分。
<p class="comment" id="comment-<?php echo $comment['cid']; ?>">
该ID为评论列表的编号ID
<a name="<?php echo $comment['cid']; ?>"></a>
name为评论列表的编号
<?php if($isGravatar == 'y'): ?><p class="avatar"><img src="<?php echo getGravatar($comment['mail']); ?>" /></p><?php endif; ?>
判断Gravatar头像是否开启,开启就显示Gravatar头像。
<p class="comment-info">
<b>
<?php echo $comment['poster']; ?>
评论人名称
</b><br /><span class="comment-time">
<?php echo $comment['date']; ?>
评论时间
</span>
<p class="comment-content">
<?php echo $comment['content']; ?>
评论内容
</p>
<p class="comment-reply">
<a href="#comment-<?php echo $comment['cid']; ?>" onclick="commentReply(<?phpecho $comment['cid']; ?>,this)">回复</a>
回复该评论的链接
</p>
</p>
<?php blog_comments_children($comments, $comment['children']); ?>
子评论列表函数。
</p>
<?php endforeach; ?>
评论列表循环结束(注意)
<p id="pagenavi">
<?php echo $commentPageUrl;?>
评论分页输出变量
</p>
<?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头像,地址,内容的相关变量设置,一般无需更改
<p class="comment comment-children" id="comment-<?php echo $comment['cid']; ?>">
该ID为评论列表的编号ID
<a name="<?php echo $comment['cid']; ?>"></a>
name为评论列表的编号
<?php if($isGravatar == 'y'): ?><p class="avatar"><img src="<?php echo getGravatar($comment['mail']); ?>" /></p><?php endif; ?>
判断Gravatar头像是否开启,开启就显示Gravatar头像。
<p class="comment-info">
<b>
<?php echo $comment['poster']; ?>
评论人名称
</b><br /><span class="comment-time">
<?php echo $comment['date']; ?>
评论时间
</span>
<p class="comment-content">
<?php echo $comment['content']; ?>
评论内容
</p>
<?php if($comment['level'] < 4): ?>
镶套级数,这里为4级镶套。
<p class="comment-reply">
<a href="#comment-<?php echo $comment['cid'];?>" onclick="commentReply(<?php echo $comment['cid']; ?>,this)">回复</a>
回复该评论的链接
</p><?php endif; ?>
镶套级数判断结束
</p>
<?php blog_comments_children($comments, $comment['children']);?>
子评论列表函数。
</p>
<?php endforeach; ?>
子评论列表循环结束。
<?php }?>
<?php
//blog:发表评论表单
function blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark){
if($allow_remark == 'y'): ?>
<p id="comment-place">
<p class="comment-post" id="comment-post">
<p class="cancel-reply" id="cancel-reply" style="display:none"><a href="javascript:void(0);" onclick="cancelReply()">取消回复</a></p>
<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>
</p>
</p>
<?php endif; ?>
<?php }?>
评论表单里面其实没什么好介绍,主要是红色标出的name id之类的别弄错,基本上是没问题的。还有就是镶套评论所使用到的ID,要保留。如果非要更改也要在common_tpl.js文件更改。不懂就留言吧。
评论
发表评论