jekyll-theme-h2o-ac 1.2.1 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -4
  3. data/_config.yml +15 -17
  4. data/_data/collections.yml +11 -0
  5. data/_data/locales/en.yml +6 -0
  6. data/_data/locales/ja.yml +6 -0
  7. data/_data/locales/zh-Hans.yml +6 -0
  8. data/_data/locales/zh-Hant.yml +6 -0
  9. data/_includes/{footer.html → layouts/footer.html} +61 -35
  10. data/_includes/{post-head.html → layouts/head.html} +35 -29
  11. data/_includes/{header.html → layouts/header.html} +19 -1
  12. data/_includes/layouts/metainfo.html +40 -0
  13. data/_includes/{paginate-article.html → layouts/paginate-article.html} +9 -2
  14. data/_includes/{paginate.html → layouts/paginate.html} +5 -5
  15. data/_includes/{sidebar.html → layouts/sidebar.html} +21 -4
  16. data/_includes/layouts/submenu.html +30 -0
  17. data/_includes/plugins/analytics/analytics.html +3 -0
  18. data/_includes/{analytics.html → plugins/analytics/google.html} +1 -2
  19. data/_includes/plugins/comments/comments_block.html +67 -0
  20. data/_includes/plugins/comments/comments_js.html +24 -0
  21. data/_includes/plugins/comments/disqus.html +19 -0
  22. data/_includes/plugins/comments/waline_css.html +3 -0
  23. data/_includes/plugins/comments/waline_js.html +14 -0
  24. data/_includes/plugins/i18n.html +32 -0
  25. data/_includes/plugins/markdown/fancybox_css.html +1 -0
  26. data/_includes/plugins/markdown/fancybox_js.html +24 -0
  27. data/_includes/plugins/markdown/hotkeys.html +31 -0
  28. data/_includes/plugins/markdown/markdown.html +7 -0
  29. data/_includes/{mathjax.html → plugins/markdown/mathjax.html} +4 -9
  30. data/_includes/plugins/markdown/mermaid_block.html +10 -0
  31. data/_includes/plugins/markdown/mermaid_js.html +12 -0
  32. data/_includes/plugins/markdown/prism_css.html +16 -0
  33. data/_includes/plugins/markdown/prism_js.html +3 -0
  34. data/_includes/plugins/others/calendar_block.html +31 -0
  35. data/_includes/plugins/others/calendar_css.html +3 -0
  36. data/_includes/plugins/others/calendar_js.html +8 -0
  37. data/_includes/plugins/others/social_block.html +5 -0
  38. data/_includes/plugins/others/social_css.html +1 -0
  39. data/_includes/plugins/others/social_js.html +15 -0
  40. data/_layouts/404.html +17 -0
  41. data/_layouts/archives.html +89 -59
  42. data/_layouts/blog.html +4 -10
  43. data/_layouts/categories.html +3 -1
  44. data/_layouts/default.html +62 -45
  45. data/_layouts/links.html +14 -4
  46. data/_layouts/page.html +17 -87
  47. data/_layouts/post.html +146 -483
  48. data/_layouts/stats.html +52 -0
  49. data/_layouts/tags.html +2 -2
  50. data/assets/css/app.min.css +1 -2591
  51. data/assets/css/app.min.css.map +1 -1
  52. data/assets/css/cv.min.css +1 -279
  53. data/assets/css/cv.min.css.map +1 -1
  54. data/assets/js/app.min.js +1 -686
  55. data/assets/js/app.min.js.LICENSE.txt +15 -0
  56. data/assets/js/app.min.js.map +1 -1
  57. metadata +43 -20
  58. data/_includes/comments.html +0 -53
  59. data/_includes/head.html +0 -47
  60. data/_includes/mermaid.html +0 -12
  61. data/_includes/waline.html +0 -3
  62. /data/_includes/{pageNav.html → layouts/pageNav.html} +0 -0
  63. /data/_includes/{toc.html → layouts/toc.html} +0 -0
  64. /data/_includes/{busuanzi.html → plugins/analytics/busuanzi.html} +0 -0
  65. /data/_includes/{umami.html → plugins/analytics/umami.html} +0 -0
  66. /data/_includes/{pwa.html → plugins/others/pwa.html} +0 -0
  67. /data/_includes/{webpusher.html → plugins/others/webpusher.html} +0 -0
