0%

搭建属于自己的博客

洛阳城东桃李花,飞来飞去落谁家?洛阳女儿惜颜色,坐见落花长叹息。今年花落颜色改,明年花开复谁在?已见松柏摧为薪,更闻桑田变成海。古人无复洛城东,今人还对落花风。年年岁岁花相似,岁岁年年人不同。寄言全盛红颜子,应怜半死白头翁。此翁白头真可怜,伊昔红颜美少年。公子王孙芳树下,清歌妙舞落花前。光禄池台文锦绣,将军楼阁画神仙。一朝卧病无相识,三春行乐在谁边?宛转蛾眉能几时?须臾鹤发乱如丝。但看古来歌舞地,唯有黄昏鸟雀悲。 —— 唐·刘希夷 《代悲白头翁》

搭建博客

  1. 安装git
  2. 安装nodejs
  3. 安装hexo
  4. 生成SSH key并添加到github
  5. 初始化项目hexo init blog(名字随便)
  6. 安装所需依赖npm install
  7. 安装发布工具npm install hexo-deployer-git --save
  8. 编辑博客内容(markdown语法自行脑补)
  9. 上传到github hexo g -d
  10. 绑定个人域名(CNAME)
  11. 更换主题、增加搜索、底部增加访问量等都是在配置文件里搞搞

修改主题

  1. 进入博客主题目录cd 博客/themes
  2. 克隆主题文件git clone https://github.com/theme-next/hexo-theme-next.git
  3. 修改主配置文件_config.yml
1
2
3
4
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: hexo-theme-next
  1. 修改主题配置文件,next主题下有四种风格类型的,根据个人爱好开启
1
2
3
4
5
# Schemes
#scheme: Muse
#scheme: Mist
scheme: Pisces
#scheme: Gemini

修改icon

  1. 将选好的icon图片放到目录博客目录/themes/hexo-theme-next/source/images

  2. 修改对应主题的配置文件_config.yml

1
2
3
4
5
6
7
8
9
10
favicon:
#small: /images/favicon-16x16-next.png
#medium: /images/favicon-32x32-next.png
small: /images/kid.jpg
medium: /images/kid.jpg
apple_touch_icon: /images/apple-touch-icon-next.png
safari_pinned_tab: /images/logo.svg
#android_manifest: /images/manifest.json
#ms_browserconfig: /images/browserconfig.xml


添加标签、分类

  1. 添加分类hexo new page categories
  2. 添加标签hexo new page tags
  3. 新建文章的时候指定分类和标签
1
2
3
4
5
6
categories: 
- 测试分类
- 可以设置多个分类
tags:
- 测试标签
- 同样可以设置多个
  1. 添加关于hexo new page about

设置域名访问

  1. 进入source目录cd 博客目录/source
  2. 输出域名到CNAMEecho liusir.me > CNAME
  3. 登录阿里后台,解析域名
    • 记录类型默认选择A-将域名指向一个IPV4地址
    • ping liusirdotme.github.io拿到ip填入记录值

网站地址

  1. npm install hexo-generator-sitemap --save

添加algolia搜索后,修改博客名称经常会出现重复的搜索项,点开后会报404错误

  1. 删除本地.deploy_git目录
  2. 登录algolia,清除索引
  3. 重新生成hexo algolia

博客插入图片

  1. 修改主配置post_asset_folder: true
  2. 安装插件npm install hexo-asset-image --save
  3. 将图片放入和博客文件同名的文件夹下,使用markdown语法引入即可
    • 推送前先清理下缓存hexo clean

Next主题字数统计

  1. 进入博客根目录,安装插件 npm install hexo-symbols-count-time --save
  2. 打开主配置文件
1
2
3
4
5
6
symbols_count_time:
symbols: true # 文章字数统计
time: true # 文章阅读时长
total_symbols: true # 站点总字数统计
total_time: true # 站点总阅读时长
exclude_codeblock: false # 排除代码字数统计
  1. 打开主题配置文件
1
2
3
4
5
6
7
symbols_count_time:
separated_meta: true # 是否另起一行(true的话不和发表时间等同一行)
item_text_post: true # 首页文章统计数量前是否显示文字描述(本文字数、阅读时长)
item_text_total: false # 页面底部统计数量前是否显示文字描述(站点总字数、站点阅读时长)
awl: 4 # Average Word Length
wpm: 275 # Words Per Minute(每分钟阅读词数)
suffix: mins # 后缀
  1. 重新发布下博客,打完收工

添加fork me on GitHub

  1. 选取样式
  2. 修改blog\themes\next\layout\_layout.swig
1
2
3
4
 <div class="{{ container_class }} {% block page_class %}{% endblock %} ">
<div class="headband"></div>

<a target="_blank" href="https://github.com/yourname">![Fork me on GitHub](https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67)</a>
  • 位置<div class="headband"></div>下一行
  • github地址改成对应自己的
  1. 小屏幕不显示fork me on github
    • 修改blog\themes\next\layout\_layout.swig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<head>
{% include '_partials/head.swig' %}
<title>{% block title %}{% endblock %}</title>
<style>
.forkme{
display: none;
}
@media (min-width: 768px) {
.forkme{
display: inline;
}
}
</style>
</head>
  • 去步骤2,嵌套一个div

    1
    2
    3
    <div class="forkme">
    <a target="_blank" href="https://github.com/yourname">![Fork me on GitHub](https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67)</a>
    </div>

添加动漫

  1. 安装插件npm install --save hexo-helper-live2d
  2. 修稿主题配置文件_config.yml,添加以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
live2d:
enable: true
scriptFrom: local
pluginRootPath: live2dw/
pluginJsPath: lib/
pluginModelPath: assets/
tagMode: false
log: false
model:
use: live2d-widget-model-wanko
display:
position: right
width: 150
height: 300
mobile:
show: true
react:
opacity: 0.7
  1. 参考

    • https://github.com/EYHN/hexo-helper-live2d
    • https://github.com/xiazeyu/live2d-widget-models
  2. 动漫选择

    • live2d-widget-model-chitose
    • live2d-widget-model-epsilon2_1
    • live2d-widget-model-gf
    • live2d-widget-model-haru_01
    • live2d-widget-model-haru_02
    • live2d-widget-model-haruto
    • live2d-widget-model-hibiki
    • live2d-widget-model-hijiki
    • live2d-widget-model-izumi
    • live2d-widget-model-koharu
    • live2d-widget-model-miku
    • live2d-widget-model-nico
    • live2d-widget-model-nietzsche
    • live2d-widget-model-ni-j
    • live2d-widget-model-nipsilon
    • live2d-widget-model-nito
    • live2d-widget-model-shizuku
    • live2d-widget-model-tororo
    • live2d-widget-model-tsumiki
    • live2d-widget-model-unitychan
    • live2d-widget-model-wanko
    • live2d-widget-model-z16
  3. BZ发现不蒜子统计总是不起作用,偶尔去翻next主题issue的时候,看到作者说是live2d影响了统计,这就尴尬了

    • 卸载live2d npm uninstall hexo-helper-live2d
    • 修改主题配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    live2d:
    enable: false # change here to false
    scriptFrom: local
    pluginRootPath: live2dw/
    pluginJsPath: lib/
    pluginModelPath: assets/
    tagMode: false
    log: false
    model:
    use: live2d-widget-model-wanko
    display:
    position: right
    width: 50
    height: 150
    mobile:
    show: false
    react:
    opacity: 0.7
    • 重新生成并发布

