常见问题

本文解答了一些Icarus常见问题。 如果你的问题没有在这里得到解答,也请阅读 Icarus用户指南, Hexo中文文档, 以及GitHub Issues。 此外,你也可以在GitHub讨论组上向其他Icarus用户请求帮助。

本文同时提供以下语言的翻译:English。

站点

我无法生成我的站点。 / 我在生成站点时遇到错误。

Icarus 6运行在Node.js 14.0或更新的版本上。 它同时依赖Hexo 7.1.1或更高版本(Icarus 6.2.0起支持Hexo 8,而Hexo 8需要Node.js 20.19.0或更新的版本)。 除此之外,请确保所有的Node.js依赖已安装。 你可以在<icarus_directory>/package.json 文件的dependencies部分下找到这些依赖。 如果你是从源码安装的Icarus,请按照Icarus快速上手中的说明,在站点根目录中安装它们。 无论用哪种方式安装,hexo-renderer-inferno都必须列在站点的package.json中,因为Hexo只会加载其中列出的插件;缺少它,Hexo就无法渲染Icarus的布局。 同时,从你的站点中移除所有无用的Node.js依赖,否则它们可能会导致Icarus出现奇怪的问题。

如何更改我的站点的语言?

打开站点根目录下的站点配置文件_config.yml,修改如下设置:

_config.yml
1
2
- language: en
+ language: <语言名>

你可以在<icarus_directory>/languages目录下找到所有可用的翻译。 <语言名>为不带后缀名的翻译文件名。 如果你的语言没有对应的翻译,Icarus会使用英文。

布局

我如何改变页面的宽度?我如何使用单栏/双栏/三栏布局?

如要改变页面的宽度,编辑<icarus_directory>/include/style/responsive.styl这个样式文件。 此文件定义了不同屏幕尺寸下的页面容器宽度。

如要改变挂件或主内容宽度,编辑<icarus_directory>/layout/common/widgets.jsx和<icarus_directory>/layout/layout.jsx。 在这些文件中找到诸如is-12,is-8-tablet,和is-4-widescreen这样的CSS类名。 CSS类名中的数字标志着一个挂件或主内容所占据的栏数量。 数字后的屏幕尺寸,如tablet和widescreen,指代着栏数量生效的屏幕尺寸条件。 修改类名中的数字使主内容栏的栏数量和所有挂件栏的栏数量在相同屏幕尺寸下相加等于12。

例如,为使主内容栏在宽屏(widescreen)下更宽,你可以做出如下修改:

<icarus_directory>/layout/layout.jsx >folded
1
2
3
4
5
6
7
8
 <div class={classname({
column: true,
'order-2': true,
'column-main': true,
'is-12': columnCount === 1,
- 'is-8-tablet is-8-desktop is-8-widescreen': columnCount === 2,
+ 'is-8-tablet is-8-desktop is-9-widescreen': columnCount === 2,
'is-8-tablet is-8-desktop is-6-widescreen': columnCount === 3
<icarus_directory>/layout/common/widgets.jsx >folded
1
2
3
4
5
6
7
 function getColumnSizeClass(columnCount) {
switch (columnCount) {
case 2:
- return 'is-4-tablet is-4-desktop is-4-widescreen';
+ return 'is-4-tablet is-4-desktop is-3-widescreen';
case 3:
return 'is-4-tablet is-4-desktop is-3-widescreen';

你可以参考Bulma文档来获取更多关于布局系统的细节。

下面是一些创建单栏/双栏/三栏布局的提示:

  • 你可以从主题配置中移除所有的挂件,或将widgets设置为null,来创建单栏布局。
  • 你可以将所有的挂件移动到页面的一侧来创建双栏布局。
  • 你可以将挂件放在页面两边来创建三栏布局。

注意,目录挂件只会显示在设置了toc: true(在front-matter或配置文件中设置)的文章和页面上。 如果某一侧边栏中只有目录挂件,它在其他页面上不会占用一栏。

若要更改单个文章或页面的布局,请参考配置文件与优先级。

挂件/评论插件/分享按钮...的布局文件在哪里?我如何个性化内置的挂件/评论插件/分享按钮...?

插件和挂件的布局文件已被移至一个单独的Node.js库中——hexo-component-inferno。 这样,主题开发者可以更好地在不同主题之间复用这些通用组件,并且普通用户可以更简便地覆盖这些内置组件。

若要自定义这些组件,从hexo-component-inferno仓库中拷贝布局文件并把它们放入<icarus_directory>/layout下的相应目录中。 例如,如果你想要自定义Waline评论插件,你可以从hexo-component-inferno仓库中拷贝 src/view/comment/waline.jsx 到<icarus_directory>/layout/comment/waline.jsx。 请拷贝与你安装的版本相同的发布版中的文件(版本号见node_modules/hexo-component-inferno/package.json中的version),因为仓库中最新的代码可能需要更新的版本。 同时像下面这样,把此文件头部../../util/...形式的相对引用改为hexo-component-inferno/lib/util/...:

<icarus_directory>/layout/comment/waline.jsx
1
2
- const { cacheComponent } = require('../../util/cache');
+ const { cacheComponent } = require('hexo-component-inferno/lib/util/cache');

最后,用hexo clean清理你的站点并重新生成HTML文件。

类似地,你也可以覆盖主题内置的静态文件,如 asset/js/insight.js: 把你自己的文件放到主题source目录下的相同路径即可,例如<icarus_directory>/source/js/insight.js。

如果你是通过NPM安装的Icarus,<icarus_directory>就是node_modules/hexo-theme-icarus,升级或重新安装Icarus时,你在这里做的修改都会被覆盖。 如果需要长期修改主题文件,请改为从源码安装Icarus(参见Icarus快速上手和升级指南)。
为什么我修改的布局文件在我刷新页面时没有生效(假设我正在使用hexo server)?

当你使用hexo server启动本地Hexo服务器时,Icarus会缓存布局文件。 如要使布局文件的修改生效,请重启本地服务器。

其他情况下临时生成的数据会被Hexo缓存在内存或者db.json数据库中。 在运行hexo server或hexo generate之前执行hexo clean应该可以解决此问题。

内容

我的图片没有正确显示。 / 我的图片仅在首页显示,却无法在文章页面显示。

请确保你使用了图片的绝对路径(以/开头)。 例如,你的站点位于你域名的子目录下,如https://ppoffice.github.io/hexo-theme-icarus(即站点配置文件_config.yml中 root: /hexo-theme-icarus/),并且你的图片image.jpg放在了source/gallery/目录下。 在Markdown中引用图片时,路径里不要写子目录,例如![Image title](/gallery/image.jpg)。 Markdown渲染器(hexo-renderer-marked,默认开启prependRoot: true)会自动在图片路径前加上root, 如果你自己再写上子目录,它就会出现两次。 而HTML的<img>标签不会被处理,这时需要你自己写上子目录,例如<img src="/hexo-theme-icarus/gallery/image.jpg">。

你也可以像下面这样使用{% img %}这个Hexo标签来自动引用图片:

1
{% img /gallery/image.jpg "Image title" %}

这种情况下,图片路径里同样可以省略网站子目录。 你可以参考Hexo文档来了解更多详情。

如何为文章添加摘要?如何显示“阅读更多”按钮?

在你的文章中添加<!-- more -->标签。 标签前面的文章内容会被标记为摘要,而其后的内容不会显示在文章列表上。

你也可以在文章的front-matter中设置自定义摘要。

some-post.md
1
2
3
4
5
title: 一篇文章
date: 2020-01-01
excerpt: 这是一篇关于...
---
# 文章内容...
我如何加密文章?

使用如hexo-blog-encrypt这样的第三方的Hexo插件。

我如何像这篇文章一样使用炫酷的页面元素?

请参考Bulma文档来了解所有可选的元素和样式。 复制其中的HTML代码段并直接放入你的Markdown文件中。

挂件与插件

我如何才能移除页面上警告我一些配置值没有设置的红色警示信息?

这些警示信息通常在你遗漏一些插件或挂件的配置设置时出现。 例如,Icarus首次运行时生成的_config.icarus.yml开启了评论插件、打赏按钮、分享按钮和若干挂件(如AdSense和follow.it),但它们的配置值都是空的占位值。 请为你想使用的插件或挂件填写配置值。 如果你不想开启某个插件或挂件,把它们从你的主题配置中删掉或注释掉。

例如,注释掉这几行来禁用掉评论插件:

_config.icarus.yml
1
2
3
4
5
6
- comment:
- type: disqus
- shortname:
+ # comment:
+ # type: disqus
+ # shortname:
文章内容有误?请点击此处提交修改。
作者

PPOffice

发布于

2016-01-03

许可协议

CC BY-NC-SA 4.0