Files
josh-blog-source/source/_posts/2020-11-27-hexo-next-busuanzi-issues.md
T
josh c5f8b0a74c simplify old posts' tags and categories
some blog contents are alse modified
2023-04-13 00:32:29 +08:00

6.1 KiB
Raw Blame History

title, tags, categories, abbrlink, copyright, comments, date
title tags categories abbrlink copyright comments date
Hexo NexT 主题不蒜子相关问题汇总
博客
Hexo
Next
Blog
Hexo
e96c9b26 true true 2020-11-27 11:15:21

什么是不蒜子

不蒜子是 Bruce 开发的一款轻量级的网页计数器,可以将网站访问计数直接显示在网页上。

启用不蒜子

NexT 预置了不蒜子提供的网页计数功能。只需要在配置文件中启用即可。

# Show Views / Visitors of the website / page with busuanzi.
# Get more information on http://ibruce.info/2015/04/04/busuanzi
busuanzi_count:
  enable: true                          # 启用不蒜子
  total_visitors: true                  # 网站总访客数
  total_visitors_icon: fa fa-user
  total_views: true                     # 网站总浏览数
  total_views_icon: fa fa-eye
  post_views: true                      # 文章浏览数
  post_views_icon: fa fa-eye

不蒜子和 Live2D 冲突的问题 (2020-11-27)

Hexo 版本:5.2.0

NexT 版本:8.0.2

不蒜子版本: 2.3

问题描述

添加 Live2D 前的不蒜子显示情况如下。

添加 Live2D 后,不蒜子在页面中不显示。

问题原因

经查,添加 Live2D 后网页的不蒜子部分源码的 style 从 "display: inline;" 替换为了 "display: none;"。

<span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv" style="display: none;">
  <span class="post-meta-item-icon">
    <i class="fa fa-eye"></i>
  </span>
  <span class="post-meta-item-text"> 阅读次数:</span>
  <span id="busuanzi_value_page_pv">19</span>
</span>
<span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv" style="display: inline;">
  <span class="post-meta-item-icon">
    <i class="fa fa-eye"></i>
  </span>
  <span class="post-meta-item-text"> 阅读次数:</span>
  <span id="busuanzi_value_page_pv">18</span>
</span>

解决方法

在网页生成引擎中修改代码,去掉不蒜子部分的 id 和 style 属性,重新生成网页即可解决该问题。若将 class 属性一并删除,会导不蒜子部分和前面的其他显示部分缺少分隔符,如下图。

具体需要修改两个文件,next/layout/_third-party/statistics/busuanzi-counter.swig 中修改的是网页页脚部分的不蒜子显示,next/layout/_macro/post.swig 中修改的博客文章阅览数的不蒜子显示。

{%- if theme.busuanzi_count.total_visitors %}
  <span class="post-meta-item" id="busuanzi_container_site_uv" style="display: inline;">
    <!-- ... -->
  </span>
{%- endif %}

<!-- ... -->

{%- if theme.busuanzi_count.total_views %}
  <span class="post-meta-item" id="busuanzi_container_site_pv" style="display: inline;">
    <!-- ... -->
  </span>
{%- endif %}
{%- if not is_index and theme.busuanzi_count.enable and theme.busuanzi_count.post_views %}
  <span class="post-meta-item" title="{{ __('post.views') }}" id="busuanzi_container_page_pv" style="display: inline;">
    <!-- ... -->
  </span>
{%- endif %}

不蒜子和 Live2D 冲突的问题 (2023-04-08)

Hexo 版本:6.3.0

NexT 版本:8.15.1

不蒜子版本: 2.3

重新捣鼓博客的时候发现不蒜子又不显示了,依然已经不维护的 hexo-helper-live2d 插件导致的。2020 年的方法写的模棱两可,NexT 的一些网页架构也有了细微改变,因此将新的解决方法附于下方。很多方法是通过直接修改 NexT 主题下的源文件实现的,但是 NexT 并不推荐这样的写法,因为主题目录下的文件是会随着主题更新而被覆盖的,而且不便于使用 Git 管理。经过寻找,在 NexT 的 Github Issues 中找到了优雅的解决方法。

在 source/_data/styles.styl 中添加如下代码即可解决。

#busuanzi_container_site_uv, #busuanzi_container_site_pv, #busuanzi_container_page_pv {
  display: inline !important;
}

REF:

  1. 上述解决方法来源:【必读】更新说明及常见问题

  2. 这篇文章分析了 hexo-helper-live2d 插件导致不蒜子不显示的根本原因:busuanzi 访问量统计与 live2d 插件同时使用导致 busuanzi 不显示的根本原因以及解决方法