常见问题

  1. 标题不要有中括号,如[热]门,否则hexo g时会报错
  2. 文章内容不要连着写{#,如shell中求数组长度就是连着写的
  3. 大小写问题
    • 进入博客.deploy_git目录
    • 设置区分大小写 git config core.ignorecase false
    • 重新发布就OK了

next主题hexo generate慢的出奇

一、环境配置

  1. Node.js & npm version
1
2
3
4
5
node -v 
>v11.10.0

npm -v
>6.7.0
  1. 主配置文件_config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

# Site
title: liusir.me
subtitle: 平平淡淡从从容容
description: 天道酬勤 自强不息
keywords: liusir.me
author: 刘三儿
language: zh-CN
timezone: Asia/Shanghai

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://liusir.me
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

# Writing
#new_post_name: :year-:month-:day-:title.md # File name of new posts
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: true
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:

# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 5
order_by: -date

tag_generator:
path: ''
per_page: 1000
# order_by: -date

# Category & Tag
default_category: uncategorized
category_map:
tag_map:

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination
## Set per_page to 0 to disable pagination
per_page: 5
pagination_dir: page

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: hexo-theme-next
#theme: landscape

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@liusir.me:liusirdotme/liusirdotme.github.io.git
branch: master

search:
path: search.xml
field: post
format: html
limit: 10000

# Algolia Search API Key
algolia:
applicationID: 'xxx'
apiKey: 'xxx'
indexName: 'blog'
chunkSize: 5000


#Plugins:
#- hexo-generator-baidu-sitemap
#- hexo-generator-sitemap

#baidusitemap:
# path: baidusitemap.xml
#sitemap:
# path: sitemap.xml



symbols_count_time:
symbols: true # 文章字数统计
time: true # 文章阅读时长
total_symbols: true # 站点总字数统计
total_time: true # 站点总阅读时长
exclude_codeblock: false # 排除代码字数统计


# hexo-tag-cloud
tag_cloud:
textFont: Trebuchet MS, Helvetica
textColor: '#333'
textHeight: 20
outlineColor: '#E2E1D1'
maxSpeed: 0.1
  1. 主题配置文件_config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
# ---------------------------------------------------------------
# Theme Core Configuration Settings
# ---------------------------------------------------------------

# If false, merge configs from `_data/next.yml` into default configuration (rewrite).
# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings.
# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing.
# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config.
override: false

# Allow to cache content generation. Introduced in NexT v6.0.0.
cache:
enable: true

# Redefine custom file paths. Introduced in NexT v6.0.2.
# If commented, will be used default custom file paths.

# For example, you want to put your custom styles file
# outside theme directory in root `source/_data`, set
# `styles: source/_data/styles.styl`
#custom_file_path:
# Default paths: layout/_custom/*
#head: source/_data/head.swig
#header: source/_data/header.swig
#sidebar: source/_data/sidebar.swig

# Default path: source/css/_variables/custom.styl
#variables: source/_data/variables.styl
# Default path: source/css/_mixins/custom.styl
#mixins: source/_data/mixins.styl
# Default path: source/css/_custom/custom.styl
#styles: source/_data/styles.styl


# ---------------------------------------------------------------
# Site Information Settings
# ---------------------------------------------------------------

# To get or check favicons visit: https://realfavicongenerator.net
# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory.

# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory.
# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes.

# For example, you put your favicons into `hexo-site/source/images` directory.
# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo.
favicon:
#small: /images/favicon-16x16-next.png
#medium: /images/favicon-32x32-next.png
small: /images/kid.jpg
medium: /images/kid.jpg
apple_touch_icon: /images/apple-touch-icon-next.png
safari_pinned_tab: /images/logo.svg
#android_manifest: /images/manifest.json
#ms_browserconfig: /images/browserconfig.xml

# Set rss to false to disable feed link.
# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`.
# Set rss to specific value if you have burned your feed already.
rss:

footer:
# Specify the date when the site was setup.
# If not defined, current year will be used.
#since: 2015

# Icon between year and copyright info.
icon:
# Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons
# `heart` is recommended with animation in red (#ff0000).
name: user
# If you want to animate the icon, set it to true.
animated: false
# Change the color of icon, using Hex Code.
color: "#808080"

# If not defined, will be used `author` from Hexo main config.
copyright:
# -------------------------------------------------------------
powered:
# Hexo link (Powered by Hexo).
enable: false
# Version info of Hexo after Hexo link (vX.X.X).
version: false

theme:
# Theme & scheme info link (Theme - NexT.scheme).
enable: false
# Version info of NexT after scheme info (vX.X.X).
version: false
# -------------------------------------------------------------
# Any custom text can be defined here.
#custom_text: Hosted by <a target="_blank" rel="external nofollow" href="https://pages.coding.me"><b>Coding Pages</b></a>

# ---------------------------------------------------------------
# SEO Settings
# ---------------------------------------------------------------

# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog.
# See: https://support.google.com/webmasters/answer/139066
# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com )
canonical: true

# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization.
seo: false

# If true, will add site-subtitle to index page, added in main hexo config.
# subtitle: Subtitle
index_with_subtitle: false


# ---------------------------------------------------------------
# Menu Settings
# ---------------------------------------------------------------

# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives).
# Usage: `Key: /link/ || icon`
# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive.
# Value before `||` delimeter is the target link.
# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded.
menu:
home: / || home
about: /about/ || user
tags: /tags/ || tags
categories: /categories/ || th
archives: /archives/ || archive
#schedule: /schedule/ || calendar
#sitemap: /sitemap.xml || sitemap
#commonweal: /404/ || heartbeat

# Enable/Disable menu icons / item badges.
menu_settings:
icons: true
badges: false

# ---------------------------------------------------------------
# Scheme Settings
# ---------------------------------------------------------------

# Schemes
#scheme: Muse
#scheme: Mist
scheme: Pisces
#scheme: Gemini


# ---------------------------------------------------------------
# Sidebar Settings
# ---------------------------------------------------------------

# Posts / Categories / Tags in sidebar.
site_state: true

# Social Links.
# Usage: `Key: permalink || icon`
# Key is the link label showing to end users.
# Value before `||` delimeter is the target permalink.
# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded.
social:
GitHub: https://github.com/liusirdotnet || github
E-Mail: mailto:416668235@qq.com || envelope
#Google: https://plus.google.com/yourname || google
#Twitter: https://twitter.com/liusirdotnet || twitter
#FB Page: https://www.facebook.com/liusirdotnet || 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

social_icons:
enable: true
icons_only: false
transition: false
# Dependencies: exturl: true in Tags Settings section below.
# To encrypt links above use https://www.base64encode.org
# Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github`
exturl: false

# Follow me on GitHub banner in right-top corner.
# Usage: `permalink || title`
# Value before `||` delimeter is the target permalink.
# Value after `||` delimeter is the title and aria-label name.
#github_banner: https://github.com/yourname || Follow me on GitHub

# Blog rolls
links_icon: link
links_title: Links
links_layout: block
#links_layout: inline
#links:
#Title: http://example.com/

# Sidebar Avatar
avatar:
# in theme directory(source/images): /images/avatar.gif
# in site directory(source/uploads): /uploads/avatar.gif
# You can also use other linking images.
#url: /images/avatar.gif
url: /images/kid.jpg
# If true, the avatar would be dispalyed in circle.
rounded: true
# The value of opacity should be choose from 0 to 1 to set the opacity of the avatar.
opacity: 1
# If true, the avatar would be rotated with the cursor.
rotated: false

# Table Of Contents in the Sidebar
toc:
enable: true

# Automatically add list number to toc.
number: true

# If true, all words will placed on next lines if header width longer then sidebar width.
wrap: false

# Creative Commons 4.0 International License.
# http://creativecommons.org/
# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero
#creative_commons: by-nc-sa
#creative_commons:

sidebar:
# Sidebar Position, available value: left | right (only for Pisces | Gemini).
position: left
#position: right

# Sidebar Display, available value (only for Muse | Mist):
# - post expand on posts automatically. Default.
# - always expand for all pages automatically
# - hide expand only when click on the sidebar toggle icon.
# - remove Totally remove sidebar including sidebar toggle.
display: post
#display: always
#display: hide
#display: remove

# Sidebar offset from top menubar in pixels (only for Pisces | Gemini).
offset: 12

# Back to top in sidebar (only for Pisces | Gemini).
b2t: false

# Scroll percent label in b2t button.
scrollpercent: false

# Enable sidebar on narrow view (only for Muse | Mist).
onmobile: false


# ---------------------------------------------------------------
# Post Settings
# ---------------------------------------------------------------

# Automatically scroll page to section which is under <!-- more --> mark.
scroll_to_more: true

# Automatically saving scroll position on each post/page in cookies.
save_scroll: false

# Automatically excerpt description in homepage as preamble text.
excerpt_description: true

# Automatically Excerpt. Not recommend.
# Please use <!-- more --> in the post to control excerpt accurately.
auto_excerpt:
enable: true
length: 150

# Post meta display settings
post_meta:
item_text: true
created_at: true
updated_at:
enabled: false
# If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created).
# And if post will edited in same day as created, edited time will show in popup title under created time label.
# If false show anyway, but if post edited in same day, show only edited time.
another_day: true
categories: true

# Post wordcount display settings
# Dependencies: https://github.com/theme-next/hexo-symbols-count-time
symbols_count_time:
separated_meta: false # 是否另起一行(true的话不和发表时间等同一行)
item_text_post: false # 首页文章统计数量前是否显示文字描述(本文字数、阅读时长)
item_text_total: false # 页面底部统计数量前是否显示文字描述(站点总字数、站点阅读时长)
awl: 4 # Average Word Length
wpm: 275 # Words Per Minute(每分钟阅读词数)
suffix: mins

# wordcount 2019-10-11 不起作用
#post_wordcount:
# item_text: true
# wordcount: true
# min2read: true
# totalcount: true
# separated_meta: true

codeblock:
# Manual define the border radius in codeblock
# Leave it empty for the default 1
border_radius:
# Add copy button on codeblock
copy_button:
enable: false
# Show text copy result
show_result: false

# Wechat Subscriber
#wechat_subscriber:
#enabled: true
#qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg
#description: ex. subscribe to my blog by scanning my public wechat account

# Reward
#reward_comment: 这怎么好意思开口。。。
#wechatpay: /images/wxpay.jpeg
#alipay: /images/alipay.jpeg
#bitcoin: /images/bitcoin.png

# Related popular posts
# Dependencies: https://github.com/tea3/hexo-related-popular-posts
related_posts:
enable: false
title: # custom header, leave empty to use the default one
display_in_home: false
params:
maxCount: 5
#PPMixingRate: 0.0
#isDate: false
#isImage: false
#isExcerpt: false

# Declare license on posts
post_copyright:
enable: false
license: <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="external nofollow" target="_blank">CC BY-NC-SA 4.0</a>

# Post edit
# Dependencies: https://github.com/hexojs/hexo-deployer-git
post_edit:
enable: false
url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source.
# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit.


# ---------------------------------------------------------------
# Misc Theme Settings
# ---------------------------------------------------------------

# Reduce padding / margin indents on devices with narrow width.
mobile_layout_economy: false

# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep).
android_chrome_color: "#222"

# Custom Logo.
# !!Only available for Default Scheme currently.
# Options:
# enabled: [true/false] - Replace with specific image
# image: url-of-image - Images's url
custom_logo:
enabled: false
image:

# Code Highlight theme
# Available values: normal | night | night eighties | night blue | night bright
# https://github.com/chriskempson/tomorrow-theme
highlight_theme: normal

# Enable "cheers" for archive page.
cheers_enabled: true

# Manual define the max content width
# !!Only available for Gemini Scheme currently
# Leave it empty for the default 75% (suggest not less than 1000px)
#max_content_width: 1000px

# Manual define the sidebar width
# !!Only available for Gemini Scheme currently
# Leave it empty for the default 240
sidebar_width:

# ---------------------------------------------------------------
# Font Settings
# - Find fonts on Google Fonts (https://www.google.com/fonts)
# - All fonts set here will have the following styles:
# light, light italic, normal, normal italic, bold, bold italic
# - Be aware that setting too much fonts will cause site running slowly
# - Introduce in 5.0.1
# ---------------------------------------------------------------
# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844
# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`):
# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS
# ---------------------------------------------------------------
font:
enable: false

# Uri of fonts host. E.g. //fonts.googleapis.com (Default).
host:

# Font options:
# `external: true` will load this font family from `host` above.
# `family: Times New Roman`. Without any quotes.
# `size: xx`. Use `px` as unit.

# Global font settings used for all elements in <body>.
global:
external: true
family: Lato
size:

# Font settings for Headlines (H1, H2, H3, H4, H5, H6).
# Fallback to `global` font settings.
headings:
external: true
family:
size:

# Font settings for posts.
# Fallback to `global` font settings.
posts:
external: true
family:

# Font settings for Logo.
# Fallback to `global` font settings.
logo:
external: true
family:
size:

# Font settings for <code> and code blocks.
codes:
external: true
family:
size:


# ---------------------------------------------------------------
# Third Party Services Settings
# ---------------------------------------------------------------

# Math Equations Render Support
math:
enable: false

# Default(true) will load mathjax/katex script on demand
# That is it only render those page who has 'mathjax: true' in Front Matter.
# If you set it to false, it will load mathjax/katex srcipt EVERY PAGE.
per_page: true

engine: mathjax
#engine: katex

# hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support.
mathjax:
# Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China
cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML
# For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org).
#cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
# For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com).
#cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML
# For automatic detect latest version link to MathJax.js and get from Bootcss.
#cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML

# hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin)
# needed to full Katex support.
katex:
# Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China
cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css
# CDNJS, provided by cloudflare, maybe the best CDN, but not works in China
#cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css
# Bootcss, works great in China, but not so well in other region
#cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css

# Han Support
# Dependencies: https://github.com/theme-next/theme-next-han
han: false

# Pangu Support
# Dependencies: https://github.com/theme-next/theme-next-pangu
# For more information: https://github.com/vinta/pangu.js
pangu: false

# Swiftype Search API Key
#swiftype_key:

# Baidu Analytics ID
#baidu_analytics:

# Disqus
disqus:
enable: false
shortname:
count: true
lazyload: false

# Hypercomments
#hypercomments_id:

# changyan
changyan:
enable: false
appid:
appkey:


# Valine.
# You can get your appid and appkey from https://leancloud.cn
# more info please open https://valine.js.org
valine:
enable: false
appid: # your leancloud application appid
appkey: # your leancloud application appkey
notify: false # mail notifier , https://github.com/xCss/Valine/wiki
verify: false # Verification code
placeholder: Just go go # comment box placeholder
avatar: mm # gravatar style
guest_info: nick,mail,link # custom comment header
pageSize: 10 # pagination size


# Support for youyan comments system.
# You can get your uid from http://www.uyan.cc
#youyan_uid: your uid

# Support for LiveRe comments system.
# You can get your uid from https://livere.com/insight/myCode (General web site)
livere_uid: xxx

# Gitment
# Introduction: https://imsun.net/posts/gitment-introduction/
gitment:
enable: false
mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway
count: true # Show comments count in post meta area
lazy: false # Comments lazy loading with a button
cleanly: false # Hide 'Powered by ...' on footer, and more
language: # Force language, or auto switch by theme
github_user: # MUST HAVE, Your Github Username
github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments
client_id: # MUST HAVE, Github client id for the Gitment
client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment
proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect
redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled

# 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:
##uid: Get this uid from http://www.jiathis.com/

#add_this_id:

# NeedMoreShare2
# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2
# See: https://github.com/revir/need-more-share2
# Also see: https://github.com/DzmVasileusky/needShareButton
# iconStyle: default | box
# boxForm: horizontal | vertical
# position: top / middle / bottom + Left / Center / Right
# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit,
# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot,
# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine,
# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru
needmoreshare2:
enable: false
postbottom:
enable: false
options:
iconStyle: box
boxForm: horizontal
position: bottomCenter
networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook
float:
enable: false
options:
iconStyle: box
boxForm: horizontal
position: middleRight
networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook

# Google Webmaster tools verification setting
# See: https://www.google.com/webmasters/
#google_site_verification:

# Google Analytics
#google_analytics:

# Bing Webmaster tools verification setting
# See: https://www.bing.com/webmaster/
#bing_site_verification:

# Yandex Webmaster tools verification setting
# See: https://webmaster.yandex.ru/
#yandex_site_verification:

# CNZZ count
#cnzz_siteid:

# Application Insights
# See https://azure.microsoft.com/en-us/services/application-insights/
# application_insights:

# Post widgets & FB/VK comments settings.
# ---------------------------------------------------------------
# Facebook SDK Support.
# https://github.com/iissnan/hexo-theme-next/pull/410
facebook_sdk:
enable: false
app_id: #<app_id>
fb_admin: #<user_id>
like_button: #true
webmaster: #true

# Facebook comments plugin
# This plugin depends on Facebook SDK.
# If facebook_sdk.enable is false, Facebook comments plugin is unavailable.
facebook_comments_plugin:
enable: false
num_of_posts: 10 # min posts num is 1
width: 100% # default width is 550px
scheme: light # default scheme is light (light or dark)

# VKontakte API Support.
# To get your AppID visit https://vk.com/editapp?act=create
vkontakte_api:
enable: false
app_id: #<app_id>
like: true
comments: true
num_of_posts: 10

# Star rating support to each article.
# To get your ID visit https://widgetpack.com
rating:
enable: false
id: #<app_id>
color: fc6423
# ---------------------------------------------------------------

# Show number of visitors to each article.
# You can visit https://leancloud.cn get AppID and AppKey.
leancloud_visitors:
enable: false
app_id: #<app_id>
app_key: #<app_key>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
# If you don't care about security in lc counter and just want to use it directly
# (without hexo-leancloud-counter-security plugin), set the `security` to `false`.
security: true
betterPerformance: false

# Another tool to show number of visitors to each article.
# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId
# visit https://firebase.google.com/docs/firestore/ to get more information about firestore
firestore:
enable: false
collection: articles #required, a string collection name to access firestore database
apiKey: #required
projectId: #required
bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill

# 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: user
total_views: true
total_views_icon: eye
post_views: true
post_views_icon: eye


# Tencent analytics ID
# tencent_analytics:

# Tencent MTA ID
# tencent_mta:


# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
baidu_push: true

# Google Calendar
# Share your recent schedule to others via calendar page
#
# API Documentation:
# https://developers.google.com/google-apps/calendar/v3/reference/events/list
calendar:
enable: false
calendar_id: <required>
api_key: <required>
orderBy: startTime
offsetMax: 24
offsetMin: 4
timeZone:
showDeleted: false
singleEvents: true
maxResults: 250

# Algolia Search
# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md
# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search
algolia_search:
enable: true
hits:
per_page: 20
labels:
input_placeholder: 请输入查找内容
hits_empty: "Sorry...未找到 ${query} 相关内容"
#hits_stats: "${hits} results found in ${time} ms"
hits_stats: "Congratulations!找到如下内容 ${hits}"

# Local search
# Dependencies: https://github.com/theme-next/hexo-generator-searchdb
local_search:
enable: false
# if auto, trigger search by changing input
# if manual, trigger search by pressing enter key or search button
trigger: auto
# show top n results per article, show all results by setting to -1
top_n_per_article: 1
# unescape html strings to the readable one
unescape: false

# Bookmark Support
# Dependencies: https://github.com/theme-next/theme-next-bookmark
bookmark:
enable: false
# if auto
# - save the reading position when closing the page
# - or clicking the bookmark-icon
# if manual, only save it by clicking the bookmark-icon
save: auto


# ---------------------------------------------------------------
# Tags Settings
# ---------------------------------------------------------------

# External URL with BASE64 encrypt & decrypt.
# Usage: {% exturl text url "title" %}
# Alias: {% extlink text url "title" %}
exturl: false

# Note tag (bs-callout).
note:
# Note tag style values:
# - simple bs-callout old alert style. Default.
# - modern bs-callout new (v2-v3) alert style.
# - flat flat callout style with background, like on Mozilla or StackOverflow.
# - disabled disable all CSS styles import of note tag.
style: simple
icons: false
border_radius: 3
# Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
# Offset also applied to label tag variables. This option can work with disabled note tag.
light_bg_offset: 0

# Label tag.
label: true

# Tabs tag.
tabs:
enable: true
transition:
tabs: false
labels: true
border_radius: 0

# Reading progress bar
# Dependencies: https://github.com/theme-next/theme-next-reading-progress
reading_progress:
enable: false
color: "#37c6c0"
height: 2px


#! ---------------------------------------------------------------
#! DO NOT EDIT THE FOLLOWING SETTINGS
#! UNLESS YOU KNOW WHAT YOU ARE DOING
#! ---------------------------------------------------------------

# Use velocity to animate everything.
motion:
enable: true
async: false
transition:
# Transition variants:
# fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut
# swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut
# bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut
# slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut
# slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut
# perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut
post_block: fadeIn
post_header: slideDownIn
post_body: slideDownIn
coll_header: slideLeftIn
# Only for Pisces | Gemini.
sidebar: slideUpIn

# Fancybox. There is support for old version 2 and new version 3.
# Please, choose only any one variant, do not need to install both.
# For install 2.x: https://github.com/theme-next/theme-next-fancybox
# For install 3.x: https://github.com/theme-next/theme-next-fancybox3
fancybox: false

# Added switch option for separated repo in 6.0.0.
# Dependencies: https://github.com/theme-next/theme-next-fastclick
fastclick: false

# Added switch option for separated repo in 6.0.0.
# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload
lazyload: false

# Progress bar in the top during page loading.
# Dependencies: https://github.com/theme-next/theme-next-pace
pace: false
# Themes list:
#pace-theme-big-counter
#pace-theme-bounce
#pace-theme-barber-shop
#pace-theme-center-atom
#pace-theme-center-circle
#pace-theme-center-radar
#pace-theme-center-simple
#pace-theme-corner-indicator
#pace-theme-fill-left
#pace-theme-flash
#pace-theme-loading-bar
#pace-theme-mac-osx
#pace-theme-minimal
# For example
# pace_theme: pace-theme-center-simple
pace_theme: pace-theme-minimal

# Canvas-nest
# Dependencies: https://github.com/theme-next/theme-next-canvas-nest
canvas_nest: false

# JavaScript 3D library.
# Dependencies: https://github.com/theme-next/theme-next-three
# three_waves
three_waves: false
# canvas_lines
canvas_lines: false
# canvas_sphere
canvas_sphere: false

# Only fit scheme Pisces
# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon
# Canvas-ribbon
# size: The width of the ribbon.
# alpha: The transparency of the ribbon.
# zIndex: The display level of the ribbon.
canvas_ribbon:
enable: true
size: 300
alpha: 0.6
zIndex: -1

# Script Vendors.
# Set a CDN address for the vendor you want to customize.
# For example
# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
# Be aware that you should use the same version as internal ones to avoid potential problems.
# Please use the https protocol of CDN files when you enable https on your site.
vendors:
# Internal path prefix. Please do not edit it.
_internal: lib

# Internal version: 2.1.3
jquery:

# Internal version: 2.1.5
# See: http://fancyapps.com/fancybox/
fancybox:
fancybox_css:

# Internal version: 1.0.6
# See: https://github.com/ftlabs/fastclick
fastclick:

# Internal version: 1.9.7
# See: https://github.com/tuupola/jquery_lazyload
lazyload:

# Internal version: 1.2.1
# See: http://VelocityJS.org
velocity:

# Internal version: 1.2.1
# See: http://VelocityJS.org
velocity_ui:

# Internal version: 0.7.9
# See: https://faisalman.github.io/ua-parser-js/
ua_parser:

# Internal version: 4.6.2
# See: http://fontawesome.io/
fontawesome:

# Internal version: 1
# https://www.algolia.com
algolia_instant_js:
algolia_instant_css:

# Internal version: 1.0.2
# See: https://github.com/HubSpot/pace
# Or use direct links below:
# pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js
# pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css
pace:
pace_css:

# Internal version: 1.0.0
# https://github.com/hustcc/canvas-nest.js
canvas_nest:

# three
three:

# three_waves
# https://github.com/jjandxa/three_waves
three_waves:

# three_waves
# https://github.com/jjandxa/canvas_lines
canvas_lines:

# three_waves
# https://github.com/jjandxa/canvas_sphere
canvas_sphere:

# Internal version: 1.0.0
# https://github.com/zproo/canvas-ribbon
canvas_ribbon:

# Internal version: 3.3.0
# https://github.com/ethantw/Han
Han:

# Internal version: 3.3.0
# https://github.com/vinta/pangu.js
pangu:

# needMoreShare2
# https://github.com/revir/need-more-share2
needmoreshare2_js:
needmoreshare2_css:

# bookmark
# Internal version: 1.0.0
# https://github.com/theme-next/theme-next-bookmark
bookmark:

# reading_progress
# Internal version: 1.0
# https://github.com/theme-next/theme-next-reading-progress
# Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js
reading_progress:

# valine comment
# Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js
valine:


# Assets
css: css
js: js
images: images

#flowchart:
# raphael: # optional, the source url of raphael.js
# flowchart: # optional, the source url of flowchart.js
# options: # options used for `drawSVG`
  1. Hexo插件列表(npm ls --depth 0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
hexo-site@0.0.0 /Users/liuyulong/liusir.me
├── hexo@3.9.0
├── hexo-algolia@1.3.1
├── hexo-deployer-git@2.0.0
├── hexo-generator-archive@0.1.5
├── hexo-generator-category@0.1.3
├── hexo-generator-index@0.2.1
├── hexo-generator-searchdb@1.1.0
├── hexo-generator-sitemap@1.2.0
├── hexo-generator-tag@0.2.0
├── hexo-renderer-ejs@0.3.1
├── hexo-renderer-marked@2.0.0
├── hexo-renderer-stylus@0.3.3
├── hexo-server@0.3.3
├── hexo-symbols-count-time@0.6.3
├── hexo-tag-cloud@2.1.1
└── hexo-wordcount@6.0.1
  1. package.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "3.9.0"
},
"dependencies": {
"hexo": "^3.9.0",
"hexo-algolia": "^1.3.1",
"hexo-deployer-git": "^2.0.0",
"hexo-generator-archive": "^0.1.5",
"hexo-generator-category": "^0.1.3",
"hexo-generator-index": "^0.2.1",
"hexo-generator-searchdb": "^1.1.0",
"hexo-generator-sitemap": "^1.2.0",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.1",
"hexo-renderer-marked": "^2.0.0",
"hexo-renderer-stylus": "^0.3.3",
"hexo-server": "^0.3.3",
"hexo-symbols-count-time": "^0.6.2",
"hexo-tag-cloud": "2.1.*",
"hexo-wordcount": "^6.0.1"
}
}

