EMLOG模板结构

摘要

EMLOG模板结构: 默认模板包含header.php、log_list.php、echo_log.php、module.php、side.php、page.php、footer.php、main.css、preview.jpg这个9个文件,各个文件主要功能如下:

· header.php:header.php是存储模板信息和控制模板顶部元素的文件,该文件是必须存在的,如果emlog系统检测不到该文件的存在,emlog将不会工作。

· log_list.php:该文件也是必须存在的文件,默认为日志首页生成、分类页面生成、搜索结果页面生成、按标签查看页面生成、存档页面生成等等列表页面的生成控制文件。但是在高级的emlog的DIY中,你可以更改该文件。高级DIY教程将在以后单独发布,这里不作赘述。

EMLOG模板结构: 默认模板包含header.php、log_list.php、echo_log.php、module.php、side.php、page.php、footer.php、main.css、preview.jpg这个9个文件,各个文件主要功能如下:

· header.php:header.php是存储模板信息和控制模板顶部元素的文件,该文件是必须存在的,如果emlog系统检测不到该文件的存在,emlog将不会工作。

· log_list.php:该文件也是必须存在的文件,默认为日志首页生成、分类页面生成、搜索结果页面生成、按标签查看页面生成、存档页面生成等等列表页面的生成控制文件。但是在高级的emlog的DIY中,你可以更改该文件。高级DIY教程将在以后单独发布,这里不作赘述。

· echo_log.php:该文件同样为必须文件,单个日志页面由该文件生成。

· module.php:一般来说这个文件是必须存在的,当然,在高级DIY中你可以去掉它,但是此文件中的代码无一不是模板的核心代码。几乎所有前台显示的内容都由此文件管理。不熟悉的请不要轻易动该文件。

· side.php:该文件为边栏控制文件,并不是必须存在的,如果你不想在你的模板中出现边栏,你大可以删掉它。

· page.php:该文件必须存在。该文件是控制你的自定义页面的文件。如果此文件不存在,你在后台添加的自定义页面将不工作。当然,在以后的高级DIY教程中,你可以直接在模板中DIY一个个性页面,并不需要后台添加,同时也不受后台限制,就像鼠标生活的链接页面一样。

· footer.php:该文件为页底文件,包含版权说明、备案信息等。一般你的外部统计代码可以添加到这个文件中。这个文件也不是必须存在的,如果你不想要页底的话,也可以删除。

· main.css:该文件为页面显示效果的控制文件,是主体CSS。当然也不是必须存在的,前提是你将css写到header.php等文件里,不过我猜想你不会那样做的。

· preview.jpg:这个是预览图片,也就是你在后台更换模板的时候看到的那个预览图片。该图片不能更改名字,否则你在后台依然看不到预览图片。好像这个图片是支持gif格式的,但是不支持png格式。

另外在默认风格里面还存在一个images的文件夹,里面放置的是风格所需要的图片和swf文件。

 好了,上面将emlog的结构从文件上进行了分析。然而要制作风格,我们还需要细致地了解各个文件里面的东西。后面我将一一解剖各个文件,当然,我是一个温柔的庖丁,你看到的不是血淋淋的场面,而将是精致的脉络和清晰的骨骼构架。

模板信息

 模板信息写在第一个PHP标签里面,即是第1到11行。模板信息主要是给后台的模板预览时读取模板信息使用的。下面来分析模板信息的各个项,括号内红色字体是我的注释:

· Template Name:默认模板(这里是模板的名字,例如此时你在后台看到的模板名字就是“默认模板”)

· Description:这是emlog的默认模板,简洁明快 ……(这是模板的简介)

· Author:emlog开发小组(这是作者名字)

· Author Url:http://www.emlog.net(这是作者的主页)

· Sidebar Amount:1(这是边栏个数,如果你的模板有2个边栏,即是3栏式的话,这里就填2,默认模板是1个边栏,所以为1)

主体HTML标记

主体HTML标记又可以分为2个部分,及包含在<head></head>标签内的为一个部分,包含在标签<body>后的为一个部分。下面分析两个部分的每一行,括号内的是我的分析注释。HTML标签我将不会讲解,看下面的部分请自学HTML标记。PHP代码已被我用蓝色标记。

· head部分

1. <head>

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

3. <meta name="keywords" content="<?php echo $site_key; ?>" />(博客的关键字,这里的PHP代码提取的是你在后台博客设置里面“博客关键字”里面填写的信息。)

4. <meta name="description" content="<?php echo $bloginfo; ?>" />(博客的描述,这里的PHP调用的是后台“博客描述”里面的信息)

