杨小杰博客提供免费教程下载和网站搭建技术教程,主要分享和发布网站源码,致力创造一个高质量网络资源教程的分享平台

EMLOG详细目录结构文件用途说明

Young小杰2018-1-15 18:18网站搭建 (1)827已收录小标签: emlog

一般来说,一个模板都会包含以下几个部分:

images文件夹:存放模板所需图片。
echo_log.php:显示日志内容。
footer.php:页面底部。
header.php:页面头部。
log_list.php:显示日志列表内容。
main.css:模板的css文件。
module.php:模板公共代码,包含侧边widgets、评论、引用、编辑等,该文件是模板最核心的模块。
page.php:自定义的页面内容的模板。
preview.jpg:在后台模板选择界面显示的模板预览图,300×225 jpg格式。
side.php:模板侧边栏文件,如制作单栏模板则该文件不是必须的。
t.php:显示emlog系统自带的微博(碎语)内容。
404.php:自定义404页面未找到时的报错页面
在一般的emlog模板开发中,以上提及的部分中echo_log.php、log_list.php、module.php、page.php、t.php、header.php以及preview.jpg是不可或缺的,一旦缺省,模板将无法运行。此外的side.php、footer.php、main.css、images文件夹等,只需要对模板代码做小部分更改,那么它们都是可以改名、移动、甚至删除的。


公共代码分析
通过预览整个模板中的各个文件,你会发现以下代码同时存在于多个文件中,这些代码分别有以下用途: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.phpfooter.php的代码到当前文件的当前位置。View是emlog的模板视图控制器,View::getView('文件名','文件后缀')将返回当前模板安装路径下对应的文件。getView函数的第二个参数为缺省参数,在不传入值的情况下,将默认作为.php文件后缀返回文件路径。

$curpage:当前页面表示,常用判断tag如下:
$curpage== CURPAGE_HOME:首页
$curpage == CURPAGE_TW:碎语页
$curpage == CURPAGE_LOG:日志、page页
ROLE:当前访问者身份
ROLE == 'admin':管理员
ROLE == 'writer':联合撰写人
ROLE == 'vistor':未登录用户

通用代码
<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>存在每个php文件头部,防止非法访问 
<?php include getViews('XXXX');; ?>: 调用当前模板目录下XXXX.php文件 
<?php echo EMLOG_VERSION;?>:显示当前emlog版本 
<?php echo TEMPLATE_URL; ?>: 显示模板文件路径 
<?php echo BLOG_URL; ?>: 显示博客Url 
<?php echo $blogtitle; ?>: 显示博客标题(会根据当前页面变化) 
<?php echo $blogname; ?>: 显示博客名称 
<?php echo $bloginfo; ?>:显示博客描述 
<?php echo $icp; ?>:显示备案号 
<?php endforeach; ?>: 循环结束,需和<?php foreach(xxxx): ?>配对 
<?php endif;?>:结束if标签,需和<?php if(xxxx): ?>配对 

header头部
<?php 
/* 
Template Name:(模板名称 ) 
Description:(模板描述 ) 
Author:(模板作者 ) 
Author Url:(作者主页 ) 
Sidebar Amount:1(侧边栏数目,最大4 ) 
*/ 
if(!defined('EMLOG_ROOT')) {exit('error!');} 
require_once View::getView('module'); 
?> 

每个php文件的头部,防止非法访问
<?php  
/* 
* 注释位置信息 
*/ 
if(!defined('EMLOG_ROOT')) {exit('error!');}  
?> 

以下为通用标签
<?php echo $blogtitle; ?> 标题 
<?php echo $site_key; ?>关键字 
<?php echo $description; ?>副标题(描叙) 
<?php echo BLOG_URL; ?>网站地址(路径) 
<?php echo TEMPLATE_URL; ?>模板地址(路径) 
<?php doAction('index_head'); ?>头部插件挂载点(用在<head>标签之间,如加载JS,css等) 
<?php echo $blogname; ?>博客名字(使用带网站连接方法如:<a href="<?php echo BLOG_URL; ?>"><?php echo $blogname; ?></a>) 
<?php echo $bloginfo; ?>博客副标题 
<?php echo BLOG_URL.Option::get('topimg'); ?>头部图片 

使用方法:
<img src="<?php echo BLOG_URL.Option::get('topimg'); ?>" height="134" width="960" /> 

首页连接class选取
<?php echo $curpage == CURPAGE_HOME ? 'current' : 'common';?> 

使用方法:
<li class="<?php echo $curpage == CURPAGE_HOME ? 'current' : 'common';?>"><a href="<?php echo BLOG_URL; ?>">首页</a></li> 

说明:<?php if($istwitter == 'y'):?>函数变量开始,‘Y’决定后台是否开启,开启则显示,这里为加载碎语。<?php endif;?>为函数变量结束
<?php if($istwitter == 'y'):?>
<li class="<?php echo $curpage == CURPAGE_TW ? 'current' : 'common';?>"><a href="<?php echo BLOG_URL; ?>t/"> 
<?php echo Option::get('twnavi');?></a></li> 
<?php endif;?> 