hexo algolia报错:Record at the position 3 objectID=xxx is too big size

  1. hexo博客添加algolia搜索,每次更新博客后都要执行已给hexo algolia命令以同步更新algoliasearch,某天突然报错了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
INFO  [hexo-algolia] 552 records to index (post, page).
INFO [hexo-algolia] Indexing chunk 1 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 2 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 3 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 4 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 5 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 6 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 7 of 12 (50 records)
ERROR [hexo-algolia] Record at the position 3 objectID=xxx is too big size=10592 bytes. Contact us if you need an extended quota
INFO [hexo-algolia] Indexing chunk 8 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 9 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 10 of 12 (50 records)
INFO [hexo-algolia] Indexing chunk 11 of 12 (50 records)
ERROR [hexo-algolia] Record at the position 30 objectID=yyy is too big size=10773 bytes. Contact us if you need an extended quota
INFO [hexo-algolia] Indexing chunk 12 of 12 (2 records)
INFO [hexo-algolia] Indexing done.
  1. 错误原因:每次更新完博客后,执行完hexo algolia命令后,默认的js方法会将标题、简要等信息推送到algolia,推送信息的大小是有限制的。

  2. 解决方法

    • 修改/blog path/node_modules/hexo-algolia/lib/command.js
    • 找到以下内容