5. <meta name="generator" content="emlog" />(generator公共头像服务预留位置)

6. <title><?php echo $blogtitle; ?></title>(博客名字)

7. <link rel="EditURI" type="application/rsd+xml" title="RSD" href="<?php echo BLOG_URL; ?>xmlrpc.php?rsd" />(远程过程调用开放接口,用于支持离线写作)

8. <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="<?php echo BLOG_URL; ?>wlwmanifest.xml" />(专门为Live Writer开放的离线写作接口)

9. <link rel="alternate" type="application/rss+xml" title="RSS"  href="<?php echo BLOG_URL; ?>rss.php">(RSS输出接口)

10. <link href="<?php echo TEMPLATE_URL; ?>main.css" rel="stylesheet" type="text/css" />(主体CSS样式加载,PHP代码为模板的网络绝对路径)

11. <script src="<?php echo BLOG_URL; ?>lib/js/common_tpl.js" type="text/javascript"></script>(前台公用JS文件加载,PHP代码为博客的网络绝对路径)

12. <?php doAction('index_head'); ?> (header挂载点)

13. </head>

· body部分

1. <body>

2. <div class="main">

3. <div class="header">

4.   <ul>

5.    <li id="title"><h1><a href="<?php echo BLOG_URL; ?>"><?php echo $blogname; ?></a></h1></li>(博客名字)

6.    <li id="tagline"><?php echo $bloginfo; ?></li>(博客描述)

7.   </ul>

8.   <ul id="menus">(菜单开始标记)

9.    <li class="menus1"><a href="<?php echo BLOG_URL; ?>">首页</a></li>(首页)

10.    <?php (从这里开始将循环读取你的所有自定义页面的标题,并加入菜单中,例如你自定义了一个“留言”页面,那么这里将读取这个页面的标题“留言”将其加入到菜单里面)

11.    foreach ($navibar as $key => $val):

12.    if ($val['hide'] == 'y'){continue;}

13.    if (empty($val['url'])){$val['url'] = BLOG_URL.'?post='.$key;}

14.    ?>

15.    <li class="menus2"><a href="<?php echo $val['url']; ?>" target="<?php echo $val['is_blank']; ?>"><?php echo $val['title']; ?></a></li>

16.    <?php endforeach;?>(循环读取自定义页面标题结束)

17.    <?php doAction('navbar', '<li class="menus2">', '</li>'); ?>(这里是将读取你所有插件生成的菜单,例如你安装了相册插件,并设置使之在菜单里出现“相册”,那么这里将读取“相册”到菜单里)

18.    <?php if(ROLE == 'admin'
|| ROLE == 'writer'): ?>(这里开始将后台登陆链接加入到菜单中,删掉本部分代码菜单中将不会显示“登陆”链接)

19.    <li class="menus2"><a href="<?php echo BLOG_URL; ?>admin/write_log.php">写日志</a></li>

20.    <li class="menus2"><a href="<?php echo BLOG_URL; ?>admin/">管理中心</a></li>

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

22.    <?php else: ?>

23.    <li class="menus2"><a href="<?php echo BLOG_URL; ?>admin/">登录</a></li>

24.    <?php endif; ?>(后台登陆链接结束)

25.   </ul>(菜单结束标记)

26.   <div class="clear"></div>

27. </div>

好了,header.php分析结束,重要的东西我都标注完了。这里没有讲HTML和DIV+CSS知识,不会的朋友可以自己看看相关书籍。在header.php里面我们需要特别注意这两个参数:<?php echo BLOG_URL; ?>和<?php echo TEMPLATE_URL; ?>。前者是博客的网络绝对路径,如我的博客绝对路径即是“http://mouselife.cn/”。需要说明的是这里面已经包含了域名后面的那个斜杠,所以在使用的时候不要再多加一个斜杠了。后者是模板的网络绝对路径,也包含了“/”,使用的时候不要再加上“/”了,例如上面加载CSS的时候路径写的是“<?php echo TEMPLATE_URL; ?>main.css”而不是“<?php echo TEMPLATE_URL; ?>/main.css”。

header.php相对于3.3的主要变化即是上面这两个参数,3.3使用的博客路径是相对路径,3.4变为了绝对路径。而模板路径的参数名字改变了,由<?php echo TPL_PATH; ?>变为<?php echo TEMPLATE_URL; ?>。另外新增了两个离线写作接口。

