殷德瑶博客
喜欢的歌,静静地听!喜欢的人,远远地看!

emlog模板结构说明

殷德瑶 2015-9-15 emlog教程 评论 12294 次

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>

module.php篇

<?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">&nbsp;</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/'; ?>">更多&raquo;</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):?>
   &laquo; <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>&raquo;
   <?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文件。

下篇

module.php文件中比较重要的评论列表与表单的函数。因为在4.0版本开始emlog引入了镶套评论的效果,所以评论列表比以前的也稍微复杂了点。如果这里更改了相关的class类与ID的话,也要在common_tpl.js文件更改相关ID。(一般建议不要更改ID,不给ID设置相关CSS属性就没问题,不会产生页面变形问题。)

<?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文件更改。不懂就留言吧。



发表评论


粤ICP备15078261号 Powered by 黑暗之夜
Theme by 殷德瑶博客