近期对 Blog 本身的小更新

把建立这个 Blog 以来的小更新罗列一下。

添加搜索功能

使用 js 项目 Simple-Jekyll-Search 为 Blog 添加了简单的静态搜索功能。

具体地,在页面中引用 simple-jekyll-search.min.js,这个可以在 Github 的页面上下载到。页面中还需要包含以下代码块:

<div class="pconly" id="search-container">
    <input type="text" id="search-input" placeholder=" Search.." class="nav_a1" style="border-radius:2px; border:1px solid #DBDBDB;">
    <ul id="results-container" style="visibility: hidden;margin:0;padding:0;position:absolute"></ul>
</div>
<script src="/js/simple-jekyll-search.min.js"></script>
<script>
    window.simpleJekyllSearch = new SimpleJekyllSearch({
    searchInput: document.getElementById('search-input'),
    resultsContainer: document.getElementById('results-container'),
    json: '/search.json',
    searchResultTemplate: '<li style="list-style: none;padding-left:0px;border-radius: 1px;border: 1px solid #DBDBDB;visibility: visible;"><a href="{url}" title="{desc}">{title}</a></li>',
    noResultsText: 'No results found',
    limit: 20,
    fuzzy: false,
    })
</script>

这里参考了 这篇文章 利用 bootstrap 优化了搜索框的外观。

在 Blog 根目录下新建文件 search.json,填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
layout: null
---
[
  {% for post in site.posts %}
    {
      "title"    : "{{ post.title | escape }}",
      "category" : "{{ post.category }}",
      "tags"     : "{{ post.tags | join: ', ' }}",
      "url"      : "{{ site.baseurl }}{{ post.url }}",
      "date"     : "{{ post.date }}"
    } {% unless forloop.last %},{% endunless %}
  {% endfor %}
]

即可按照这些关键字来查找文章。

效果可以在页面顶部查看。

添加评论功能

原有的 solid 主题支持 Gitalk、 disqus 等静态评论功能,但是发现这些在国内环境下并不是很好用。

于是找到了一个静态评论项目:Valine,这个项目利用 LeanCloud 提供的免费数据存储。

为了避免备案的麻烦,我使用了 LeanCloud 国际版,注意使用国际版会导致一些 api 的域名被墙的问题,稍后会提如何解决。

首先注册 LeanCloud 账号,在「设置」中的「应用凭证」获取 App Key 和 App ID。在页面中引用 valine.min.js,再在评论应该出现的地方加入以下代码块,填入相应的变量:

<div id="vcomments"></div>
<script>
    new Valine({
        el: '#vcomments',
        appId: 'Your appID',
        appKey: 'Your appKey',
        placeholder: 'Post a comment here...',
        serverURLs: 'Your Domain',
        visitor: true,
        path: location.pathname
    })
</script>

注意到其中的 serverURLs 这个变量,不是必填的,然而如果不填的话,发送评论的 api 在墙内无法访问。为了解决这个问题,我们可以在 LeanCloud 的「设置」中的「域名绑定」中,依据提示绑定自己的域名。

同时,注意到其中的 visitor 这个变量,也不是必填的,默认为 false。如果设置为 true,则会自动添加一个访问量统计的功能。只要在你想显示访问量的地方填入以下代码块:

<span id="/2023/05/18/BlogUpdate/" class="leancloud_visitors" data-flag-title="近期对 Blog 本身的小更新">
    <p class="post-meta-item-text" style="display: inline; color: #686868">页面访问次数 </em>
    <p class="leancloud-visitors-count" style="display: inline; color: #383838; font-family: Impact"></i>
</span>

即可显示访问量。这个访问量每次刷新都会增加一次,不会对同一 IP 短时间多次访问有限制,所以没什么统计意义。

域名自动续期

网站使用了 freenom 提供的免费域名,但是这个域名每年都要手动续期一次,非常麻烦,前两年我都是靠定时邮件来提醒自己。

但是看到了 freenom_auto_renew 这个项目。虽然项目的 readme 里写没有服务器的用户推荐使用 Koyeb,但是现在这个平台已经需要信用卡扣款验证才能使用。经过尝试,发现阿里云函数比较适合,按量计费价格也很便宜,还有免费额度。

通过 readme 中写的步骤,一步一步配置,这个脚本就会每天运行一次,检测你的域名是否需要续期。

Joy © 2023 Powered by Jekyll and Theme by solid

今日诗词API Valine 评论管理 Github