承接上一篇,本篇教程将来仔细分析log_list.php文件。log_list.php文件默认为日志列表生成文件,即所有日志列表都是由这个文件生成的,如默认首页的日志列表、搜索结果列表、分类列表等等。EMLOG会分析URL,如果URL里面包含日志列表请求的话,EMLOG就会调用header.php、log_list.php、side.php、footer.php、module.php来生成一个列表页面。log_list.php影响到页面有:首页、分类页面、日志标签页面、搜索结果页面、分页页面、单个作者所有文章页面等。        现在来仔细分析log_list.php的结构,分析方法如同header.php。

<?php if(!defined('EMLOG_ROOT')) {exit('error!');}?>

<div id="content">

<?php doAction('index_loglist_top'); ?>(列表页面顶部插件挂载点)

<ul>

<?php foreach($logs as $value): ?>(从这里开始循环输出日子列表,一直到<?php endforeach; ?>处结束)

<li>

<h2 class="content_h2">

<?php topflg($value['top']); ?><a href="<?php echo BLOG_URL; ?>?post=<?php echo $value['logid']; ?>"><?php echo $value['log_title']; ?></a>(href=“”内是每篇日志的绝对URL,<a>标签内是每一篇日志的标题)

</h2>

<div class="act"><?php blog_sort($value['sortid'], $value['logid']); ?></div>(每篇日志所属的分类)

<div class="editor"><?php editflg($value['logid'],$value['author']); ?></div>(指向后台改日志的编辑链接,只有在管理员登录的情况下前台才会出现“编辑”超链接,删掉该行无论登录与否都不会出现)

<div class="clear line"></div>

    <div class="bloger">post by <?php blog_author($value['author']); ?> / <?php echo date('Y-n-j G:i l', $value['date']); ?></div>(这里生成的效果为post by Kuma / 2009-12-5 0:57 Saturday, <?php blog_author($value['author']); ?>是该日志的作者,<?php echo date('Y-n-j G:i l', $value['date']); ?>是发布时间。这个时间格式你可以随意更改,时间的格式输出请见附录)

<div class="post"><?php echo $value['log_description']; ?></div>(这是对应日志的摘要,如果你在后台发布日志的时候填写了摘要的话,这里显示摘要内容,如果没填写,则显示整篇日志)

<div class="fujian"><?php blog_att($value['logid']); ?></div>(显示对应附件,该日志有附件则显示附件,没有附件则不显示,去掉的话列表页面将不会有附件下载链接)

<div class="under">

<div class="top"></div>

<div class="under_p">

<div class="tag"><?php blog_tag($value['logid']); ?></div>(该日志所拥有的标签,你发布日志填写了标签就会显示对应标签,没填则显示为空。删掉该行将不显示标签)

<div>

<a href="<?php echo BLOG_URL; ?>?post=<?php echo $value['logid']; ?>#comment">评论(<?php echo $value['comnum']; ?>)</a>(该日志的评论条数,href=“”里面是链接指向,括号里面是评论条数的参数)

<a href="<?php echo BLOG_URL; ?>?post=<?php echo $value['logid']; ?>#tb">引用(<?php echo $value['tbcount']; ?>)</a> (类似评论条数)

<a href="<?php echo BLOG_URL; ?>?post=<?php echo $value['logid']; ?>">浏览(<?php echo $value['views']; ?>)</a>(类似评论条数)

</div>

</div>

<div class="bottom"></div>

</div>

</li>

<?php endforeach; ?>(日志列表生成结束)

</ul>

<div id="pagenavi">

<?php echo $page_url;?>(显示分页的页码)

</div>

</div>

<!--end content-->

<?php

include getViews('side');

include getViews('footer'); 

?>(将side.php和footer.php加载进来,并放在下面)

附录:PHP输出各种格式的时间

年份的表示:

如2009年,y输出09 而Y输出2009

月份的表示:

如10或者9月:m输出10或09,而 n输出10或9,m和n的区别在于输出10一下的数字是否在前面加0,M将输出10月将是:Oct ,而F输出10月将是:October 

星期的表示:

如输出星期四,D输出:Thu而 l 输出Thursday

天数的表示:

如输出1号,d输出01, D输出1  ,j输出1 ,js输出1st

上下午:

上下午a输出am/pm 而A输出AM/PM

小时:

如14时的输出:G输出14, g输出2, h输出02 ,H输出14

分钟:

输出分钟为i

给个实例,如输出2009年10月1日,下面给出几种输出方式:

'M d Y'        Oct 01 2009

'F jS, Y'      October 1st, 2009

'd-m-Y'       01-10-2009

'Y-n-j  l'      2009-10-1 Thursday



您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情