下为header.php头部常用标签

<?php  
foreach ($navibar as $key => $val): 
if ($val['hide'] == 'y'){continue;} 
if (empty($val['url'])){$val['url'] = Url::log($key);} 
?>开始导航循环 
<li class="<?php echo isset($logid) && $key == $logid ? 'current' : 'common';?>"><a href="<?php echo $val['url']; ?>" target="<?php echo $val['is_blank']; ?>"><?php echo $val['title']; ?></a></li> 
<?php endforeach;?>导航循环结束 
<?php doAction('navbar', '左标签', '右标签'); ?>插件挂载点,用于导航栏,左右为html标签,用以控制样式,可为空(如:<?php doAction('navbar', '<li class="common">', '</li>'); ?>) 
<?php if(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 else: ?>(判断如果没有登陆则显示下面内容) 
<li class="common"><a href="<?php echo BLOG_URL; ?>admin/">登录</a></li> 
<?php endif; ?>(判断结束)


footer.php

<?php echo Option::EMLOG_VERSION;?>程序版本号 
<?php echo $icp; ?>显示备案号 
<?php doAction('index_footer'); ?>底部插件挂载点(用于统计代码等) 


log_list.php
<?php doAction('index_loglist_top'); ?>插件挂载点,存在于首页日志列表顶部(用于公告等) 
<?php foreach($logs as $value): ?>开始循环输出日志列表  
下面所有标签仅存在于<?php foreach($logs as $value): ?>和<?php endforeach; ?>之间 
<?php topflg($value['top']); ?>置顶标志,函数存在于module.php 
<?php echo $value['log_title']; ?>显示日志标题 
<?php echo $value['log_url']; ?>显示日志标题到正文连接 
以上3个标签使用方法:<?php topflg($value['top']); ?><a href="<?php echo $value['log_url']; ?>"><?php echo $value['log_title']; ?></a> 
<?php blog_author($value['author']); ?> 作者,函数存在于module.php  
<?php echo gmdate('Y-n-j G:i l', $value['date']); ?>发布时间,格式是2010-12-11 19:05 30,格式可自行修改  
<?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']; ?>评论数,使用方法<a href="<?php echo $value['log_url']; ?>#comments">评论(<?php echo $value['comnum']; ?>)</a> 
<?php echo $value['tbcount']; ?>引用数,使用方法<a href="<?php echo $value['log_url']; ?>#tb">引用(<?php echo $value['tbcount']; ?>)</a> 
<?php echo $value['views']; ?>浏览数,使用方法<a href="<?php echo $value['log_url']; ?>">浏览(<?php echo $value['views']; ?>)</a> 
以上仅存在于<?php foreach($logs as $value): ?>和<?php endforeach; ?>之间 
<?php endforeach; ?>循环输出日志列表结束 
<?php echo $page_url;?>显示分页 
<?php include View::getView('side'); ?>调用边栏 
<?php include View::getView('footer'); ?>调用底部 
也可以写成 
<?php 
include View::getView('side'); 
include View::getView('footer'); 
?> 
上为 log_list.php 首页日志列表部分常用标签
echo_log.php
下为echo_log.php 阅读日志页面(内容页)常用标签
<?php topflg($top); ?>置顶标志,函数存在于module.php 
<?php echo $log_title; ?>显示日志、page标题 
<?php blog_author($author); ?>作者 
<?php echo gmdate('Y-n-j G:i l', $date); ?> 发布时间 
<?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 doAction('log_related', $logData); ?>插件挂载点(用于相关日志等) 
<?php neighbor_log($neighborLog); ?>显示相邻日志(上一篇下一篇),函数存在于module.php 
<?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); ?>加载评论 

