最近買了個新的域名,同時在阿里雲申請了免費的虛擬主機。。。藉此機會就想搞個本身的博客站點,雖然以前也使用了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實在不怎麼熟悉了,有問題的話歡迎吐槽(可是別噴我啊。。。)