data/_layouts/post.html CHANGED
@@ -1,277 +1,181 @@
1
- <!DOCTYPE html>
2
- {% if post.lang %}
3
- <html lang="{{post.lang}}">
4
- {% else %}
5
- <html lang="{{site.default_lang}}">
6
- {% endif %}
7
- {% include post-head.html %}
1
+ ---
2
+ layout: default
3
+ type: post
4
+ ---
8
5
 
9
- {% if site.prism.line_numbers %}
10
- <body class="line-numbers" ontouchstart="">
11
- {% else %}
12
- <body ontouchstart="">
13
- {% endif %}
14
6
  {% assign lang = page.lang | default: site.default_lang %}
15
7
  {% assign locales = site.data.locales[lang] %}
16
8
  {% assign post = locales.post %}
17
- <!--[if lt IE 10]>
18
- <div class="alert-danger" role="alert">你的浏览器实在太太太旧了,放学别走,升级完浏览器再说!<a target="_blank" class="alert-link" href="http://browsehappy.com">立即升级</a></div>
19
- <![endif]-->
20
- {% if site.gray %}
21
- <div id=all class="post gray" data-theme="{{ site.theme-color }}">
22
- {% else %}
23
- <div id="all" class="post" data-theme="{{ site.theme-color }}">
24
- {% endif %}
25
- <div class="alert-tip" id="no-previous">
26
- {{ post.tips.left }}
27
- </div>
28
- <div class="alert-tip" id="no-next">
29
- {{ post.tips.right }}
30
- </div>
31
- <input id="nm-switch" type="hidden" value="{{ site.nightMode }}"> {% include header.html %}
32
-
33
- <header
34
- class="g-banner post-header {{ site.postPatterns | prepend: 'post-pattern-' }} {{ site.theme-color | prepend: 'bgcolor-' }} {% unless page.cover %}post-no-cover{% endunless %}"
35
- data-theme="{{ site.theme-color }}"
36
- >
37
- <div class="post-wrapper">
9
+ <div class="g-banner post-header {{ site.postPatterns | prepend: 'post-pattern-' }} {{ site.theme-color | prepend: 'bgcolor-' }} {% unless page.cover %}post-no-cover{% endunless %}"
10
+ data-theme="{{ site.theme-color }}">
11
+ <div class="post-wrapper">
38
12
  <div class="post-tags">
39
- {% if page.tags.size > 0 %}
40
- {% for tag in page.tags %}
41
- <a href="{{ "/tags.html#" | append: tag | relative_url }}" class="post-tag">{{ tag }}</a>
13
+ {% if page.tags.size > 0 %}
14
+ {% for tag in page.tags %}
15
+ <a href="{{ " /tags.html#" | append: tag | relative_url }}" class="post-tag">{{ tag }}</a>
42
16
  {% endfor %}
43
- {% endif %}
17
+ {% endif %}
44
18
  </div>
45
19
  <h1>{{ page.title }}</h1>
46
20
  <div class="post-meta">
47
- <span class="post-meta-item">
48
- <svg class="icon" aria-hidden="true">
49
- <use xlink:href="#icon-user"></use>
50
- </svg>
51
- {% if page.author %}{{ page.author }}{% else %}{{ site.author }}{% endif %}
52
- </span>
53
- <time class="post-meta-item" datetime="{{ page.date | date:"%y-%m-%d" }}">
54
- <svg class="icon" aria-hidden="true">
55
- <use xlink:href="#icon-calendar"></use>
56
- </svg>
57
- <span class="create-at"></span>
58
- </time>
59
- <time class="post-meta-item" datetime="{{ page.date | date:"%y-%m-%d" }}">
60
- <svg class="icon" aria-hidden="true">
61
- <use xlink:href="#icon-update"></use>
62
- </svg>
63
- <span class="update-at"></span>
64
- </time>
65
21
  <span class="post-meta-item">