1
2
3
4
5
6
7
8
9
10
 var INDEXED_PROPERTIES = [
'title',
'date',
'updated',
'slug',
'excerpt',
'permalink',
'layout',
'image'
];
  • 根据个人情况选择注释一部分就行了,如:
1
2
3
4
5
6
7
8
9
10
var INDEXED_PROPERTIES = [
'title',
//'date',
//'updated',
'slug',
//'excerpt',
'permalink',
//'layout',
//'image'
];

基于TravisCI实现hexo博客持续继承

一、Travis CI

  1. 持续集成CI(Continuous Integration),一种自动编译和发布代码的技术。
  2. Travis CI是在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器,在网页上点几下就好,用起来更方便。它对开源项目是免费的,并且与Github实现了无缝衔接。

二、原理

local-github-travis

三、开始实现(https://www.travis-ci.com/)

github上有两个仓库,其中public的库就是当前博客的静态文件库,private是博客源文件,即md文件。

  1. 登录博客所在的Github账号,生成access tokens,在https://github.com/settings/tokens->Personal access tokens
    access

  2. 通过Github授权登录Travis CI官网

版本 主页 特色
免费版 https://travis-ci.org/ 为开源项目提供免费服务
收费版 https://travis-ci.com/ 可以部署 GitHub 私有仓库
  1. 将Github生成的access token添加至Travis CI

    • 操作步骤为More options>Setting>Environment Variables
    • Name随便(下面.travis.yml文件会用到),Value是Github生成的access token,其余默认即可,最后点击Add按钮
  2. 回到本地博客目录,添加.travis.yml文件,并加入以下配置信息,具体根据自己情况而定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 指定语言环境
language: node_js

# 指定需要sudo权限
sudo: required

# 指定node_js版本
node_js:
- v11.10.0

# 指定缓存模块,可选。缓存可加快编译速度。
cache:
directories:
- node_modules

#git:
# submodules: true

# 指定博客的仓库地址
env:
global:
- GH_REF: https://github.com/liusirdotme/liusirdotme.github.io.git
- GH: yourtoken

# 指定博客分支,因人而异。hexo博客源码托管在独立repo则不用设置此项
#branches:
# only:
# - blog-resource

before_install:
- git clone https://github.com/theme-next/hexo-theme-next.git themes/next
- npm install -g cnpm --registry=https://registry.npm.taobao.org
- cnpm install -g hexo-cli

# Start: Build Lifecycle
install:
- cnpm install
- cnpm install hexo-algolia
- cnpm install hexo-deployer-git --save
- cnpm install hexo-generator-archive
- cnpm install hexo-generator-category
- cnpm install hexo-generator-index
- cnpm install hexo-generator-searchdb
- cnpm install hexo-generator-sitemap
- cnpm install hexo-generator-tag
- cnpm install hexo-renderer-marked
- cnpm install hexo-renderer-stylus
- cnpm install hexo-helper-live2d
- cnpm install hexo-renderer-ejs
- cnpm install hexo-symbols-count-time
- cnpm install hexo-tag-cloud
- cnpm install hexo-wordcount

# 执行清缓存,生成网页操作
script:
- hexo clean
- hexo generate

# 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
- git config --global user.name "yourname"
- git config --global user.email "youremail"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号,单引号无效!
- sed -i "s/gh_token/${GH}/g" ./_config.yml #GH为access_token(跟TravisCI后台保持一致),GH_REF为博客仓库,两者需跟上面保持一致
- hexo deploy
# End: Build LifeCycle
  1. 修改本地md文件,推送到github,查看页面是否同步更改。也可在TravisCI后台看到,Running部分。

使用以上方法,每次都要clone的主题,这样导致本地主题的配置无法使用。

可以在脚本执行那儿把本地的配置复制一份过去,换成scheme: Pisces,不过这样导致的结果是generate时运行超时,即超过10min没有输出任务就自动退出了。当然也可以通过写一个脚本,让任务持续输出,感觉好麻烦,还是在本地generate。

四、参考

  1. 参考一
  2. 参考二
  3. 参考三

添加自定义友链页面

一、步骤

  1. 新增links页面hexo new page links

    • 在博客根目录/source下会生成一个links文件夹,打开其中的index.md文件,在头部写入type: links,这个一定要写
  2. 主题配置文件中menu下添加:links: /links/ || link

  3. /themes/next/languages/zh-Hans.yml文件中menu下增加中文描述links: 友链,即把英文转为中文

  4. 修改模板

    • /themes/next/layout/新建links.swig,内容如下:
    • mac下样式还行,Window大屏幕下有点儿变形,修改width: 300px;width: 30%;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
      {% block content %}
    {######################}
    {### LINKS BLOCK ###}
    {######################}

    <div id="links">
    <style>

    #links{
    margin-top: 5rem;
    }

    .links-content{
    margin-top:1rem;
    }

    .link-navigation::after {
    content: " ";
    display: block;
    clear: both;
    }

    .card {
    width: 300px;
    font-size: 1rem;
    padding: 10px 20px;
    border-radius: 4px;
    transition-duration: 0.15s;
    margin-bottom: 1rem;
    display:flex;
    }
    .card:nth-child(odd) {
    float: left;
    }
    .card:nth-child(even) {
    float: right;
    }
    .card:hover {
    transform: scale(1.1);
    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
    }
    .card a {
    border:none;
    }
    .card .ava {
    width: 3rem!important;
    height: 3rem!important;
    margin:0!important;
    margin-right: 1em!important;
    border-radius:4px;

    }
    .card .card-header {
    font-style: italic;
    overflow: hidden;
    width: 236px;
    }
    .card .card-header a {
    font-style: normal;
    color: #2bbc8a;
    font-weight: bold;
    text-decoration: none;
    }
    .card .card-header a:hover {
    color: #d480aa;
    text-decoration: none;
    }
    .card .card-header .info {
    font-style:normal;
    color:#a3a3a3;
    font-size:14px;
    min-width: 0;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    }
    </style>
    <div class="links-content">
    <div class="link-navigation">

    {% for link in theme.mylinks %}

    <div class="card">
    <img class="ava" src="{{ link.avatar }}"/>
    <div class="card-header">
    <div>
    <a href="{{ link.site }}" target="_blank"> {{ link.nickname }}</a>
    <a href="{{ link.site }}" target="_blank"><span class="focus-links">关注</span></a>
    </div>
    <div class="info">{{ link.info }}</div>
    </div>
    </div>

    {% endfor %}

    </div>
    {{ page.content }}
    </div>
    </div>

    {##########################}
    {### END LINKS BLOCK ###}
    {##########################}
    {% endblock %}
    • 修改/themes/next/layout/page.swig文件

      • block title部分加入以下代码:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      {% block title %}
      {%- set page_title_suffix = ' | ' + title %}
      {%- if page.type === 'categories' and not page.title %}
      {{- __('title.category') + page_title_suffix }}
      {%- elif page.type === 'tags' and not page.title %}
      {{- __('title.tag') + page_title_suffix }}
      <!-- 友情链接-->
      {%- elif page.type === 'links' and not page.title %}
      {{- __('title.links') + page_title_suffix }}
      {%- elif page.type === 'schedule' and not page.title %}
      {{- __('title.schedule') + page_title_suffix }}
      {%- else %}
      {{- page.title + page_title_suffix }}
      {%- endif %}
      {% endblock %}
      • PAGE BODY
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      {% elif page.type === 'categories' %}
      <div class="category-all-page">
      <div class="category-all-title">
      {{ _p('counter.categories', site.categories.length) }}
      </div>
      <div class="category-all">
      {{ list_categories() }}
      </div>
      </div>

      {% elif page.type === 'links' %}
      {% include 'links.swig' %}
  5. 在主题的配置文件_config.yml下配置友链,如:

1
2
3
4
5
mylinks:
- nickname: AnFrank #友链名称
site: https://enfangzhong.github.io/ #友链地址
info: 既可以早九晚五又可以浪迹天涯。 #友链说明
avatar: https://enfangzhong.github.io/images/avatar.jpg #友链头像

二、参考

  1. 参考一
  2. fontawesome

开启评论功能

一、介绍

  1. 可用的评论系统

二、开干(使用来必力)

  1. 来必力官网注册并登录
  2. 选择导航栏的安装,选择City免费版
  3. 申请

申请

  1. 拿到data-uid

成功

  1. 去博客主题目录,修改配置文件:livere_uid: data-uid

  2. 打完收工

评论


加入豆瓣电影读书等

一、步骤(Next主题)

  1. 新增电影导航栏

    • hexo new page movies
    • 修改主题下配置文件_config.yml,新增movies项,具体语法见配置说明
    1
    2
    3
    4
    5
    6
    7
    8
    menu:
    home: / || home
    about: /about/ || user
    tags: /tags/ || tags
    categories: /categories/ || th
    archives: /archives/ || archive
    movies: /movies/ || film
    links: /links/ || link
    • 修改themes/next/languages/zh-CN.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    menu:
    home: 首页
    archives: 归档
    categories: 分类
    tags: 标签
    about: 关于
    search: 搜索
    schedule: 日程表
    sitemap: 站点地图
    commonweal: 公益 404
    music: 音乐
    movies: 电影
    links: 友链
  2. 安装插件npm install hexo-douban-card --save

  3. 编辑source/movies/index.md

1
{% douban movie 24745500 %}
  1. hexo s,正常情况下就可以预览了

二、报错

  1. unknown path
1
2
3
FATAL {                                                                                                                 
err: Template render error: (unknown path)
Error: template not found: your_path\node_modules\hexo-douban-card\movieCard.html
  • 跟着官网来操作的,正常不应该出错的,唯一的可能就是版本问题

  • 升级hexo,然后重新初始化一个空的博客,选择next主题,一顿操作下来还是同样的问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    hexo: 5.4.0
    hexo-cli: 4.3.0
    os: darwin 19.6.0 10.15.7

    node: 16.6.0
    v8: 9.2.230.21-node.18
    uv: 1.42.0
    zlib: 1.2.11
    brotli: 1.0.9
    ares: 1.17.1
    modules: 93
    nghttp2: 1.44.0
    napi: 8
    llhttp: 6.0.2
    openssl: 1.1.1k
    cldr: 39.0
    icu: 69.1
    tz: 2021a
    unicode: 13.0
  • 既然我遇到了,别人肯定也遇到了,查看官网issue,没有报这个错的

  • 查看官方演示案例,评论区有跟我情况一样的

  • issues,一路跟过去可以发现是渲染器的问题,具体使用地方见node_modules/hexo-douban-card/index.js

  • npm install nunjucks --save

  • npm list --depth=0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    hexo-site@0.0.0 /your_path/blog
    ├── hexo-algolia@1.3.1
    ├── hexo-deployer-git@3.0.0
    ├── hexo-douban-card@1.2.2
    ├── hexo-generator-archive@0.1.5
    ├── hexo-generator-category@0.1.3
    ├── hexo-generator-index-pin-top@0.2.2
    ├── hexo-generator-searchdb@1.1.0
    ├── hexo-generator-sitemap@2.0.0
    ├── hexo-generator-tag@0.2.0
    ├── hexo-renderer-ejs@0.3.1
    ├── hexo-renderer-marked@2.0.0
    ├── hexo-renderer-stylus@0.3.3
    ├── hexo-server@0.3.3
    ├── hexo-symbols-count-time@0.6.3
    ├── hexo-tag-aplayer@2.0.7
    ├── hexo-tag-cloud@1.0.1
    ├── hexo-wordcount@6.0.1
    ├── hexo@5.4.0
    ├── live2d-widget-model-izumi@1.0.5
    ├── lodash@4.17.21
    └── nunjucks@3.2.3
  • hexo s,依然包错,卸载重新安装

  • npm uninstall nunjucks

  • npm install nunjucks@2.4.2 --save

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    hexo-site@0.0.0 /your_path/blog
    ├── hexo-algolia@1.3.1
    ├── hexo-deployer-git@3.0.0
    ├── hexo-douban-card@1.2.2
    ├── hexo-generator-archive@0.1.5
    ├── hexo-generator-category@0.1.3
    ├── hexo-generator-index-pin-top@0.2.2
    ├── hexo-generator-searchdb@1.1.0
    ├── hexo-generator-sitemap@2.0.0
    ├── hexo-generator-tag@0.2.0
    ├── hexo-renderer-ejs@0.3.1
    ├── hexo-renderer-marked@2.0.0
    ├── hexo-renderer-stylus@0.3.3
    ├── hexo-server@0.3.3
    ├── hexo-symbols-count-time@0.6.3
    ├── hexo-tag-aplayer@2.0.7
    ├── hexo-tag-cloud@1.0.1
    ├── hexo-wordcount@6.0.1
    ├── hexo@5.4.0
    ├── live2d-widget-model-izumi@1.0.5
    ├── lodash@4.17.21
    └── nunjucks@2.4.2
    1
    2
    3
    Unhandled rejection Template render error: (/your_path/blog/themes/next/layout/index.swig)
    Template render error: (your_path/themes/next/layout/_layout.swig) [Line 32, Column 37]
    unexpected token: =
  • npm update nunjucks

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    hexo-site@0.0.0 /your_path/blog
    ├── hexo-algolia@1.3.1
    ├── hexo-deployer-git@3.0.0
    ├── hexo-douban-card@1.2.2
    ├── hexo-generator-archive@0.1.5
    ├── hexo-generator-category@0.1.3
    ├── hexo-generator-index-pin-top@0.2.2
    ├── hexo-generator-searchdb@1.1.0
    ├── hexo-generator-sitemap@2.0.0
    ├── hexo-generator-tag@0.2.0
    ├── hexo-renderer-ejs@0.3.1
    ├── hexo-renderer-marked@2.0.0
    ├── hexo-renderer-stylus@0.3.3
    ├── hexo-server@0.3.3
    ├── hexo-symbols-count-time@0.6.3
    ├── hexo-tag-aplayer@2.0.7
    ├── hexo-tag-cloud@1.0.1
    ├── hexo-wordcount@6.0.1
    ├── hexo@5.4.0
    ├── live2d-widget-model-izumi@1.0.5
    ├── lodash@4.17.21
    └── nunjucks@2.5.2
    1
    2
    3
    Unhandled rejection Template render error: (/your_path/blog/themes/next/layout/index.swig)
    Template render error: (/your_path/blog/themes/next/layout/index.swig)
    Template render error: (/your_path/blog/themes/next/layout/index.swig) [Line 8, Column 10]
  • npm uninstall nunjucks

  • npm install nunjucks --save

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    hexo-site@0.0.0 /your_path/blog
    ├── hexo-algolia@1.3.1
    ├── hexo-deployer-git@3.0.0
    ├── hexo-douban-card@1.2.2
    ├── hexo-generator-archive@0.1.5
    ├── hexo-generator-category@0.1.3
    ├── hexo-generator-index-pin-top@0.2.2
    ├── hexo-generator-searchdb@1.1.0
    ├── hexo-generator-sitemap@2.0.0
    ├── hexo-generator-tag@0.2.0
    ├── hexo-renderer-ejs@0.3.1
    ├── hexo-renderer-marked@2.0.0
    ├── hexo-renderer-stylus@0.3.3
    ├── hexo-server@0.3.3
    ├── hexo-symbols-count-time@0.6.3
    ├── hexo-tag-aplayer@2.0.7
    ├── hexo-tag-cloud@1.0.1
    ├── hexo-wordcount@6.0.1
    ├── hexo@5.4.0
    ├── live2d-widget-model-izumi@1.0.5
    ├── lodash@4.17.21
    └── nunjucks@3.2.3
  • 一顿操作下来好了,不过是临时性的,下次再用还是会报错

  • 尝试npm cache clean --force

  1. 新初始化一个目录则可以,大概是装的插件太多了,有冲突的地方

搁置,使用hexo-douban插件,传送门,有问题见issue

三、参考

  1. hexo-douban-card
  2. issue
  3. issue
  4. nunjucks
  5. 参考一

Godaddy解析域名

一、背景

aliyun

二、操作

  1. 域名转入转出,过程省略
  2. Godaddy解析域名
    • 登入Godaddy账号 godaday
    • 点击liusir.me连接,进入https://dcc.godaddy.com/control/liusir.me/settings
    • 页面往下翻,找到其他设置,点击管理DNS godaday
    • 在管理界面添加记录 godaday
      • 添加类型A记录
        • 类型:A
        • 主机:@
        • 指向:185.199.111.153,可通过ping xxx.github.io获得
      • 添加CNAME记录,用来www访问
        • 类型:CNAME
        • 主机:www
        • 指向:liusirdotme.github.io

三、参考

  1. 参考一
  2. 参考二

next主题添加不蒜子访问统计

一、开干

  1. 打开主题配置文件hexo-theme-next/_config.yml
  2. 修改配置项
1
2
3
4
5
6
7
8
busuanzi_count:
enable: true
total_visitors: true
total_visitors_icon: user
total_views: true
total_views_icon: eye
post_views: true
post_views_icon: eye
  • 之前到这一步就完事儿了,后来不知怎么统计就失效了
  1. 不蒜子官网,赫然写着一段话“因七牛强制过期『dn-lbstatics.qbox.me』域名,与客服沟通无果,只能更换域名到『busuanzi.ibruce.sinfo』!”,找到问题就好办了。

  2. 打开hexo-theme-next/layout/_third-party/analytics/busuanzi-counter.swig文件,修改

1
2
3
4
5
next主题自带:
<script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>

修改为:
<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
  1. 清一下缓存,重新发布下,打完收工

  2. 代码备份

1
var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||"interactive"===document.readyState||"complete"===document.readyState?c.call(document):b.push(function(){return c.call(this)}),this},d=function(){for(var a=0,c=b.length;c>a;a++)b[a].apply(document);b=[]},e=function(){a||(a=!0,d.call(window),document.removeEventListener?document.removeEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.detachEvent("onreadystatechange",e),window==window.top&&(clearInterval(c),c=null)))},document.addEventListener?document.addEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){/loaded|complete/.test(document.readyState)&&e()}),window==window.top&&(c=setInterval(function(){try{a||document.documentElement.doScroll("left")}catch(b){return}e()},5)))}(),bszCaller={fetch:function(a,b){var c="BusuanziCallback_"+Math.floor(1099511627776*Math.random());window[c]=this.evalCall(b),a=a.replace("=BusuanziCallback","="+c),scriptTag=document.createElement("SCRIPT"),scriptTag.type="text/javascript",scriptTag.defer=!0,scriptTag.src=a,scriptTag.referrerPolicy="no-referrer-when-downgrade",document.getElementsByTagName("HEAD")[0].appendChild(scriptTag)},evalCall:function(a){return function(b){ready(function(){try{a(b),scriptTag.parentElement.removeChild(scriptTag)}catch(c){bszTag.hides()}})}}},bszCaller.fetch("//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback",function(a){bszTag.texts(a),bszTag.shows()}),bszTag={bszs:["site_pv","page_pv","site_uv"],texts:function(a){this.bszs.map(function(b){var c=document.getElementById("busuanzi_value_"+b);c&&(c.innerHTML=a[b])})},hides:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="none")})},shows:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="inline")})}};