page.php
下为page.php 自定义页面常用标签
<?php echo $log_title; ?>页面名字 
<?php echo $log_content; ?>内容 
<?php blog_att($logid); ?>附件 
<?php blog_comments($comments); ?>显示评论 
<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?>加载评论 
下为 page.php加载独立页面模板实例 
<?php if($log_title =="标签" || $log_title =="标签云"):?> 
<?php include View::getView('tags');?> 
<?php elseif($log_title =="链接列表" || $log_title =="友情链接"):?> 
<?php include View::getView('links');?> 
<?php elseif($log_title =="读者排行" || $log_title =="读者墙"):?> 
<?php include View::getView('readers');?> 
<?php elseif($log_title =="文章归档" || $log_title =="文章存档"):?> 
<?php include View::getView('archives');?> 
<?php elseif($log_title =="相关服务"):?> 
<?php include View::getView('service');?> 
<?php elseif($log_title =="模版开发" || $log_title =="Emlog模版开发"):?> 
<?php include View::getView('tpl');?> 
<?php elseif($log_title =="留言板"):?> 
<?php include View::getView('contact');?> 
<?php elseif($log_title =="点赞墙" || $log_title =="点赞榜"):?> 
<?php include View::getView('likes');?> 
<?php elseif($log_title =="7天热门文章" || $log_title =="7天热门文章排行"):?> 
<?php include View::getView('week');?> 
<?php elseif($log_title =="30天热门文章" || $log_title =="30天热门文章"):?> 
<?php include View::getView('month');?> 
<?php elseif($log_title =="30天热门评论" || $log_title =="30天热门评论排行"):?> 
<?php include View::getView('comnum');?> 
<?php if ($allow_remark == 'y'){blog_comments($comments,$params);blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark);} ?> 
根据是否允许评论显示评论和评论表单,函数存在于module.php 
t.php
<?php if(ROLE == 'admin' || ROLE == 'writer'): ?>判断是否登陆,登陆显示下面内容 
<a href="<?php echo BLOG_URL . 'admin/twitter.php' ?>">发布碎语</a> 
<?php endif; ?>判断结束 
<?php  
foreach($tws as $val): 
$author = $user_cache[$val['author']]['name']; 
$avatar = empty($user_cache[$val['author']]['avatar']) ?  
BLOG_URL . 'admin/views/images/avatar.jpg' :  
BLOG_URL . $user_cache[$val['author']]['avatar']; 
$tid = (int)$val['id']; 
?> 
开始循环输出碎语,下面为默认模板代码(循环的是<li>标签里的内容) 
<li class="li"> 
<div class="main_img"><img src="<?php echo $avatar; ?>" width="32px" height="32px" /></div> 
<p class="post1"><span><?php echo $author; ?></span><br /><?php echo $val['t'];?></p> 
<div class="clear"></div> 
<div class="bttome"> 
<p class="post"><a href="javascript:loadr('<?php echo DYNAMIC_BLOGURL; ?>?action=getr&tid=<?php echo $tid;?>','<?php echo $tid;?>');">回复(<span id="rn_<?php echo $tid;?>"><?php echo $val['replynum'];?></span>)</a></p> 
<p class="time"><?php echo $val['date'];?> </p> 
</div> 
<div class="clear"></div> 
<ul id="r_<?php echo $tid;?>" class="r"></ul> 
<div class="huifu" id="rp_<?php echo $tid;?>">  
<textarea id="rtext_<?php echo $tid; ?>"></textarea> 
<div class="tbutton"> 
<div class="tinfo" style="display:<?php if(ROLE == 'admin' || ROLE == 'writer'){echo 'none';}?>"> 
昵称:<input type="text" id="rname_<?php echo $tid; ?>" value="" /> 
<span style="display:<?php if($reply_code == 'n'){echo 'none';}?>">验证码:<input type="text" id="rcode_<?php echo $tid; ?>" value="" /><?php echo $rcode; ?></span>  
</div> 
<input class="button_p" type="button" onclick="reply('<?php echo DYNAMIC_BLOGURL; ?>index.php?action=reply',<?php echo $tid;?>);" value="回复" />  
<div class="msg"><span id="rmsg_<?php echo $tid; ?>" style="color:#FF0000"></span></div> 
</div> 
</div> 
</li> 
<?php endforeach;?>循环输出碎语结束

如上代码说明:

<?php echo $avatar; ?>显示作者头像,使用方法:
<img src="<?php echo $avatar; ?>" width="32px" height="32px" />这里设置了图片的高宽为32象素
<?php echo $author; ?>显示碎语发布者
<?php echo $val['t'];?>显示碎语内容
<a href="javascript:loadr('<?php echo DYNAMIC_BLOGURL; ?>?action=getr&tid=<?php echo $tid;?>','<?php echo $tid;?>');">回复(<span id="rn_<?php echo $tid;?>"><?php echo $val['replynum'];?></span>)</a>回复碎语连接使用方法
<?php echo $val['date'];?>发布碎语时间
<?php echo $tid;?>碎语ID数


使用方法

<ul id="r_<?php echo $tid;?>" class="r"></ul>  这里参考了官方模板
举例:如碎语ID为3(发布的第3条碎语),原代码显示结果为
<ul id="r_3" class="r"></ul>
<?php echo $pageurl;?> 显示碎语分页
<?php echo $twnum; ?> 显示碎语数目
上为 t.php 碎语部分常用标签


side.php
<?php $widgets = !empty($options_cache['widgets1']) ? unserialize($options_cache['widgets1']) : array(); ?> 
该页面要加载的widgets,中间红色1为数字,不超过header.php里设置的侧边栏数目  
<?php doAction('diff_side'); ?> 插件挂载点  
<?php 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)); 
} 
} 
} 
?> 


上这一长串用于显示widgets

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

上为RSS 订阅使用方法

module.php
function widget_xxxx($title)显示widgets函数,如widget_blogger($title)显示博主信息 

评论排行榜

(切勿水评,一经发现封IP)

评论:

Google Chrome 38.0.2125.102 Linux浙江省杭州市 阿里云 2018-01-25 06:11
感谢大佬分享

发表评论:

签到 赞赏 丢小花 请勾选我再发表评论!