66
- <svg class="icon words" aria-hidden="true">
67
- <use xlink:href="#icon-words"></use>
68
- </svg>
69
- {% assign total_size = page.content | strip_html | strip_newlines | remove: " " | size %}
70
- {{ post.cover.total.info }} {% if total_size < 1000 %} {{ total_size }} {% else %} {{ total_size | divided_by: 1000.0 | round: 1 }}k {% endif %} {{ post.cover.total.unit }}
71
- </span>
72
- <span class="post-meta-item">
73
- <svg class="icon time" aria-hidden="true">
74
- <use xlink:href="#icon-time"></use>
75
- </svg>
76
- {{ post.cover.time.info }} {{ page.content | strip_html | strip_newlines | remove: " " | size | divided_by: 350 | plus: 1 }} {{ post.cover.time.unit }}
22
+ <svg class="icon" aria-hidden="true">
23
+ <use xlink:href="#icon-user"></use>
24
+ </svg>
25
+ {% if page.author %}{{ page.author }}{% else %}{{ site.author }}{% endif %}
77
26
  </span>
78
- {% if site.busuanzi %}
79
- <span class="post-meta-item">
80
- <svg class="icon pv" aria-hidden="true">
81
- <use xlink:href="#icon-pv"></use>
27
+ <time class="post-meta-item" datetime="{{ page.date | date:" %y-%m-%d" }}">
28
+ <svg class="icon" aria-hidden="true">
29
+ <use xlink:href="#icon-calendar"></use>
82
30
  </svg>
83
- {{ post.cover.view.info }} <span id="busuanzi_value_page_pv"></span> {{ post.cover.view.unit }}
84
- </span>
85
- {% endif %}
86
- {% if page.cover_author %}
31
+ <span class="create-at"></span>
32
+ </time>
33
+ <time class="post-meta-item" datetime="{{ page.date | date:" %y-%m-%d" }}">
34
+ <svg class="icon" aria-hidden="true">
35
+ <use xlink:href="#icon-update"></use>
36
+ </svg>
37
+ <span class="update-at"></span>
38
+ </time>
87
39
  <span class="post-meta-item">
88
- <svg class="icon" aria-hidden="true">
89
- <use xlink:href="#icon-image"></use>
90
- </svg>
91
- {% if page.cover_author_link %}
92
- {{ locales.cover }} <a href="{{ page.cover_author_link }}" target="_blank">{{ page.cover_author }}</a>
93
- {% else %}
94
- {{ locales.cover }} {{ page.cover_author }}
95
- {% endif %}
96
- </span>
97
- {% endif %}
40
+ <svg class="icon words" aria-hidden="true">
41
+ <use xlink:href="#icon-words"></use>
42
+ </svg>
43
+ {% assign total_size = page.content | strip_html | strip_newlines | remove: " " | size %}
44
+ {{ post.cover.total.info }} {% if total_size < 1000 %} {{ total_size }} {% else %} {{ total_size |
45
+ divided_by: 1000.0 | round: 1 }}k {% endif %} {{ post.cover.total.unit }} </span>
46
+ <span class="post-meta-item">
47
+ <svg class="icon time" aria-hidden="true">
48
+ <use xlink:href="#icon-time"></use>
49
+ </svg>
50
+ {{ post.cover.time.info }} {{ page.content | strip_html | strip_newlines | remove: " " | size |
51
+ divided_by: 350 | plus: 1 }} {{ post.cover.time.unit }}
52
+ </span>
53
+ {% if site.busuanzi %}
54
+ <span class="post-meta-item">
55
+ <svg class="icon pv" aria-hidden="true">
56
+ <use xlink:href="#icon-pv"></use>
57
+ </svg>
58
+ {{ post.cover.view.info }} <span id="busuanzi_value_page_pv"></span> {{ post.cover.view.unit }}
59
+ </span>
60
+ {% endif %}
61
+ {% if page.cover_author %}
62
+ <span class="post-meta-item">
63
+ <svg class="icon" aria-hidden="true">
64
+ <use xlink:href="#icon-image"></use>
65
+ </svg>
66
+ {% if page.cover_author_link %}
67
+ {{ locales.cover }} <a href="{{ page.cover_author_link }}" target="_blank">{{ page.cover_author
68
+ }}</a>
69
+ {% else %}
70
+ {{ locales.cover }} {{ page.cover_author }}
71
+ {% endif %}
72
+ </span>
73
+ {% endif %}
98
74
  </div>