二、参考

  1. 参考一
  2. 参考二

next主题置顶文章

  1. 安装插件
1
2
3
npm uninstall hexo-generator-index --save
#npm install hexo-generator-index-pin-top --save ##此命令安装失败,使用cnpm
cnpm install hexo-generator-index-pin-top --save
  1. 修改模板文件/themes/next/layout/_macro/post.swig,在<div class="post-meta">下方插入代码
1
2
3
4
5
{% if post.top %}
<i class="fa fa-thumb-tack"></i>
<font color=green>置顶</font>
<span class="post-meta-divider">|</span>
{% endif %}
  1. 修改博客源文件,添加top: true,如:
1
2
3
4
5
6
7
title: hexo博客next主题置顶文章
date: 2019-11-11 21:57:19
tags:
- Hexo
categories:
- Hexo
top: 1
  • 按照以上步骤操作后,置顶一直不起作用,然后我就手动删除了node_modules/hexo-generator-index目录,重新发布就好了。
  1. 参考

next主题添加标签云效果

一、Just do it

  1. package.json添加依赖"hexo-tag-cloud": "2.1.*"
  2. 开始执行安装 npm install
  3. 修改模板文件 theme/next/layout/_macro/sidebar.swig,加入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
{% if site.tags.length > 1 %}
<script type="text/javascript" charset="utf-8" src="/js/tagcloud.js"></script>
<script type="text/javascript" charset="utf-8" src="/js/tagcanvas.js"></script>
<div class="widget-wrap">
<h3 class="widget-title">Tag Cloud</h3>
<div id="myCanvasContainer" class="widget tagcloud">
<canvas width="250" height="250" id="resCanvas" style="width=100%">
{{ list_tags() }}
<!--{{ list_categories() }}-->
</canvas>
</div>
</div>
{% endif %}

