Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cef9fe2549 | ||
|
|
21b42f0b6c | ||
|
|
79412144d9 | ||
|
|
79d8c1db38 | ||
|
|
8b6622792d | ||
|
|
1814a14c20 | ||
|
|
bdd2bd429a | ||
|
|
6c27767dac | ||
|
|
e661fe2ead | ||
|
|
8b17b8a4ee | ||
|
|
326c052a24 | ||
|
|
9914bba42c | ||
|
|
a37ebbe2aa | ||
|
|
83e3a4e8e1 | ||
|
|
a8718592df | ||
|
|
70cc14fcbe | ||
|
|
90e259f31e | ||
|
|
1ec73b2d76 | ||
|
|
0de250c9ff | ||
|
|
84dd80959a | ||
|
|
2ee854dd6a | ||
|
|
ced387cbd5 | ||
|
|
efa3452cdb | ||
|
|
5ac2552e7c | ||
|
|
ae477ab224 | ||
|
|
3572fff280 | ||
|
|
400b0a9283 | ||
|
|
bccb62cd46 | ||
|
|
0d645fe664 | ||
|
|
d790d42441 |
@@ -0,0 +1,42 @@
|
|||||||
|
name: Build Hugo Artifact
|
||||||
|
|
||||||
|
# Controls when the action will run.
|
||||||
|
on:
|
||||||
|
# Triggers the workflow on push or pull request events but only for the master branch
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
build:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Hugo setup
|
||||||
|
uses: peaceiris/[email protected]
|
||||||
|
with:
|
||||||
|
# The Hugo version to download (if necessary) and use. Example: 0.58.2
|
||||||
|
hugo-version: latest # optional, default is latest
|
||||||
|
# Download (if necessary) and use Hugo extended version. Example: true
|
||||||
|
extended: true # optional, default is false
|
||||||
|
|
||||||
|
# Runs a set of commands using the runners shell
|
||||||
|
- name: Generate Hugo site
|
||||||
|
run: cd exampleSite && hugo --gc --themesDir ../..
|
||||||
|
|
||||||
|
- name: Upload Hugo artifact
|
||||||
|
uses: actions/[email protected]
|
||||||
|
with:
|
||||||
|
# Artifact name
|
||||||
|
name: resources
|
||||||
|
# A file, directory or wildcard pattern that describes what to upload
|
||||||
|
path: exampleSite/resources
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
image:
|
||||||
|
style:
|
||||||
|
background: "#2a9d8f"
|
||||||
|
color: "#fff"
|
||||||
|
---
|
||||||
+11
-2
@@ -1,2 +1,11 @@
|
|||||||
+++
|
---
|
||||||
+++
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
description:
|
||||||
|
date: {{ .Date }}
|
||||||
|
image:
|
||||||
|
math:
|
||||||
|
license:
|
||||||
|
hidden: false
|
||||||
|
comments: true
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
description:
|
||||||
|
image:
|
||||||
|
---
|
||||||
@@ -14,8 +14,7 @@
|
|||||||
|
|
||||||
/* Error */
|
/* Error */
|
||||||
.chroma .err {
|
.chroma .err {
|
||||||
color: #960050;
|
color: #bb0064;
|
||||||
background-color: #1e0010
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LineTableTD */
|
/* LineTableTD */
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
/* Error */
|
/* Error */
|
||||||
.chroma .err {
|
.chroma .err {
|
||||||
color: #960050;
|
color: #960050;
|
||||||
background-color: #1e0010
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LineTableTD */
|
/* LineTableTD */
|
||||||
|
|||||||
@@ -244,7 +244,6 @@
|
|||||||
padding: 2px 4px;
|
padding: 2px 4px;
|
||||||
border-radius: var(--tag-border-radius);
|
border-radius: var(--tag-border-radius);
|
||||||
font-family: var(--code-font-family);
|
font-family: var(--code-font-family);
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.gallery {
|
.gallery {
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ $defaultTagColors: #fff, #fff, #fff, #fff, #fff;
|
|||||||
--sys-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";
|
--sys-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue";
|
||||||
--zh-font-family: "PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";
|
--zh-font-family: "PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";
|
||||||
|
|
||||||
--base-font-family: "Lato", var(--sys-font-family), var(--zh-font-family);
|
--base-font-family: "Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;
|
||||||
--code-font-family: Menlo, Monaco, Consolas, "Courier New";
|
--code-font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ class StackColorScheme {
|
|||||||
this.bindMatchMedia();
|
this.bindMatchMedia();
|
||||||
this.currentScheme = this.getSavedScheme();
|
this.currentScheme = this.getSavedScheme();
|
||||||
|
|
||||||
|
this.dispatchEvent(document.body.dataset.scheme as colorScheme);
|
||||||
|
|
||||||
if (toggleEl)
|
if (toggleEl)
|
||||||
this.bindClick(toggleEl);
|
this.bindClick(toggleEl);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
Vibrant:
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js
|
||||||
|
integrity: sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=
|
||||||
|
type: script
|
||||||
|
|
||||||
|
PhotoSwipe:
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe.min.js
|
||||||
|
integrity: sha256-ePwmChbbvXbsO02lbM3HoHbSHTHFAeChekF1xKJdleo=
|
||||||
|
type: script
|
||||||
|
defer: true
|
||||||
|
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe-ui-default.min.js
|
||||||
|
integrity: sha256-UKkzOn/w1mBxRmLLGrSeyB4e1xbrp4xylgAWb3M42pU=
|
||||||
|
type: script
|
||||||
|
defer: true
|
||||||
|
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/default-skin/default-skin.css
|
||||||
|
integrity: sha256-c0uckgykQ9v5k+IqViZOZKc47Jn7KQil4/MP3ySA3F8=
|
||||||
|
type: style
|
||||||
|
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe.css
|
||||||
|
integrity: sha256-SBLU4vv6CA6lHsZ1XyTdhyjJxCjPif/TRkjnsyGAGnE=
|
||||||
|
type: style
|
||||||
|
|
||||||
|
KaTeX:
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css
|
||||||
|
integrity: sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X
|
||||||
|
type: style
|
||||||
|
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js
|
||||||
|
integrity: sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4
|
||||||
|
type: script
|
||||||
|
defer: true
|
||||||
|
|
||||||
|
- src: https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js
|
||||||
|
integrity: sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa
|
||||||
|
type: script
|
||||||
|
defer: true
|
||||||
@@ -7,6 +7,9 @@ title: Example Site
|
|||||||
# Change it to your Disqus shortname before using
|
# Change it to your Disqus shortname before using
|
||||||
disqusShortname: hugo-theme-stack
|
disqusShortname: hugo-theme-stack
|
||||||
|
|
||||||
|
# GA Tracking ID
|
||||||
|
googleAnalytics:
|
||||||
|
|
||||||
# Theme i18n support
|
# Theme i18n support
|
||||||
# Available values: en, fr, id, ja, ko, pt-br, zh-cn
|
# Available values: en, fr, id, ja, ko, pt-br, zh-cn
|
||||||
DefaultContentLanguage: en
|
DefaultContentLanguage: en
|
||||||
@@ -46,11 +49,16 @@ params:
|
|||||||
comments:
|
comments:
|
||||||
enabled: true
|
enabled: true
|
||||||
provider: disqus
|
provider: disqus
|
||||||
|
|
||||||
utterances:
|
utterances:
|
||||||
repo:
|
repo:
|
||||||
issueTerm: pathname
|
issueTerm: pathname
|
||||||
label:
|
label:
|
||||||
theme: preferred-color-scheme
|
|
||||||
|
remark42:
|
||||||
|
host:
|
||||||
|
site:
|
||||||
|
locale:
|
||||||
|
|
||||||
widgets:
|
widgets:
|
||||||
enabled:
|
enabled:
|
||||||
@@ -60,7 +68,6 @@ params:
|
|||||||
|
|
||||||
archives:
|
archives:
|
||||||
limit: 5
|
limit: 5
|
||||||
path: archives
|
|
||||||
|
|
||||||
tagCloud:
|
tagCloud:
|
||||||
limit: 10
|
limit: 10
|
||||||
|
|||||||
@@ -16,10 +16,6 @@ list:
|
|||||||
one: Subsection
|
one: Subsection
|
||||||
other: Subsections
|
other: Subsections
|
||||||
|
|
||||||
archives:
|
|
||||||
categories:
|
|
||||||
other: Categories
|
|
||||||
|
|
||||||
article:
|
article:
|
||||||
relatedContents:
|
relatedContents:
|
||||||
other: Related contents
|
other: Related contents
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
toggleMenu:
|
toggleMenu:
|
||||||
other: メニューを開く・閉じる
|
other: メニューを開く・閉じる
|
||||||
|
|
||||||
|
darkMode:
|
||||||
|
other: ダークモード
|
||||||
|
|
||||||
article:
|
article:
|
||||||
relatedContents:
|
relatedContents:
|
||||||
other: 関連するコンテンツ
|
other: 関連するコンテンツ
|
||||||
@@ -22,3 +25,11 @@ widget:
|
|||||||
tagCloud:
|
tagCloud:
|
||||||
title:
|
title:
|
||||||
other: タグ
|
other: タグ
|
||||||
|
|
||||||
|
search:
|
||||||
|
title:
|
||||||
|
other: サーチ
|
||||||
|
placeholder:
|
||||||
|
other: 入力...
|
||||||
|
resultTitle:
|
||||||
|
other: "#PAGES_COUNT 件 (#TIME_SECONDS 秒)"
|
||||||
|
|||||||
+14
-3
@@ -1,9 +1,20 @@
|
|||||||
toggleMenu:
|
toggleMenu:
|
||||||
other: Alternar Menu
|
other: Alternar Menu
|
||||||
|
|
||||||
archives:
|
darkMode:
|
||||||
categories:
|
other: Modo Escuro
|
||||||
other: Categorias
|
|
||||||
|
list:
|
||||||
|
page:
|
||||||
|
one: "{{ .Count }} página"
|
||||||
|
other: "{{ .Count }} páginas"
|
||||||
|
|
||||||
|
section:
|
||||||
|
other: Seção
|
||||||
|
|
||||||
|
subsection:
|
||||||
|
one: Subseção
|
||||||
|
other: Subseções
|
||||||
|
|
||||||
article:
|
article:
|
||||||
relatedContents:
|
relatedContents:
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
toggleMenu:
|
||||||
|
other: Показать/скрыть меню
|
||||||
|
|
||||||
|
darkMode:
|
||||||
|
other: Тёмный режим
|
||||||
|
|
||||||
|
list:
|
||||||
|
page:
|
||||||
|
one: "{{ .Count }} страница"
|
||||||
|
few: "{{ .Count }} страницы"
|
||||||
|
many: "{{ .Count }} страниц"
|
||||||
|
other: "{{ .Count }} страниц"
|
||||||
|
|
||||||
|
section:
|
||||||
|
other: Раздел
|
||||||
|
|
||||||
|
subsection:
|
||||||
|
one: Подраздел
|
||||||
|
few: Подразделы
|
||||||
|
many: Подразделы
|
||||||
|
other: Подразделы
|
||||||
|
|
||||||
|
article:
|
||||||
|
relatedContents:
|
||||||
|
other: Также рекомендуем
|
||||||
|
lastUpdatedOn:
|
||||||
|
other: Обновлено
|
||||||
|
|
||||||
|
notFound:
|
||||||
|
title:
|
||||||
|
other: Не найдено
|
||||||
|
subtitle:
|
||||||
|
other: Запрашиваемая страница не существует
|
||||||
|
|
||||||
|
widget:
|
||||||
|
archives:
|
||||||
|
title:
|
||||||
|
other: Архивы
|
||||||
|
more:
|
||||||
|
other: Ещё
|
||||||
|
tagCloud:
|
||||||
|
title:
|
||||||
|
other: Теги
|
||||||
|
|
||||||
|
search:
|
||||||
|
title:
|
||||||
|
other: Поиск
|
||||||
|
placeholder:
|
||||||
|
other: Введите что-нибудь...
|
||||||
|
resultTitle:
|
||||||
|
other: "Найдено #PAGES_COUNT страниц (за #TIME_SECONDS с.)"
|
||||||
|
|
||||||
|
footer:
|
||||||
|
builtWith:
|
||||||
|
other: Создано при помощи {{ .Generator }}
|
||||||
|
designedBy:
|
||||||
|
other: Тема {{ .Theme }}, дизайн {{ .DesignedBy }}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
toggleMenu:
|
||||||
|
other: Menüyü Gizle
|
||||||
|
|
||||||
|
darkMode:
|
||||||
|
other: Koyu Mod
|
||||||
|
|
||||||
|
list:
|
||||||
|
page:
|
||||||
|
one: "{{ .Count }} makale"
|
||||||
|
other: "{{ .Count }} makale"
|
||||||
|
|
||||||
|
section:
|
||||||
|
other: Bölüm
|
||||||
|
|
||||||
|
subsection:
|
||||||
|
one: Alt bölüm
|
||||||
|
other: Alt bölümler
|
||||||
|
|
||||||
|
article:
|
||||||
|
relatedContents:
|
||||||
|
other: Alakalı içerikler
|
||||||
|
lastUpdatedOn:
|
||||||
|
other: Son güncelleme
|
||||||
|
|
||||||
|
notFound:
|
||||||
|
title:
|
||||||
|
other: Bulunamadı
|
||||||
|
subtitle:
|
||||||
|
other: Aradığınız sayfa mevcut değil.
|
||||||
|
|
||||||
|
widget:
|
||||||
|
archives:
|
||||||
|
title:
|
||||||
|
other: Arşiv
|
||||||
|
more:
|
||||||
|
other: Daha fazla
|
||||||
|
tagCloud:
|
||||||
|
title:
|
||||||
|
other: Etiketler
|
||||||
|
|
||||||
|
search:
|
||||||
|
title:
|
||||||
|
other: Arama
|
||||||
|
placeholder:
|
||||||
|
other: Birşeyler yazın...
|
||||||
|
resultTitle:
|
||||||
|
other: "#PAGES_COUNT sayfa (#TIME_SECONDS saniye)"
|
||||||
|
|
||||||
|
footer:
|
||||||
|
builtWith:
|
||||||
|
other: "{{ .Generator }} ile oluşturuldu."
|
||||||
|
designedBy:
|
||||||
|
other: "{{ .Theme }} teması {{ .DesignedBy }} tarafından tasarlandı"
|
||||||
@@ -4,10 +4,6 @@ toggleMenu:
|
|||||||
darkMode:
|
darkMode:
|
||||||
other: 暗色模式
|
other: 暗色模式
|
||||||
|
|
||||||
archives:
|
|
||||||
categories:
|
|
||||||
other: 分类
|
|
||||||
|
|
||||||
article:
|
article:
|
||||||
relatedContents:
|
relatedContents:
|
||||||
other: 相关文章
|
other: 相关文章
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{{- $image := .Page.Resources.GetMatch (printf "%s" (.Destination | safeURL)) -}}
|
{{- $image := .Page.Resources.GetMatch (printf "%s" (.Destination | safeURL)) -}}
|
||||||
{{- if $image -}}
|
{{- if and $image (ne (path.Ext .Destination) ".svg") -}}
|
||||||
{{- $alt := .PlainText | safeHTML -}}
|
{{- $alt := .PlainText | safeHTML -}}
|
||||||
<figure style="flex-grow: {{ div (mul $image.Width 100) $image.Height }}; flex-basis: {{ div (mul $image.Width 240) $image.Height }}px">
|
<figure style="flex-grow: {{ div (mul $image.Width 100) $image.Height }}; flex-basis: {{ div (mul $image.Width 240) $image.Height }}px">
|
||||||
<a href="{{ $image.RelPermalink }}" data-size="{{ $image.Width }}x{{ $image.Height }}">
|
<a href="{{ $image.RelPermalink }}" data-size="{{ $image.Width }}x{{ $image.Height }}">
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
{{ define "body-class" }}template-archives{{ end }}
|
{{ define "body-class" }}template-archives{{ end }}
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
{{ $categories := ($.Site.GetPage "taxonomyTerm" "categories").Pages }}
|
{{- $taxonomy := $.Site.GetPage "taxonomyTerm" "categories" -}}
|
||||||
{{ if $categories }}
|
{{- $terms := $taxonomy.Pages -}}
|
||||||
<h2 class="section-title">{{ T "archives.categories" }}</h2>
|
{{ if $terms }}
|
||||||
|
<h2 class="section-title">{{ $taxonomy.Title }}</h2>
|
||||||
<div class="subsection-list">
|
<div class="subsection-list">
|
||||||
<div class="article-list--tile">
|
<div class="article-list--tile">
|
||||||
{{ range $categories }}
|
{{ range $terms }}
|
||||||
{{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "taxonomy") }}
|
{{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "taxonomy") }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -42,8 +42,17 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ $subsections := .Sections }}
|
{{- $subsections := .Sections -}}
|
||||||
{{ with $subsections }}
|
{{- $pages := .Pages | complement $subsections -}}
|
||||||
|
|
||||||
|
{{- if eq (len $pages) 0 -}}
|
||||||
|
{{/* If there are no normal pages, display subsections in list style, with pagination */}}
|
||||||
|
{{/* This happens with taxonomies like categories or tags */}}
|
||||||
|
{{- $pages = $subsections -}}
|
||||||
|
{{- $subsections = slice -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- with $subsections -}}
|
||||||
<h2 class="section-title">{{ T "list.subsection" (len $subsections) }}</h2>
|
<h2 class="section-title">{{ T "list.subsection" (len $subsections) }}</h2>
|
||||||
<div class="subsection-list">
|
<div class="subsection-list">
|
||||||
<div class="article-list--tile">
|
<div class="article-list--tile">
|
||||||
@@ -52,10 +61,10 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{- end -}}
|
||||||
|
|
||||||
{{/* List only pages that are not a subsection */}}
|
{{/* List only pages that are not a subsection */}}
|
||||||
{{ $paginator := .Paginate (.Pages | complement $subsections) }}
|
{{ $paginator := .Paginate $pages }}
|
||||||
<section class="article-list--compact">
|
<section class="article-list--compact">
|
||||||
{{ range $paginator.Pages }}
|
{{ range $paginator.Pages }}
|
||||||
{{ partial "article-list/compact" . }}
|
{{ partial "article-list/compact" . }}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<input name="keyword" placeholder="{{ T `search.placeholder` }}" />
|
<input name="keyword" placeholder="{{ T `search.placeholder` }}" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<button title="Search">
|
<button title="{{ T `search.title` }}">
|
||||||
{{ partial "helper/icon" "search" }}
|
{{ partial "helper/icon" "search" }}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css"
|
{{- partial "helper/external" (dict "Context" . "Namespace" "KaTeX") -}}
|
||||||
integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
|
|
||||||
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js"
|
|
||||||
integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js"
|
|
||||||
integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"
|
|
||||||
onload="StackLaTeX()"></script>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function StackLaTeX() {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
renderMathInElement(document.querySelector(`.article-content`), {
|
renderMathInElement(document.querySelector(`.article-content`), {
|
||||||
delimiters: [
|
delimiters: [
|
||||||
{ left: "$$", right: "$$", display: true },
|
{ left: "$$", right: "$$", display: true },
|
||||||
@@ -16,6 +8,5 @@
|
|||||||
{ left: "\\(", right: "\\)", display: false },
|
{ left: "\\(", right: "\\)", display: false },
|
||||||
{ left: "\\[", right: "\\]", display: true }
|
{ left: "\\[", right: "\\]", display: true }
|
||||||
]
|
]
|
||||||
});
|
});})
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
@@ -65,8 +65,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe.min.js"></script>
|
{{- partial "helper/external" (dict "Context" . "Namespace" "PhotoSwipe") -}}
|
||||||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe-ui-default.min.js"></script>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/default-skin/default-skin.css">
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/photoswipe.css">
|
|
||||||
@@ -10,3 +10,13 @@
|
|||||||
padding: var(--card-padding);
|
padding: var(--card-padding);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.addEventListener('onColorSchemeChange', (e) => {
|
||||||
|
if (DISQUS) {
|
||||||
|
DISQUS.reset({
|
||||||
|
reload: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{{- with .Site.Params.comments.remark42 -}}
|
||||||
|
<div id="remark42"></div>
|
||||||
|
<script>
|
||||||
|
var remark_config = {
|
||||||
|
host: "{{ .host }}",
|
||||||
|
site_id: '{{ .site }}',
|
||||||
|
components: ['embed'],
|
||||||
|
url: "{{ $.Permalink }}",
|
||||||
|
max_shown_comments: {{ default 15 .max_shown_comments }},
|
||||||
|
theme: document.body.dataset.scheme,
|
||||||
|
page_title: '{{ $.Title }}',
|
||||||
|
locale: '{{ default "en" .locale }}',
|
||||||
|
show_email_subscription: {{ default true .show_email_subscription }}
|
||||||
|
};
|
||||||
|
|
||||||
|
(function (c) {
|
||||||
|
for (var i = 0; i < c.length; i++) {
|
||||||
|
var d = document, s = d.createElement('script');
|
||||||
|
s.src = remark_config.host + '/web/' + c[i] + '.js';
|
||||||
|
s.defer = true;
|
||||||
|
(d.head || d.body).appendChild(s);
|
||||||
|
}
|
||||||
|
})(remark_config.components || ['embed']);
|
||||||
|
|
||||||
|
window.addEventListener('onColorSchemeChange', (e) => {
|
||||||
|
window.REMARK42.changeTheme(e.detail);
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{{- end -}}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
<script src="https://utteranc.es/client.js"
|
<script src="https://utteranc.es/client.js"
|
||||||
repo="{{ .Site.Params.comments.utterances.repo }}"
|
repo="{{ .Site.Params.comments.utterances.repo }}"
|
||||||
issue-term="{{ .Site.Params.comments.utterances.issueTerm }}"
|
issue-term="{{ .Site.Params.comments.utterances.issueTerm }}"
|
||||||
theme="{{ .Site.Params.comments.utterances.theme }}"
|
|
||||||
{{ with .Site.Params.comments.utterances.label }}
|
{{ with .Site.Params.comments.utterances.label }}
|
||||||
label="{{ . }}"
|
label="{{ . }}"
|
||||||
{{ end }}
|
{{ end }}
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
async>
|
async
|
||||||
|
>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -14,3 +14,27 @@
|
|||||||
max-width: unset;
|
max-width: unset;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function setUtterancesTheme(theme) {
|
||||||
|
let utterances = document.querySelector('.utterances iframe');
|
||||||
|
if (utterances) {
|
||||||
|
utterances.contentWindow.postMessage(
|
||||||
|
{
|
||||||
|
type: 'set-theme',
|
||||||
|
theme: `github-${theme}`
|
||||||
|
},
|
||||||
|
'https://utteranc.es'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventListener('message', event => {
|
||||||
|
if (event.origin !== 'https://utteranc.es') return;
|
||||||
|
setUtterancesTheme(document.body.dataset.scheme)
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('onColorSchemeChange', (e) => {
|
||||||
|
setUtterancesTheme(e.detail)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js"
|
{{- partial "helper/external" (dict "Context" . "Namespace" "Vibrant") -}}
|
||||||
integrity="sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
{{- $opts := dict "minify" hugo.IsProduction -}}
|
{{- $opts := dict "minify" hugo.IsProduction -}}
|
||||||
{{- $script := resources.Get "ts/main.ts" | js.Build $opts -}}
|
{{- $script := resources.Get "ts/main.ts" | js.Build $opts -}}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{- $ThemeVersion := "2.0.1" -}}
|
{{- $ThemeVersion := "2.2.0" -}}
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<section class="copyright">
|
<section class="copyright">
|
||||||
©
|
©
|
||||||
|
|||||||
@@ -21,4 +21,5 @@
|
|||||||
<link rel="shortcut icon" href="{{ . }}" />
|
<link rel="shortcut icon" href="{{ . }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{- template "_internal/google_analytics_async.html" . -}}
|
||||||
{{- partial "head/custom.html" . -}}
|
{{- partial "head/custom.html" . -}}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{{- $List := index .Context.Site.Data.external .Namespace -}}
|
||||||
|
{{- with $List -}}
|
||||||
|
{{- range . -}}
|
||||||
|
{{- if eq .type "script" -}}
|
||||||
|
<script
|
||||||
|
src="{{ .src }}"
|
||||||
|
{{- with .integrity -}}
|
||||||
|
integrity="{{ . }}"
|
||||||
|
{{- end -}}
|
||||||
|
crossorigin="anonymous"
|
||||||
|
defer="{{ default false .defer }}"
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
{{- else if eq .type "style" -}}
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ .src }}"
|
||||||
|
{{- with .integrity -}}
|
||||||
|
integrity="{{ . }}"
|
||||||
|
{{- end -}}
|
||||||
|
crossorigin="anonymous"
|
||||||
|
>
|
||||||
|
{{- else -}}
|
||||||
|
{{- errorf "Error: unknown external resource type: %s" .type -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- errorf "Error: external resource '%s' is not found" .Namespace -}}
|
||||||
|
{{- end -}}
|
||||||
@@ -16,7 +16,11 @@
|
|||||||
{{ if $pageResourceImage }}
|
{{ if $pageResourceImage }}
|
||||||
<!-- If image is found under page bundle -->
|
<!-- If image is found under page bundle -->
|
||||||
{{ $result = merge $result (dict "permalink" $pageResourceImage.RelPermalink) }}
|
{{ $result = merge $result (dict "permalink" $pageResourceImage.RelPermalink) }}
|
||||||
{{ $result = merge $result (dict "resource" $pageResourceImage) }}
|
|
||||||
|
<!-- Disable SVG image processing, not supported by Hugo -->
|
||||||
|
{{ if ne (path.Ext $imageValue) ".svg" }}
|
||||||
|
{{ $result = merge $result (dict "resource" $pageResourceImage) }}
|
||||||
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<!-- Can not find the image under page bundle. Could be a relative linked image -->
|
<!-- Can not find the image under page bundle. Could be a relative linked image -->
|
||||||
{{ $result = merge $result (dict "permalink" $imageValue) }}
|
{{ $result = merge $result (dict "permalink" $imageValue) }}
|
||||||
|
|||||||
@@ -1,27 +1,33 @@
|
|||||||
<section class="widget archives">
|
{{- $query := first 1 (where .Site.Pages "Layout" "==" "archives") -}}
|
||||||
<div class="widget-icon">
|
{{- if $query -}}
|
||||||
{{ partial "helper/icon" "infinity" }}
|
{{- $archivesPage := index $query 0 -}}
|
||||||
</div>
|
<section class="widget archives">
|
||||||
<h2 class="widget-title section-title">{{ T "widget.archives.title" }}</h2>
|
<div class="widget-icon">
|
||||||
|
{{ partial "helper/icon" "infinity" }}
|
||||||
|
</div>
|
||||||
|
<h2 class="widget-title section-title">{{ T "widget.archives.title" }}</h2>
|
||||||
|
|
||||||
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
|
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
|
||||||
{{ $notHidden := where .Site.RegularPages "Params.hidden" "!=" true }}
|
{{ $notHidden := where .Site.RegularPages "Params.hidden" "!=" true }}
|
||||||
{{ $filtered := ($pages | intersect $notHidden) }}
|
{{ $filtered := ($pages | intersect $notHidden) }}
|
||||||
{{ $archives := $filtered.GroupByDate "2006" }}
|
{{ $archives := $filtered.GroupByDate "2006" }}
|
||||||
|
|
||||||
<div class="widget-archive--list">
|
<div class="widget-archive--list">
|
||||||
{{ range $index, $item := first (add .Site.Params.widgets.archives.limit 1) ($archives) }}
|
{{ range $index, $item := first (add .Site.Params.widgets.archives.limit 1) ($archives) }}
|
||||||
{{- $id := lower (replace $item.Key " " "-") -}}
|
{{- $id := lower (replace $item.Key " " "-") -}}
|
||||||
<div class="archives-year">
|
<div class="archives-year">
|
||||||
<a href="{{ $.Site.Params.widgets.archives.path | relLangURL }}#{{ $id }}">
|
<a href="{{ $archivesPage.RelPermalink }}#{{ $id }}">
|
||||||
{{ if eq $index $.Site.Params.widgets.archives.limit }}
|
{{ if eq $index $.Site.Params.widgets.archives.limit }}
|
||||||
<span class="year">{{ T "widget.archives.more" }}</span>
|
<span class="year">{{ T "widget.archives.more" }}</span>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<span class="year">{{ .Key }}</span>
|
<span class="year">{{ .Key }}</span>
|
||||||
<span class="count">{{ len $item.Pages }}</span>
|
<span class="count">{{ len $item.Pages }}</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
{{- else -}}
|
||||||
|
{{- warnf "Archives page not found. Create a page with layout: archives." -}}
|
||||||
|
{{- end -}}
|
||||||
@@ -1,10 +1,16 @@
|
|||||||
<form action="/search" class="search-form widget" {{ with .OutputFormats.Get "json" -}}data-json="{{ .Permalink }}" {{- end }}>
|
{{- $query := first 1 (where .Site.Pages "Layout" "==" "search") -}}
|
||||||
<p>
|
{{- if $query -}}
|
||||||
<label>{{ T "search.title" }}</label>
|
{{- $searchPage := index $query 0 -}}
|
||||||
<input name="keyword" required placeholder="{{ T `search.placeholder` }}" />
|
<form action="{{ $searchPage.RelPermalink }}" class="search-form widget" {{ with .OutputFormats.Get "json" -}}data-json="{{ .Permalink }}" {{- end }}>
|
||||||
|
<p>
|
||||||
|
<label>{{ T "search.title" }}</label>
|
||||||
|
<input name="keyword" required placeholder="{{ T `search.placeholder` }}" />
|
||||||
|
|
||||||
<button title="Search">
|
<button title="{{ T `search.title` }}">
|
||||||
{{ partial "helper/icon" "search" }}
|
{{ partial "helper/icon" "search" }}
|
||||||
</button>
|
</button>
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
{{- else -}}
|
||||||
|
{{- warnf "Search page not found. Create a page with layout: search." -}}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{{ $vid := (.Get 0) }}
|
||||||
|
{{ $videopage := default 1 (.Get 1) }}
|
||||||
|
{{ $basicQuery := querify "page" $videopage "high_quality" 1 "as_wide" 1 }}
|
||||||
|
{{ $videoQuery := "" }}
|
||||||
|
|
||||||
|
{{ if strings.HasPrefix (lower $vid) "av" }}
|
||||||
|
{{ $videoQuery = querify "aid" (strings.TrimPrefix "av" (lower $vid)) }}
|
||||||
|
{{ else if strings.HasPrefix (lower $vid) "bv" }}
|
||||||
|
{{ $videoQuery = querify "bvid" $vid }}
|
||||||
|
{{ else }}
|
||||||
|
<p>Bilibili 视频av号或BV号错误!请检查视频av号或BV号是否正确</p>
|
||||||
|
<p>当前视频av或BV号:{{ $vid }},视频分P:{{ $videopage }}</p>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div style="position: relative; width: 100%; height: 0; padding-bottom: 56.25%;">
|
||||||
|
<iframe src="//player.bilibili.com/player.html?{{ $basicQuery | safeURL }}&{{ $videoQuery | safeURL }}"
|
||||||
|
scrolling="no"
|
||||||
|
frameborder="no"
|
||||||
|
framespacing="0"
|
||||||
|
allowfullscreen="true"
|
||||||
|
style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;"
|
||||||
|
>
|
||||||
|
</iframe>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{{ $vid := .Get 0 }}
|
||||||
|
<div style="position: relative; width: 100%; height: 0; padding-bottom: 56.25%;">
|
||||||
|
<iframe src="http://v.qq.com/txp/iframe/player.html?vid={{ $vid }}&auto=0"
|
||||||
|
scrolling="no"
|
||||||
|
frameborder="no"
|
||||||
|
framespacing="0"
|
||||||
|
allowfullscreen="true"
|
||||||
|
style="position: absolute; width: 100%; height: 100%;">
|
||||||
|
</iframe>
|
||||||
|
</div>
|
||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user