99
- </div>
100
- {% if page.cover %}
101
- <div class="filter"></div>
102
- <div class="post-cover" style="background: url('{{ page.cover | relative_url }}') center no-repeat; background-size: cover;"></div>
103
- {% endif %}
104
- </header>
105
- <div class="post-content visible">
106
- {% if page.subtitle %}
107
- <h2 class="post-subtitle">{{ page.subtitle }}</h2>
108
- {% endif %}
109
-
110
- {% assign copyright = post.copyright %}
111
- {% if site.toc %}
112
- <div class="container">
75
+ </div>
76
+ {% if page.cover %}
77
+ <div class="filter"></div>
78
+ <div class="post-cover"
79
+ style="background: url('{{ page.cover | relative_url }}') center no-repeat; background-size: cover;"></div>
80
+ {% endif %}
81
+ </div>
82
+
83
+ <main class="post-content visible">
84
+ {% if page.subtitle %}
85
+ <h2 class="post-subtitle">{{ page.subtitle }}</h2>
86
+ {% endif %}
87
+
88
+ {% assign copyright = post.copyright %}
89
+
90
+ <div class="container">
91
+ {% include layouts/submenu.html %}
113
92
  <div class="contents">
114
- <article class="markdown-body post">
115
- {% if page.langs %}
116
- <p><b>{{ locales.langs }}</b>
117
- {% assign langs = "zh-Hans, zh-Hant, en, ja" | split: ", " %}
118
- {% assign langnames = "简中, 繁中, EN, 日本語" | split: ", " %}
119
- {% if lang == site.default_lang %}
120
- {% assign url = page.url %}
121
- {% else %}
122
- {% assign urls = page.url | split: '/' %}
123
- {% assign url = "" %}
124
- {% for u in urls offset:2 %}
125
- {% assign url = url | append: "/" | append: u %}
126
- {% endfor %}
127
- {% endif %}
128
- {% for l in page.langs %}
129
- {% for i in (0..4) %}
130
- {% if langs[i] == l %}
131
- {% if l == page.lang %}
132
- {{ langnames[i] }}
133
- {% elsif l == site.default_lang %}
134
- <a href="{{ url }}">{{ langnames[i] }}</a>
135
- {% else %}
136
- {% assign prefix = "/" | append: l %}
137
- <a href="{{ url | prepend: prefix }}">{{ langnames[i] }}</a>
138
- {% endif %}
139
- {% endif %}
140
- {% endfor %}
141
- {% endfor %}
142
- </p>
143
- {% endif %}
144
- {{ page.content | extlinks }}
145
- <div class="post-copyright">
146
- <p>
147
- <span>{{ copyright.statement.name }}:</span>
148
- {{ copyright.statement.left }}
149
- <a href="{{ site.url }}" class="cplink">{{ site.title }}</a>
150
- {{ copyright.statement.middle }}
151
- </p>
152
- {% if site.cclicense %}
153
- <p>
154
- {{ copyright.statement.right1 }}
155
- <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" class="extlinks">CC BY-NC-SA 4.0</a>
156
- {{ copyright.statement.right2 }}
157
- </p>
158
- {% endif %}
159
- <p><span>{{ copyright.title }}:</span>《 {{ page.title }} 》</p>
160
- <p><span>{{ copyright.link }}:</span><a href="{{ page.url | prepend: site.url }}" class="cplink">{{ page.url | prepend: site.url }}</a></p>
161
- <p class="tips">{{ copyright.statement.outdate1 }} <span></span> {{ copyright.statement.outdate2 }}</p>
93
+ <article class="markdown-body post">
94
+ {% include plugins/i18n.html %}
95
+ {{ page.content | extlinks }}
96
+ <div class="post-copyright">
97
+ <p>
98
+ <span>{{ copyright.statement.name }}:</span>
99
+ {{ copyright.statement.left }}
100
+ <a href="{{ site.url }}" class="cplink">{{ site.title }}</a>
101
+ {{ copyright.statement.middle }}
102
+ </p>
103
+ {% if site.cclicense %}
104
+ <p>
105
+ {{ copyright.statement.right1 }}
106
+ <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" class="extlinks">CC
107
+ BY-NC-SA 4.0</a>
108
+ {{ copyright.statement.right2 }}
109
+ </p>
110
+ {% endif %}
111
+ <p><span>{{ copyright.title }}:</span>《 {{ page.title }} 》</p>
112
+ <p><span>{{ copyright.link }}:</span><a href="{{ page.url | prepend: site.url }}" class="cplink">{{
113
+ page.url | prepend: site.url }}</a></p>
114
+ <p class="tips">{{ copyright.statement.outdate1 }} <span></span> {{ copyright.statement.outdate2 }}
115
+ </p>
116
+ </div>
117
+ </article>
118
+ </div>
119
+ {% if page.content contains 'h1' or page.content contains 'h2' or page.content contains 'h3' or page.content
120
+ contains 'h4' or page.content contains 'h5' or page.content contains 'h6' and site.toc %}
121
+ <div class="table-of-contents">
122
+ <div class="toc-header"><h2>{{ post.outline }}</h2></div>
123
+ <div class="toc-body">
124
+ {% include layouts/toc.html html=content %}
125
+ </div>
126
+ {% else %}
127
+ <div class="table-of-contents hidden">
128
+ {% endif %}
162
129
  </div>