list_tags()这块儿依据个人情况而定,我的有近千个tag,最后出来的效果让人看了头皮发麻,BZ改成了list_categories()

  1. 修改主配置文件_config.yml,加入一下内容
1
2
3
4
5
6
7
# hexo-tag-cloud
tag_cloud:
textFont: Trebuchet MS, Helvetica
textColor: '#333'
textHeight: 25
outlineColor: '#E2E1D1'
maxSpeed: 0.1

二、参考

  1. 参考一
  2. 参考二
  3. [参考三](https://github.com/D0n9X1n/hexo-tag-cloud_

三、后续

安装上面的步骤操作正常情况下是没有问题的,hexo g的时候提示内存爆了,类似这样的提示FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

  1. 删除无用的依赖(删除也没用,只是generate快了几秒))

    • 本地搜索,太慢了,用algolia搜到代替 npm uninstall hexo-generator-searchdb
    • 画流程图用的,画起来太麻烦了 npm uninstall hexo-filter-flowchart
  2. 增加node运行内存(Mac下)

    • cd /usr/local/lib/node_modules/hexo-cli/bin
    • vim hexo
    • #!/usr/bin/env node --max_old_space_size=4096
    • /usr/local/lib/node_modules/hexo-cli/bin/hexo g

    node --max_old_space_size=4096 /usr/local/lib/node_modules/hexo-cli/bin/hexo generate 效果同上几个命令

  3. 参考


