一点一点的更新,也许很慢,但是很有趣,想做一个属于自己的前台加后台。个人觉得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/
送你一本老司机存档的emlog开发文档。
https://www.kancloud.cn/crazyus/emlog