163
- </article>
164
- </div>
165
- <div class="table-of-contents">
166
- <h2>{{ post.outline }}</h2>
167
- {% include toc.html html=content %}
168
130
  </div>
169
- </div>
170
- {% else %}
171
- <article class="markdown-body">
172
- {% if page.langs %}
173
- <p><b>{{ locales.langs }}</b>
174
- {% assign langs = "zh-Hans, zh-Hant, en, ja" | split: ", " %}
175
- {% assign langnames = "简中, 繁中, EN, 日本語" | split: ", " %}
176
- {% if lang == site.default_lang %}
177
- {% assign url = page.url %}
178
- {% else %}
179
- {% assign urls = page.url | split: '/' %}
180
- {% assign url = "" %}
181
- {% for u in urls offset:2 %}
182
- {% assign url = url | append: "/" | append: u %}
183
- {% endfor %}
184
- {% endif %}
185
- {% for l in page.langs %}
186
- {% for i in (0..4) %}
187
- {% if langs[i] == l %}
188
- {% if l == page.lang %}
189
- {{ langnames[i] }}
190
- {% elsif l == site.default_lang %}
191
- <a href="{{ url }}">{{ langnames[i] }}</a>
192
- {% else %}
193
- {% assign prefix = "/" | append: l %}
194
- <a href="{{ url | prepend: prefix }}">{{ langnames[i] }}</a>
195
- {% endif %}
196
- {% endif %}
197
- {% endfor %}
198
- {% endfor %}
199
- </p>
200
- {% endif %}
201
- {{ page.content }}
202
- <div class="post-copyright">
203
- {% assign copyright = post.copyright %}
204
- <p>
205
- <span>{{ copyright.statement.name }}:</span>
206
- {{ copyright.statement.left }}
207
- <a href="{{ site.url }}" class="cplink">{{ site.title }}</a>
208
- {{ copyright.statement.middle }}
209
- </p>
210
- {% if site.cclicense %}
211
- <p>
212
- {{ copyright.statement.right1 }}
213
- <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" class="extlinks">CC BY-NC-SA 4.0</a>
214
- {{ copyright.statement.right2 }}
215
- </p>
216
- {% endif %}
217
- <p><span>{{ copyright.title }}:</span>《 {{ page.title }} 》</p>
218
- <p><span>{{ copyright.link }}:</span><a href="{{ page.url | prepend: site.url }}" class="cplink">{{ page.url | prepend: site.url }}</a></p>
219
- <p class="tips">{{ copyright.statement.outdate1 }} <span></span> {{ copyright.statement.outdate2 }}</p>
220
- </div>
221
- </article>
222
- {% endif %}
131
+ {% include plugins/others/social_block.html %}
132
+ </main>
223
133
 
224
- {% if site.social-share %}
225
- <div class="social-share-wrapper">
226
- <div class="social-share"></div>
227
- </div>
228
- {% endif %}
229
- </div>
230
-
231
- <section class="author-detail">
232
- <section class="post-footer-item author-card">
134
+ <section class="author-detail">
135
+ <section class="post-footer-item author-card">
233
136
  <div class="avatar">
234
- <img src="{{ site.avatar | relative_url }}" alt="">
137
+ <img src="{{ site.avatar | relative_url }}" alt="">
235
138
  </div>