添加本地搜索local search

  1. 安装搜索依赖 npm install hexo-generator-searchdb --save
  2. 修改主配置文件,添加以下内容:
1
2
3
4
5
search:
path: search.xml
field: post
format: html
limit: 10000
  1. 修改主题配置文件
1
2
3
4
local_search:
enable: true
local_search:
enable: true

博客添加algolia搜索

  1. algolia官网注册登录
  2. 创建一个indices,注意index name项,后面会用到
  3. 进入博客目录,安装扩展 npm install --save hexo-algolia
  4. 修改主配置文件_config.yml,添加以下内容
1
2
3
4
5
algolia:
applicationID: 'xxx' #algolia有,Application ID
apiKey: 'yyy' #algolia有,Search-Only API Key
indexName: 'blog'
chunkSize: 5000
  1. 去algolia后台,API keys->All API Keys->Edid->ACL->勾选【search】【Add Object】【Delete Object】【List indices】【Delete index】
  2. 进入博客目录,执行命令 export HEXO_ALGOLIA_INDEXING_KEY=yyy(Search-Only API Key)
  3. 测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hexo clean
hexo algolia

## 输出类似如下表示成功
INFO [hexo-algolia] Testing HEXO_ALGOLIA_INDEXING_KEY permissions.
INFO Start processing
INFO [hexo-algolia] 327 records to index (post, page).
INFO [hexo-algolia] Indexing chunk 1 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 2 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 3 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 4 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 5 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 6 of 7 (50 records)
INFO [hexo-algolia] Indexing chunk 7 of 7 (27 records)
INFO [hexo-algolia] Indexing done.
  1. 修改主题配置文件_config.yml
