---markdown---
博客系统如何用markdown发布文章?本人最近用markdown写笔记,突然爱上了这种码字风格。想把自己项目的文章发布系统也改成markdown发布,所以就有了这样一个实践,分享给大家。
再写这个文章之前 求索网 这个项目’后台的发布系统是用的百度(Ueditor)富文本编辑器。所以一直网上寻找着是否存在像Ueditor那样嵌入到项目中就可以markdown插件?答案是:没找到。找不到完整那就退而求其次自己找零件拼装。
构建思路:写入--> mardown格式文本 --> 插入到数据库 --> php解析mardown格式文本成HTML --> 浏览器渲染HTML(前端给markdown解析html标签添加css样式) -->完成
前面的写入数据的步骤代码都不用动,只要用texarea输入框写markdown就ok,插入到数据库也是以markdown格式存在数据中 ;显而易见,解决这个问题的核心就是PHP解析markdown。这里推荐一款phpmarkdown解析器--parsedown。只要在读取内容那部分的代码引入这个解析器,将markdown代码解析成html字符串,丢到模板中。
代码实例:
/**
* 解析mardown文本
*/
public function parsedown($text){//以thinkphp为列
import('Vendor.Parsedown.Parsedown');//将parsedown放到第三方库目录.class.php命名(用import引入必须用此命名)
$parsedown = new \Parsedown();
return $parsedown->text($text);
}
/**
*输出页面
*/
public function index(){
$aid = I('aid');
if($aid){
$this->loadCate();
$this->loadSidebar();
$articleModel = D('Article');
$commentModel = D('Comment');
$data['articleData'] = $articleModel->getArticleData($aid);//文章数据
if($data['articleData']){
$data['articleData']['content'] = $this->parsedown($data['articleData']['content']);//解析makdown文章内容
$data['tagname'] = explode(',', $data['articleData']['tagname']);//文章标签
$data['relateList'] = $articleModel->getRelateList($aid);//相关文章
$data['comment'] = $commentModel->getComment($aid,array('start'=>0,'num'=>5));//评论
$this->assign('data',$data);
$this->display();
}else{
echo '错误页面';
die;
}
}else{
echo '错误页面';
}
}
这样后台markdown基本搞定,别忘了在前端加mardown样式,这个css样式自己写也可以下一个mardown.css。前端得代码高亮可以用prism.js等库。这样就完成mardown格式的输出显示步骤。
效果怎么样?求索网上的每一篇文章都是用markdown写的自行参考。
总结:把解决问题的思路理清楚,大问题拆解成小问题,各个击破。