236
139
  <div class="author-name" rel="author">{{ site.author }}</div>
237
140
  <div class="bio">
238
- <p>{{ site.bio }}</p>
141
+ <p>{{ site.bio }}</p>
239
142
  </div>
240
143
  {% if site.sns.size > 0 %}
241
144
  <ul class="sns-links">
242
- {% for s in site.sns %}
243
- <li>
244
- <a href="{{ s[1] }}" target="_blank" aria-label="{{ s[0] }}">
245
- <svg class="icon" aria-hidden="true">
246
- <use xlink:href="#icon-{{ s[0] }}"></use>
247
- </svg>
248
- </a>
249
- </li>
250
- {% endfor %}
145
+ {% for s in site.sns %}
146
+ <li>
147
+ <a href="{{ s[1] }}" target="_blank" aria-label="{{ s[0] }}">
148
+ <svg class="icon" aria-hidden="true">
149
+ <use xlink:href="#icon-{{ s[0] }}"></use>
150
+ </svg>
151
+ </a>
152
+ </li>
153
+ {% endfor %}
251
154
  </ul>
252
155
  {% endif %}
253
- </section>
254
- <section class="post-footer-item read-next">
156
+ </section>
157
+ <section class="post-footer-item read-next">
255
158
  {% if page.next.url %}
256
159
  <div class="read-next-item">
