这个博客从2016年7月17号搭建好后,一直不断的在去完善它,优化它的显示效果,励志把它做的像艺术品一样,这不趁着这两天有时间,对它又进行了一些更新。

主要更新

  1. 修复首页在大屏幕下,下拉不会自动加载新文章的bug
  2. 修复首页在一定分辨下,侧边导航不能弹出的bug
  3. 加入文章浏览量统计
  4. 加入文章点赞量统计
  5. 修复评论者头像不完全显示的bug
  6. 去掉了所有a标签的下划线,使样式更加整洁
  7. 加入评论支持MarkDown语法的提示
  8. 修改了评论文本域的样式

详细介绍

第一个更新

刚开始搭建好的时候,一直在用笔记本的访问,后来用了公司的大屏电脑访问,发现问题了。代码里文章是自动加载的,加载逻辑是滚动条有滚动时,But在大屏电脑下滚动条没有,导致不能自动加载文章了。知道了问题出在这里,

解决方法:让文章默认显示条数多点,哈哈就是这么简单~

第二个更新

做为一个能自适应的博客,能在不同分辨下完美显示是首要的任务,后来就发现了在一定分辨率下导航不能弹出的bug,经过分析发现是页面样式里分辨率设置不一致导致的。如下图:

在样式表里,设置的是768px时隐藏

样式表.jpg

但在js控制里写的是480px才触发

js控制.png

解决方法:两个改成一致

第三个更新

加入文章浏览量的统计功能,需要独立开发一个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();

第四个更新

对于加于点赞量统计功能,虽然也是要做成一个插件,但它于上面浏览量统计的交互方式不同,它是要当用于点击时触发,涉及三个问题:

  1. 如何在不改动原页面的情况下,通过插件向页面添加js?
  2. 如何通过添加的js异步调用到插件里的方法?
  3. 在没有身份标识的情况下,如何控制点赞之后不能在点?

解决方法:

  1. 当插件被触发时,包括一个js文件过去
  2. 利用TypechoHelper::addAction('', '')增加一个路由(第一个参数:小写的插件名,第二个参数:首字母大写插件名_Action)
  3. 对于这个问题解决方法有很多钟,最简单的使用cookie,难一点的,使用cookie+localStorage+sessionStorage,再难一点的在数据库记录点赞者的ip+浏览器信息+时间

剩下的更新很简单就不在介绍了……

福利来了

浏览量插件:Views.zip