1
2
3
4
5
6
7
8
algolia_search:
enable: true #默认false,改为true即可
hits:
per_page: 10
labels:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}" # 可自定义文字
hits_stats: "${hits} results found in ${time} ms" # 可自定义文字
  1. 写完博客之后,发布之前需要先执行下hexo algolia,然后再发布hexo g -d
  1. 参考

博客加入百度地图

一、步骤

  1. 注册百度账号
  2. 登录账号,进入控制台
  3. 创建应用,输入应用名称、选择应用类型(此处选浏览器端)、加入Referer白名单(你的域名),提交
  4. 复制ak
  5. 回到博客目录,打开你想加入地图的源文件
  6. 引入百度地图js文件、初始化地图等见下方代码,我的是在about/index.md下进行的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=your_ak"></script>

{% raw %}

<div style="min-height: 800px; width: 100%;" id="map">

<script type="text/javascript">
var map = new BMap.Map("map");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_NORMAL_MAP,
BMAP_HYBRID_MAP
]}));
map.setCurrentCity("北京");
map.enableScrollWheelZoom(true);
</script>

</div>

{% endraw %}
  1. 引入js文件时有http和https两种,具体的可以看下官网文档

  2. 提交发布就完事了

  3. 参考一

  4. 特别推荐-谷歌地图


博客加入音乐

一、步骤

  1. 安装插件npm install --save hexo-tag-aplayer传送门
  2. 在需要的页面加入音乐
    • 复制js代码
    • 登录web版QQ音乐,搜索要加入的音乐
    • 点击要播放的音乐,默认给的地址https://y.qq.com/n/ryqq/songDetail/0032Di6m3BQfpI
    • 修改url为https://y.qq.com/n/yqq/song/0032Di6m3BQfpI.html
    • 在需要的页面加入如下代码,重新发布即可,我的themes/next/layout/_macro/sidebar.swig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- require APlayer -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
<!-- require MetingJS -->
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

<meting-js
server="tencent"
auto="https://y.qq.com/n/yqq/song/0032Di6m3BQfpI.html"
autoplay="true"
loop="one"
mini="true"
>

</meting-js>
  1. 加在首页(next主题Pisces),参数可配

    • 修改文件themes/next/layout/_macro/sidebar.swig,在合适的地方加入以下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
    <script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
    <!-- require MetingJS -->
    <script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

    <meting-js
    id="8085912287"
    server="tencent"
    auto="https://y.qq.com/n/yqq/playlist/8085912287.html"
    autoplay="true"
    loop="all"
    width="100"
    mini="false"
    type="playlist"
    >
    </meting-js>

二、参考

  1. 参考一
  2. 参考二
  3. 参考三
  4. 参考四
  5. 参考五
  6. 参考六
  7. 参考七
  8. 参考八
  9. 参考九
  10. 参考十

Hugo

一、安装

  1. 通过Homebrew安装 brew install hugo
  2. 查看安装成功与否 hugo version

二、命令介绍

hugo [command] [flags]

  1. 初始化站点hugo new site xxx.com
  2. 版本和环境详细信息hugo env
  3. 创建文章hugo new index.md
  4. 编译生成静态文件hugo,将编译所有文件并输出到public目录
  5. 编译生成静态文件并启动web服务hugo server

三、搭建博客

  1. 安装hugobrew install hugo
  2. 初始化站点hugo new site quickstart
  3. 添加主题
1
2
3
4
cd quickstart
git init
git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
echo 'theme = "ananke"' >> config.toml
  1. 初始化博客hugo new posts/my-first-post.md
  2. 启动本地服务hugo server -D
  3. 生成静态文件hugo

搭建流程总体上跟Hexo差不多,笔者主要认为有两点不同

Hugo比Hexo快,快的不是一星半点儿
Hexo主题丰富,Next主题绝了

四、总览

Github star数量 issues(open) issues(close) 语言 多语言 收费
Hexo 26.6k 196 2934 JavaScript 支持 不收
Hugo 35.4k 324 3367 Go 不确定 不收
Jekyll 37.8k 196 1934 Ruby 不确定 不收
Ghost 30.0k 82 5310 JavaScript 不确定

截止到2019年5月28号

五、参考

  1. Hugo
  2. Jekyll
  3. hugo中文
  4. hugo英文