257
- <a href="{{ page.next.url | relative_url }}" class="read-next-link" aria-label="{{ page.next.title }}"></a>
258
- <section>
259
- <span>{{ page.next.title }}</span>
260
- <p>{{ page.next.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
261
- </section>
262
- {% if page.next.cover %}
263
- <div class="filter"></div>
264
- <img src="{{ page.next.cover | relative_url }}" alt="">
265
- {% endif %}
266
- </div>
160
+ <a href="{{ page.next.url | relative_url }}" class="read-next-link" aria-label="{{ page.next.title }}"></a>
161
+ <section>
162
+ <span>{{ page.next.title }}</span>
163
+ <p>{{ page.next.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
164
+ </section>
165
+ {% if page.next.cover %}
166
+ <div class="filter"></div>
167
+ <img src="{{ page.next.cover | relative_url }}" alt="">
168
+ {% endif %}
169
+ </div>
267
170
  {% endif %}
268
171
 
269
172
  {% if page.previous.url %}
270
173
  <div class="read-next-item">
271
- <a href="{{ page.previous.url | relative_url }}" class="read-next-link" aria-label="{{ page.previous.title }}"></a>
174
+ <a href="{{ page.previous.url | relative_url }}" class="read-next-link"
175
+ aria-label="{{ page.previous.title }}"></a>
272
176
  <section>
273
- <span>{{ page.previous.title }}</span>
274
- <p>{{ page.previous.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
177
+ <span>{{ page.previous.title }}</span>
178
+ <p>{{ page.previous.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
275
179
  </section>
276
180
  {% if page.previous.cover %}
277
181
  <div class="filter"></div>
@@ -279,247 +183,6 @@
279
183
  {% endif %}
280
184
  </div>
281
185
  {% endif %}
282
- </section>
283
- {% if site.comments.disqus or site.comments.waline %}
284
- <section class="post-footer-item comment">
285
- <div class="comments-headline">
286
- <svg class="icon" aria-hidden="true">
287
- <use xlink:href="#icon-comment"></use>
288
- </svg>
289
- <span>{{ locales.post.comment }}</span>
290
- </div>
291
- {% if site.comments.disqus and site.comments.waline %}
292
- <div id="comments-switch">
293
- <span class="first-comment">Disqus</span>
294
- <span class="switch-button">
295
- <input id="cmn-toggle-4" class="cmn-toggle cmn-toggle-round-flat" type="checkbox">
296
- <label for="cmn-toggle-4"></label>
297
- </span>
298
- <span class="second-comment">Waline</span>
299
- </div>
300
- {% endif %}
301
- </section>
302
- {% endif %}
303
-
304
- {% if site.comments.disqus %}
305
- <section class="post-footer-item comment">
306
- <div id="disqus_thread"></div>
307
- </section>
308
- {% endif %}
309
-
310
- {% if site.comments.waline %}
311
- <section class="post-footer-item comment">
312
- <div id="waline"></div>
313
- </section>
314
- {% endif %}
315
186
  </section>
316
-
317
- {% include footer.html %}
318
- {% if page.mermaid or site.mermaid %}
319
- <div class="modal">
320
- <div class="modal-content">
321
- <header>
322
- <span class="close">&times;</span>
323
- </header>
324
- <div class="container"></div>
325
- </div>
326
- </div>
327
- {% endif%}
328
- </div>
329
-
330
- <script src="https://cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/js/social-share.min.js"></script>
331
- <script>
332
- socialShare('.social-share', {
333
- sites: [
334
- {% for i in site.social-share-items %}
335
- '{{ i }}'
336
- {% if forloop.last == false %},
337
- {% endif %}
338
- {% endfor %}
339
- ],
340
- wechatQrcodeTitle: "分享到微信朋友圈",
341
- wechatQrcodeHelper: '<p>扫码后点击右上角</p><p>将本文分享至朋友圈</p>'
342
- });
343
- $("a.social-share-icon").each(function() {
344
- $(this).attr("aria-label", $(this).attr("class").split(' ')[1])
345
- });
346
- </script>
347
-
348
- {% if site.comments.disqus %}
349
- <script>
350
- /**
351
- * RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
352
- * LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
353
- /*
354
- var disqus_config = function () {
355
- this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
356
- this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
357
- };
358
- */
359
- (function() { // DON'T EDIT BELOW THIS LINE
360
- var d = document, s = d.createElement('script');
361
- s.src = '{{ site.comments.disqus_url }}';
362
- s.setAttribute('data-timestamp', +new Date());
363
- (d.head || d.body).appendChild(s);
364
- })();
365
-
366
- </script>
367
- {% endif %}
368
-
369
- <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js"></script>
370
- <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>
371
- <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
372
- <script src="{{ "/assets/js/app.min.js" | relative_url }}"></script>
373
- <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.min.js"></script>
374
- <script src="https://cdn.jsdelivr.net/npm/clipboard/dist/clipboard.min.js"></script>
375
- <script src="https://cdn.jsdelivr.net/npm/hotkeys-js/dist/hotkeys.min.js"></script>
376
- {% include waline.html %}
377
- <script src="https://cdn.jsdelivr.net/npm/lazysizes@5.3.2/lazysizes.min.js" async></script>
378
- <script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.2/dayjs.min.js"></script>
379
- <script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.2/plugin/customParseFormat.js"></script>
380
- <script src="https://cdn.jsdelivr.net/npm/dayjs@1.11.2/plugin/relativeTime.js"></script>
381
- <script>
382
- /**
383
- * Better Scroll Experience
384
- */
385
- function scrollToAdjust(id){
386
- var element = document.getElementById(id);
387
- var headerOffset = 90;
388
- var elementPosition = element.getBoundingClientRect().top;
389
- var offsetPosition = elementPosition + window.scrollY - headerOffset;
390
- window.scrollTo({
391
- top: offsetPosition,
392
- behavior: "smooth"
393
- });
394
- }
395
- // 给图片添加链接
396
- $(document).ready(function() {
397
- var baseurl = $("meta[property='og:baseurl']").attr('content');
398
- $("p img").each(function() {
399
- $(this).attr('data-src', $(this).attr('src')).removeAttr('src').addClass("lazyload").attr('src', baseurl + '/assets/img/loading.gif');
400
- var strA = "<a data-fancybox='gallery' ref='gallery' href='" + $(this).attr('data-src') + "' data-caption='" + $(this).attr('alt') + "'></a>";
401
- $(this).wrapAll(strA);
402
- var caption = $(this)[0].alt;
403
- $(this).parent().after('<span class="caption">' + caption + '</span>');
404
- });
405
-
406
- Fancybox.bind('[data-fancybox]', {
407
- on: {
408
- load: (fancybox, slide) => {
409
- var gray = $("meta[property='og:gray']").attr('content');
410
- if(gray == "true"){
411
- $(".fancybox__content img").addClass("gray");
412
- $(".carousel__track .fancybox__thumb").addClass("gray");
413
- }
414
- }
415
- }
416
- });
417
-
418
- {% if site.comments.waline %}
419
- Waline.init({
420
- el: '#waline',
421
- serverURL: '{{ site.comments.waline_url }}',
422
- reaction: {{ site.comments.waline_reaction }},
423
- comment: true,
424
- locale: {{ site.comments.waline_locale }}
425
- });
426
- {% endif %}
427
-
428
- if($("#comments-switch").length > 0){
429
- var comment_status = $("#cmn-toggle-4")[0].checked;
430
- if(comment_status){
431
- $("#waline").addClass("active");
432
- }else {
433
- $("#disqus_thread").addClass("active");
434
- }
435
- $("#cmn-toggle-4").click(function(){
436
- $("#disqus_thread").toggleClass("active");
437
- $("#waline").toggleClass("active");
438
- })
439
- }else {
440
- if($("#disqus_thread").length > 0) {
441
- $("#disqus_thread").addClass("active");
442
- }else if($("#waline").length > 0) {
443
- $("#waline").addClass("active");
444
- }
445
- }
446
-
447
- var time_formats = ['YYYY-MM-DD HH:mm:ss ZZ', 'YYYY DD MMM HH:mm:ss ZZ', 'YYYY年MM月DD日 HH:mm:ss ZZ'];
448
- function dateFormat(date, format){
449
- var date_org = dayjs(date, time_formats[format]);
450
- var date = date_org.format(time_formats[format]);
451
- return {"date_org": date_org, "date": date}
452
- }
453
-
454
- dayjs.extend(window.dayjs_plugin_customParseFormat);
455
- dayjs.extend(window.dayjs_plugin_relativeTime);
456
- var post_date = $("meta[property='post-date']").attr('content');
457
- var post_date_format = $("meta[property='post-date-format']").attr('content');
458
- var local_post_date = dateFormat(post_date, post_date_format);
459
-
460
- $(".post time span.create-at").html(local_post_date["date"]);
461
-
462
- fetch("https://api.github.com/repos/{{ site.github.owner }}/{{ site.github.repository }}/commits?path={{ page.path }}")
463
- .then((response) => {
464
- return response.json();
465
- })
466
- .then((commits) => {
467
- if(commits.length != 0){
468
- var update_at = dayjs(commits[0]['commit']['committer']['date']);
469
- }else {
470
- var update_at = post_date
471
- }
472
-
473
- var local_update_at = dateFormat(update_at, post_date_format);
474
- $('.post time span.update-at').html(local_update_at["date"]);
475
-
476
- var relative_time = dayjs().diff(local_update_at["date_org"], 'day');
477
- $(".post-copyright .tips span").append(relative_time);
478
- if(relative_time > 365){
479
- $(".post-copyright .tips").addClass("active");
480
- }
481
- });
482
-
483
- /*
484
- * Keyboard shortcut bind: left and right
485
- */
486
-
487
- var previous_url = $("meta[property='og:previous_url']").attr('content');
488
- var next_url = $("meta[property='og:next_url']").attr('content');
489
-
490
- hotkeys('left', function(event, handler){
491
- // Prevent the default refresh event under WINDOWS system
492
- event.preventDefault();
493
- if(previous_url){
494
- console.log('you pressed left!');
495
- window.location.href = previous_url;
496
- }else {
497
- $("#no-previous").addClass("active");
498
- setTimeout(function(){$("#no-previous").removeClass("active");}, 1500);
499
- }
500
- });
501
-
502
- hotkeys('right', function(event, handler){
503
- // Prevent the default refresh event under WINDOWS system
504
- event.preventDefault();
505
- if(next_url){
506
- console.log('you pressed right!');
507
- window.location.href = next_url;
508
- }else {
509
- $("#no-next").addClass("active");
510
- setTimeout(function(){$("#no-next").removeClass("active");}, 1500);
511
- }
512
- });
513
- });
514
- </script>
515
- <script src="https://at.alicdn.com/t/font_3046306_skfh9jzzbbf.js"></script>
516
- {% include analytics.html %}
517
- {% include umami.html %}
518
- {% include busuanzi.html %}
519
- {% include pwa.html %}
520
- {% include mathjax.html %}
521
- {% include mermaid.html %}
522
- {% include webpusher.html %}
523
- </body>
524
-
525
- </html>
187
+ {% include plugins/comments/comments_block.html %}
188
+ </section>