一点一点的更新,也许很慢,但是很有趣,想做一个属于自己的前台加后台。个人觉得emlog又快文件又小,很适合自己一点一点的完善或添加!

一般来说,一个模板都会包含以下几个部分:(全局css和js一般放在头部文件header.php)

  • header.php:页面头部。
  • footer.php:页面底部。
  • module.php:模板公共代码,包含侧边栏小工具、评论、引用、编辑等,该文件是模板最核心的模块
  • side.php:模板侧边栏文件,如制作单栏模板则该文件不是必须的。
  • t.php:显示emlog系统自带的微博(碎语)内容。
  • 404.php 自定义404页面未找到时的报错页面
  • echo_log.php:阅读文章页。
  • preview.jpg:在后台模板选择界面显示的模板预览图,300×225 jpg格式。

header.php说明:

<?php
/*
Template Name:模板名称
Description:模板介绍描述
Version:模板版本
Author:模板作者
Author Url:作者或模板发布的URL
Sidebar Amount:标记该模板有几个侧边栏,一般为1,有些模板有两个侧边栏则标记2。这样可以在后台widgets里识别管理(具体可下载体验官方收录的模板G7)。
*/
if(!defined('EMLOG_ROOT')) {exit('error!');}(为防止该文件被直接执行。)
require_once View::getView('module');(加载模板公共代码.)
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
title><?php echo $site_title; ?></title>(站点标题)
<meta name="keywords" content="<?php echo $site_key; ?>" />(关键字 )
<meta name="description" content="<?php echo $site_description; ?>" />(输出博客设置的摘要 )
<meta name="viewport" content="width=device-width, initial-scale=1.0" user-scalable="no" />(详情看https://blog.csdn.net/qq_42039281/article/details/83281074)
<!--CSS-->
<link rel="stylesheet" href="<?php echo TEMPLATE_URL; ?>css/default.css"/>(模板目录下的css文件)
<!--JS-->
<script src="<?php echo TEMPLATE_URL; ?>js/jquery.2.1.4.min.js"></script >(模板目录下的JS)
<?php doAction('index_head'); ?>
</head>
<body>
头部页面(所有页面的头部导航)

footer.php

$icp:获得后台设置的ICP备案号。

页脚底部挂载点加入。<?php echo $icp; ?>(echo输出$icp

</body>
</html>
(所以页面开头都可以加入<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>防止页面被直接访问)

(挂载点<?php include View::getView('side');?>其中side为侧边栏模板文件的名称)<?require_once View::getView('footer');?>其中footer为页面底部挂载点

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

统计信息代码:

把以下代码添加到当前使用的主题模板文件中,如side.php文件:

<?php $sta_cache = Cache::getInstance()->readCache('sta'); /*必须添加*/ ?>
<ul>
	<li>文章总数:<?php echo $sta_cache['lognum']; ?> 篇</li>
	<li>评论总数:<?php echo $sta_cache['comnum_all']; ?> 条</li>
	<li>闲言碎语:<?php echo $sta_cache['twnum']; ?>条</li>		
	<li>网站运行:<?php echo floor((time()-strtotime(20160423))/86400); ?> 天</li>	
</ul>

注册功能实现代码


<form method="post" action="" id="sign-in" onsubmit="return checkReg();" class="wyz">
<input type="text" name="username" id="username"  tabindex="1" placeholder="用户名或邮箱">
<input type="password" name="password" id="password" class="line-form-input" tabindex="2" placeholder="登录密码">
<input type="password" name="password2" id="password2" class="line-form-input" tabindex="2" placeholder="重复密码">
<input type="submit" name="submit" value="注册"/>
</form>
<?php
session_start();
!defined('EMLOG_ROOT') && exit('access deined!');
global $CACHE;
$options_cache = $CACHE->readCache('options');
$DB = MySql::getInstance();
$username = isset($_POST['username']) ? addslashes(trim($_POST['username'])) : '';
$password = isset($_POST['password']) ? addslashes(trim($_POST['password'])) : '';
$password2 = isset($_POST['password2']) ? addslashes(trim($_POST['password2'])) : '';
if($username && $password && $password2 ){
$sessionCode = isset($_SESSION['code']) ? $_SESSION['code'] : '';
//echo $sessionCode;
$User_Model = new User_Model();
if(!$User_Model -> isUserExist($username)){
$hsPWD = new PasswordHash(8, true);
$password = $hsPWD->HashPassword($password);
$User_Model->addUser($username, $password, 'writer', 'y');
$CACHE->updateCache();
echo'<script>alert("注册成功!"); window.location.href="'.BLOG_URL.'admin/"</script>';
}else{echo'<script>alert("用户名已存在!");</script>';}
}else
?>
<script type="text/javascript">
function checkReg(){
var usrName = $("input[name=username]").val().replace(/(^\s*)|(\s*$)/g, "");
var pwd = $("input[name=password]").val().replace(/(^\s*)|(\s*$)/g, "");
var pwd2 = $("input[name=password2]").val().replace(/(^\s*)|(\s*$)/g, "");
if(usrName.match(/\s/) || pwd.match(/\s/)){alert("用户名和密码中不能有空格");return false;}
if(usrName == '' || pwd == ''){alert("用户名、密码、验证码都不能为空!");return false;}
if(usrName.length < 5 || pwd.length < 5){alert("用户名和密码都不能小于5位!");return false;}
else if(pwd != pwd2){alert("两次输入密码不相等!");return false;}
}
</script>



准备用Bootstrap简洁、直观、强悍的前端开发框架

地址:https://www.bootcss.com/