美文网首页程序员
更换博客主题NexT

更换博客主题NexT

作者: ERFZE | 来源:发表于2020-05-05 14:31 被阅读0次

    0x00 前言

    之前的博客主题H2O界面不太美观,可扩展性较差(主要是因为笔者不懂前端),遂有了这次更换博客主题的“探索”。将过程记录于此。

    0x01 本地环境搭建

    笔者使用的是Ubuntu 16.04,nodejsGit版本如下,如没有这两个工具,请另行安装:

    nodejs:4.2.6
    Git:2.7.4

    0x01.1 安装npm并更换npm源

    安装npm:

    sudo apt-get install npm
    

    查看npm源:

    npm config get registry
    

    修改npm源:

    npm config set registry https://registry.npm.taobao.org
    

    0x01.2 安装Hexo

    新建一个文件夹用来存放博客相关文件,笔者新建的文件夹是Blog,执行下列命令:

    cd ~/Blog #~/Blog需修改为你自己的目录位置
    sudo npm install -g hexo-cli
    sudo hexo init
    

    由于这篇文章与当时笔者搭建环境间隔了一段时间,有些遇到的问题没有记录下来。如果出现访问文件夹受限的问题,修改Bloggroupusername即可:

    sudo chown group_name:username ~/Blog
    

    安装完成后,笔者的目录结构如下:

    ├── _config.yml
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    ├── scaffolds
    ├── source
    │   └── _posts
    └── themes
        └── landscape
    

    正常情况应该没有node_modules目录与package-lock.json文件,与具体环境有关。


    执行下列命令之后,会生成public目录与db.json文件,public目录相当于网站的根目录。

    在浏览器中访问http://localhost:4000,可以看到默认的landscape主题样式:

    image

    0x01.3 使用NexT主题

    1. 执行git clone https://github.com/iissnan/hexo-theme-next themes/nextNexT主题添加到themes目录下;

    2. 使用vim _config.yml修改Blog目录下的_config.yml配置文件,进入vim编辑器后使用/theme:找到theme项并修改为next:wq保存退出;

    3. 执行hexo s后在浏览器中访问http://localhost:4000,可以看到NexT主题生效。

    0x02 NexT主题个性化

    0x02.1 主题设定

    作者提供的NexT使用文档已经描述得很详细了,不再另行赘述。

    可以打开两个终端,一个运行hexo server,另一个运行vim编辑器修改配置文件。

    0x02.2 添加菜单

    添加菜单项后,还需创建该菜单的页面才能生效,否则访问会出现错误(e.g.Cannot GET /categories/)。

    执行命令:

    hexo new page categories
    

    执行完毕后,source目录下会出现一个categories目录,其中有

    修改index.md文件如下:

    ---
    title: 分类
    date: 2019-08-11 22:28:27  #该字段不用修改,由创建时自动填入
    type: "categories"
    comments: false
    ---
    

    其他菜单项的创建及设置方法同上。

    0x02.3 添加社交图标及链接

    修改主题配置文件中下列内容:

    social:
      GitHub: https://github.com/erfze || github
      E-Mail: mailto:erfze1999@gmail.com || envelope
      #Google: https://plus.google.com/yourname || google
      Twitter: https://twitter.com/erfze || twitter
      #FB Page: https://www.facebook.com/yourname || facebook
      #VK Group: https://vk.com/yourname || vk
      #StackOverflow: https://stackoverflow.com/yourname || stack-overflow
      #YouTube: https://youtube.com/yourname || youtube
      #Instagram: https://instagram.com/yourname || instagram
      #Skype: skype:yourname?call|chat || skype
    

    启用你想加入的社交平台即可,笔者只启用了GithubE-MailTwitter

    0x02.4 添加搜索服务

    笔者使用的是Algolia,这篇文章NexT使用文档要详细,可以参考一下。

    不过其中有些内容已经“过时”:

    image

    在设置ACL时,已经不再是复选框样式。


    按部就班地完成后,会在菜单栏出现“搜索”:

    image

    搜索时出现的提示,可以根据自己喜好修改,笔者改为了如下内容:

    # Algolia Search
    algolia_search:
      enable: true
      hits:
        per_page: 10
      labels:
        input_placeholder: Search for Posts
        hits_empty: "抱歉,未找到任何与 ${query} 相符的内容"
        hits_stats: "找到 ${hits} 条内容,耗时 ${time} ms"
    
    image image

    部署到Github上之后出现了一个问题,无法搜索后期提交的文章,这时在本地执行hexo algolia即可。

    0x02.5 设置评论系统及分享功能

    评论使用的DISQUS,需科学上网后方可使用,具体设置参考NexT使用文档/Hexo添加Disqus评论


    分享功能配置文件中指出Baidu Sharejiathis都不支持HTTPS

    # Baidu Share
    # Available value:
    #    button | slide
    # Warning: Baidu Share does not support https.
    #baidushare:
    ##  type: button
    
    # Share
    # This plugin is more useful in China, make sure you known how to use it.
    # And you can find the use guide at official webiste: http://www.jiathis.com/.
    # Warning: JiaThis does not support https.
    #jiathis:
    

    于是使用了needmoreshare2分享。修改主题配置文件:

    needmoreshare2:
      enable: true
      postbottom:
        enable: false #笔者没有开启文章下方的分享按钮
        options:
          iconStyle: default
          boxForm: horizontal
          position: middleRight
          networks: Weibo,Wechat,QQZone,Twitter,Facebook
      float:
        enable: true #开启侧边浮动分享按钮
        options:
          iconStyle: default #box样式过于丑陋,所以使用default
          boxForm: vertical
          position: middleRight
          networks: Weibo,Wechat,QQZone,Twitter,Facebook
    

    0x02.6 公益404

    执行hexo new page 404,之后修改index.md文件:

    ---
    title: 404 Not Found
    date: 2019-08-12 12:38:17
    comments: false
    permalink: /404
    
    ---
    
    <body>
      <script type="text/javascript" src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js" charset="utf-8" homePageUrl="/" homePageName="回到我的主页">
      </script>
      <script src="https://qzone.qq.com/gy/404/data.js" charset="utf-8"></script>
      <script src="https://qzone.qq.com/gy/404/page.js" charset="utf-8"></script>
    </body>
    

    0x02.7 文章末尾添加版权声明

    修改主题配置文件:

    post_copyright:
      enable: true
      license: CC BY-NC-SA 4.0
      license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
    

    许可协议的选取可以参考creativecommons ,笔者选取的是CC BY-NC-SA 4.0

    0x02.9 设置首页显示预览而非全文

    修改主题配置文件:

    auto_excerpt:
      enable: true
      length: 150
    

    之后就可以看到首页的每篇文章只显示预览内容和阅读全文按钮了。

    0x03 绑定域名并推送至Github

    具体操作这篇文章已经描述得很详细了,笔者只提醒一点:执行hexo g之前,在source目录下新建一个CNAME的文件,里面写入你的域名。否则每次hexo deploy之后都要去修改Custom domain

    0x04 更新博客

    1. 执行hexo new "tile_name",进入source\_posts\,可以看到生成的titile_name.md,直接编辑即可。

    2. 编辑完成后,hexo deploy(如果目录结构发生变化,在hexo deploy之前还要执行hexo g)hexo d -g

    0x05 SEO

    SEO的话可以参考hexo的SEO方法Hexo博客Next主题SEO优化方法这两篇文章,其中已经描述得很详尽。


    上述文章中只有一处需要纠正,就是首页title优化部分:其中的{{ theme.keywords }}应该是{{ config.keywords }},这样你在站点配置文件中设置的Keywords才会生效。

    0x06 参考文章

    相关文章

      网友评论

        本文标题:更换博客主题NexT

        本文链接:https://www.haomeiwen.com/subject/izemghtx.html