最近买了个新的域名,同时在阿里云申请了免费的虚拟主机。。。借此机会就想搞个本身的博客站点,虽然以前也使用了hexo + github 、 WordPress 作过,可是个人阿里云虚拟主机实在是不知道怎么去搞hexo (也许根本就搞不起来,除非本身花钱买主机,哈哈)。。。WordPress老是感受好笨重,运行起来一股的人到中年,气喘吁吁啊。。。百度以后,typeecho成了首选,可是markdown居然有问题。。。一口老血。。。本身动手吧。。。javascript
phpstudycss
highlightjsjava
项目的github地址mysql
目前来讲只用到了两张表,一个是文章表,一个是后台登陆的用户表,其中有些字段尚未用到,先写上备用,数据库的设计是仿照青春博客设计git
DROP TABLE IF EXISTS `by_article`; CREATE TABLE `by_article` ( `a_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '文章逻辑ID', `a_url` varchar(64) DEFAULT '' COMMENT '文章图片', `a_title` varchar(128) NOT NULL COMMENT '文章标题', `a_remark` varchar(256) DEFAULT '' COMMENT '文章描述', `a_keyword` varchar(32) DEFAULT '' COMMENT '文章关键字', `pid` int(11) NOT NULL DEFAULT '1' COMMENT '文章类别', `a_time` int(10) NOT NULL COMMENT '文章发表时间', `a_content` text NOT NULL COMMENT '文章内容', `a_view` int(11) NOT NULL DEFAULT '1' COMMENT '文章是否置顶', `a_hit` int(11) NOT NULL DEFAULT '1' COMMENT '文章点击量', `a_original` int(1) DEFAULT '0', `a_from` varchar(16) NOT NULL DEFAULT '1', `a_writer` varchar(64) NOT NULL COMMENT '做者', `a_ip` varchar(16) NOT NULL, PRIMARY KEY (`a_id`), KEY `a_title` (`a_title`) ) ENGINE=MyISAM AUTO_INCREMENT=71 DEFAULT CHARSET=utf8 COMMENT='文章表';
DROP TABLE IF EXISTS `by_user`; CREATE TABLE `by_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户逻辑Id', `name` varchar(32) NOT NULL COMMENT '登录用户名', `password` varchar(32) NOT NULL COMMENT '登录密码', `user` varchar(32) NOT NULL COMMENT '用户名', `class` int(11) NOT NULL COMMENT '用户类别', `last_time` int(11) NOT NULL COMMENT '用户登录时间', `ip` varchar(16) NOT NULL COMMENT '用户登录ip', PRIMARY KEY (`id`), KEY `user` (`user`) ) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='用户表';
ByBloggithub
Admin 后台目录web
Conf 配置文件
Controller 控制器
Model 模型
View 页面
Home 前台目录
Conf 配置文件
Controller 控制器
Model 模型
View 页面
Public 公共资源目录
Css 样式目录
font 、fonts 字体库
Img 图片
js
MarkdownEditor 文章编辑器
Plugin 插件目录
phpstudy 是集成的开发环境,下载后解压就可使用。。。thinkphp下载解压后放到phpstudy的www目录下,在浏览器访问该目录便可把thinkphp安装完成。。。详细的操做流程能够自行百度,或者参考我上面发的资源连接。
在Config文件夹下的config.php 文件中添加数据库的配置信息
//'配置项'=>'配置值' 'DB_TYPE'=>'mysql',// 数据库类型 'DB_HOST'=>'127.0.0.1',// 服务器地址 'DB_NAME'=>'',// 数据库名 'DB_USER'=>'',// 用户名 'DB_PWD'=>'',// 密码 'DB_PORT'=>3306,// 端口 'DB_PREFIX'=>'by_',// 数据库表前缀 'DB_CHARSET'=>'utf8',// 数据库字符集 'USER_AUTH_KEY'=>'authId'
<!DOCTYPE html> <html> <head> <title>11</title> <include file = "./Public/Public_head_link"/> <link rel="stylesheet" href="__PUBLIC__/MarkdownEditor/editor.css" /> <script type="text/javascript" src="__PUBLIC__/MarkdownEditor/editor.js"></script> <script type="text/javascript" src="__PUBLIC__/MarkdownEditor/marked.js"></script> </head> <body> <include file = "./Public/Public_header"/> <div id="content" class="container"> <form class="col s12 pt-60" method="post" action="__URL__/insert"> <div class="row"> <div class="col s9"> <div class="row"> <div class="input-field col s12"> <input id="title" name="a_title" type="text" class="validate"> <label for="title">文章标题</label> </div> </div> <div class="row"> <div class="input-field col s12"> <input id="remark" name="a_remark" type="text" class="validate"> <label for="remark">文章描述</label> </div> </div> <div class="row"> <div class="input-field col s12"> <p class="f-16 c-999">文章内容</p> <textarea name="a_content" id="textarea" class="materialize-textarea"></textarea> </div> </div> </div> <div class="col s3"> <div class="row"> <div class="input-field col s12"> <input id="keyword" name="a_keyword" type="text" class="validate"> <label for="keyword">标签(关键字)</label> </div> </div> <button class="btn waves-effect waves-light" type="submit" name="action">发表文章 <i class="by bym-feiji right"></i> </button> </div> </div> </form> </div> <include file = "./Public/Public_footer"/> <include file = "./Public/Public_foot_script"/> <script> // markdown 编辑器 var editor = new Editor(); editor.render(); </script> </body> </html>
class ArticleModel extends Model { public function addArticle($data){ // 添加文章 if(M('article')->add($data)){ return 1; }else{ return 0; } } }
public function insert(){ $data = array ( 'a_title' => I('post.a_title'), 'a_keyword' => I('post.a_keyword'), 'a_remark' => I('post.a_remark'), 'a_content' => I('post.a_content'), 'a_time' => time(), 'a_ip' => get_client_ip(), ); if(D('Article')->addArticle($data)){ $this->success('发表完成!','lista'); }else{ $this->error('发表失败!'); } }
若是没有问题的话呢,你就能够看到下面的截图了
<!DOCTYPE html> <html> <head> <title>文章列表页 -- ByBlog</title> <include file = "./Public/Public_head_link"/> </head> <body> <include file = "./Public/Public_header"/> <div id="content" class="container by-lista"> <div class="row pt-xlg"> <div class="col s12"> <table class="hoverable"> <thead> <tr> <th data-field="id" class="f-20">文章标题</th> <th data-field="id" class="f-20">操做</th> </tr> </thead> <tbody> <volist name="list" id="vo"> <tr> <td class="f-18" width="75%">{$vo.a_title} <span class="f-12 c-999">20{$vo.a_time|date="y/m/d H:i",###}</span></td> <td width="25%"> <a class="waves-effect waves-light btn mr-lg">编辑</a> <a class="waves-effect waves-light btn">删除</a> </td> </tr> </volist> </tbody> </table> <div class="pagination right"> {$page} </div> </div> </div> </div> <include file = "./Public/Public_footer"/> <include file = "./Public/Public_foot_script"/> </body> </html>
public function listA(){ // 文章列表 // 查询知足要求的总记录数 $count = M('article')->count(); $this->assign('count',$count); // 实例化分页类 传入总记录数和每页显示的记录数 $Page = new \Think\Page($count,10); // 分页显示输出 $show = $Page->show(); $article = M('article') ->order('a_id desc') -> field('a_title,a_time') ->limit($Page->firstRow.','.$Page->listRows)->select(); // 赋值数据集 $this->assign('list',$article); // 赋值分页输出 $this->assign('page',$show); $this->display(); }
而后呢你能看到的页面是这个样子的
写个代码不容易,里面天然有几个坑。。。
时间的解码问题
我存到数据库里面的是时间戳,可是通过解码后年份只显示后两位数字,因此我就本身在年份的前面加了20
。。。。因此大家就看到了2070这样的时间点是由于当时存的时间戳为空,就成了默认的时间1970。。。可是若是是新编辑的文章仍是木有问题的。。。。
代码写的应该有很多问题,还有不少的功能还没有实现,下篇文章将介绍前台的展现和列表以及后台的用户登陆问题(目先后台的登陆还有点问题还没有解决)。。。php实在不怎么熟悉了,有问题的话欢迎吐槽(可是别喷我啊。。。)