这个博客从2016年7月17号搭建好后,一直不断的在去完善它,优化它的显示效果,励志把它做的像艺术品一样,这不趁着这两天有时间,对它又进行了一些更新。
主要更新
- 修复首页在大屏幕下,下拉不会自动加载新文章的bug
- 修复首页在一定分辨下,侧边导航不能弹出的bug
- 加入文章浏览量统计
- 加入文章点赞量统计
- 修复评论者头像不完全显示的bug
- 去掉了所有a标签的下划线,使样式更加整洁
- 加入评论支持MarkDown语法的提示
- 修改了评论文本域的样式
详细介绍
第一个更新
刚开始搭建好的时候,一直在用笔记本的访问,后来用了公司的大屏电脑访问,发现问题了。代码里文章是自动加载的,加载逻辑是滚动条有滚动时,But
在大屏电脑下滚动条没有,导致不能自动加载文章了。知道了问题出在这里,
解决方法:让文章默认显示条数多点
,哈哈就是这么简单~
第二个更新
做为一个能自适应的博客,能在不同分辨下完美显示是首要的任务,后来就发现了在一定分辨率下导航不能弹出的bug
,经过分析发现是页面样式里分辨率设置不一致导致的。如下图:
在样式表里,设置的是768px
时隐藏
但在js控制里写的是480px
才触发
解决方法:两个改成一致
第三个更新
加入文章浏览量的统计功能,需要独立开发一个Typecho
的插件,这也让我因此对Typecho
插件的流程有了深入的了解(官方开发文档)。下面以浏览量统计插件
的开发简单介绍一下Typecho
的插件开发流程:
1)搭建好文件目录结构
Views
|--Plugin.php
2)写好代码结构
/**
* Views - 统计访问量
* @package Views
* @author Double
* @version 1.0.1
* @link http://blog.dandy.fun
*/
class Views_Plugin implements Typecho_Plugin_Interface
{
/**
* 激活插件方法,如果激活失败,直接抛出异常
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function activate()
{
// 激活逻辑,包括:该插件的触发逻辑、页面交互逻辑、数据库处理逻辑等
}
/**
* 禁用插件方法,如果禁用失败,直接抛出异常
* @static
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function deactivate(){
// 禁用插件后要处理的业务,没有则留空。
}
/**
* 获取插件配置面板
* @access public
* @param Typecho_Widget_Helper_Form $form 配置面板
* @return void
*/
public static function config(Typecho_Widget_Helper_Form $form){
// 当插件需要有配置项的时候,可以把代码写在这里,否则留空。
}
/**
* 个人用户的配置面板
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form){
// 官方解释,说一般用不到。ps:它与上面的区别之处,博主也没搞明白,如果你知道,欢迎给我留言
}
/**
* 插件被触发时调用的方法
* @access public
* @return void
*/
public static function viewsCounter()
{
// 如:当用户浏览文件时,触发该插件,则该方法要做的是:把数据库里访问量字段值 +1
}
/**
* 输出访问次数
* @access public
* @return string
*/
public static function theViews()
{
// 对数据检索并输出
}
}
3)根据上面的结构写入,业务逻辑代码。
4)启用并使用插件
启用时只需要把写好的代码上传到项目插件目录,然后登录到后台,找到该插件启用
就好了。使用时找到你需要调用插件的地方加入插件名::方法名
,如:Views_Plugin::theViews();
第四个更新
对于加于点赞量统计
功能,虽然也是要做成一个插件,但它于上面浏览量统计
的交互方式不同,它是要当用于点击时触发,涉及三个问题:
- 如何在不改动原页面的情况下,通过插件向页面添加js?
- 如何通过添加的js异步调用到插件里的方法?
- 在没有身份标识的情况下,如何控制点赞之后不能在点?
解决方法:
- 当插件被触发时,包括一个js文件过去
- 利用
Typecho
的Helper::addAction('', '')
增加一个路由(第一个参数:小写的插件名,第二个参数:首字母大写插件名_Action) - 对于这个问题解决方法有很多钟,最简单的使用
cookie
,难一点的,使用cookie
+localStorage
+sessionStorage
,再难一点的在数据库记录点赞者的ip
+浏览器信息
+时间
等
剩下的更新很简单就不在介绍了……
福利来了
浏览量插件:Views.zip