Compare commits

...
24 Commits
Author SHA1 Message Date
Jimmy Cai 75f5c209e1 chore: update compiled CSS file 2020-09-20 12:31:37 +02:00
Jimmy Cai 0bcfb160f1 fix: use .RelPermalink to include CSS 2020-09-20 11:33:32 +02:00
Jimmy CaiandGitHub 3a003eadca Merge pull request #13 from CaiJimmy/custom-taxonomy-permalink
feat(article): add support for custom taxonomy link
2020-09-18 20:06:42 +02:00
Jimmy Cai 117dd4b81e fix(article/details): fix custom taxonomy link 2020-09-18 20:05:19 +02:00
Jimmy Cai b2a1afd744 feat(tag cloud): add support for custom taxonomy link 2020-09-18 10:58:38 +02:00
Jimmy CaiandGitHub d292727821 Merge branch 'master' into custom-taxonomy-permalink 2020-09-18 00:35:43 +02:00
Jimmy Cai 93146c9dc3 fix: add .Type as second cache key for helper/image
closes https://github.com/CaiJimmy/hugo-theme-stack/issues/12
2020-09-18 00:12:26 +02:00
Jimmy Cai b540350d76 feat(article): add support for custom taxonomy link 2020-09-18 00:00:39 +02:00
Jimmy Cai c74cc3e4b3 feat(article): add partialCached to article/components/details
Avoid rendering twice (in post list and article page)
2020-09-17 23:13:50 +02:00
Jimmy CaiandGitHub e20d401007 Merge pull request #11 from CaiJimmy/netlify-cache
ci: add cache for Netlify build
2020-09-17 22:33:58 +02:00
Jimmy CaiandGitHub 4a12e6fc31 Merge pull request #10 from CaiJimmy/partials-cache
feat: add partialCached for some of the most invocated partial templates
2020-09-17 22:33:29 +02:00
Jimmy Cai 69e41b1c0d ci(netlify): move plugins folder to exampleSite 2020-09-17 22:30:21 +02:00
Jimmy Cai 3496001c26 fix(netlify): add . to plugin dir 2020-09-17 22:26:08 +02:00
Jimmy Cai c597c208a8 ci(netlify): add resources cache
Modified https://github.com/cdeleeuwe/netlify-plugin-hugo-cache-resources, set cache dir to `exampleSite/resources`
2020-09-17 22:21:14 +02:00
Jimmy Cai bad33e19ae feat(post/single): add partialCached for PhotoSwipe HTML
Forgot to add it
2020-09-17 22:09:15 +02:00
Jimmy Cai 8f0d420d24 feat: add partialCached for data/title data/description 2020-09-17 21:59:57 +02:00
Jimmy Cai cf6502c311 feat: add partialCached to helper/image invocation
Using .RelPermalink as key for cache
2020-09-17 21:52:06 +02:00
Jimmy Cai 9a64b7a6f1 feat: partialCached for PhotoSwipe HTML 2020-09-17 21:46:48 +02:00
Jimmy Cai 96ff911c6e feat(article): better syntax highlight style
Adapt to light & dark mode
2020-09-17 19:48:21 +02:00
Jimmy Cai 845834baa6 refactor(footer): add footer/include.html
To include HTML code for style and script
2020-09-17 19:47:03 +02:00
Jimmy Cai 841508f491 fix(menu): use <ol> to wrap menu items 2020-09-14 13:38:24 +02:00
Jimmy Cai 1e28a661d9 fix(article list): specify image width in srcset 2020-09-14 13:37:50 +02:00
Jimmy Cai 8c4ad17a09 feat(footer): add rel="noopener" to footer links 2020-09-14 13:37:15 +02:00
Jimmy Cai 4267346a4a fix: use absLangURL for menu url
To avoid problem when the site is hosted in subdirectory
2020-09-13 14:03:41 +02:00
33 changed files with 947 additions and 56 deletions
+390
View File
@@ -0,0 +1,390 @@
/*
* Style: monokai
* https://xyproto.github.io/splash/docs/monokai.html
*/
:root {
--pre-text-color: #f8f8f2;
--pre-background-color: #272822;
}
/* Background */
.chroma {
color: #f8f8f2;
background-color: #272822
}
/* Other */
.chroma .x {}
/* Error */
.chroma .err {
color: #960050;
background-color: #1e0010
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
width: auto;
overflow: auto;
display: block;
}
/* LineHighlight */
.chroma .hl {
display: block;
width: 100%;
background-color: #ffffcc
}
/* LineNumbersTable */
.chroma .lnt {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #7f7f7f
}
/* LineNumbers */
.chroma .ln {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #7f7f7f
}
/* Keyword */
.chroma .k {
color: #66d9ef
}
/* KeywordConstant */
.chroma .kc {
color: #66d9ef
}
/* KeywordDeclaration */
.chroma .kd {
color: #66d9ef
}
/* KeywordNamespace */
.chroma .kn {
color: #f92672
}
/* KeywordPseudo */
.chroma .kp {
color: #66d9ef
}
/* KeywordReserved */
.chroma .kr {
color: #66d9ef
}
/* KeywordType */
.chroma .kt {
color: #66d9ef
}
/* Name */
.chroma .n {}
/* NameAttribute */
.chroma .na {
color: #a6e22e
}
/* NameBuiltin */
.chroma .nb {}
/* NameBuiltinPseudo */
.chroma .bp {}
/* NameClass */
.chroma .nc {
color: #a6e22e
}
/* NameConstant */
.chroma .no {
color: #66d9ef
}
/* NameDecorator */
.chroma .nd {
color: #a6e22e
}
/* NameEntity */
.chroma .ni {}
/* NameException */
.chroma .ne {
color: #a6e22e
}
/* NameFunction */
.chroma .nf {
color: #a6e22e
}
/* NameFunctionMagic */
.chroma .fm {}
/* NameLabel */
.chroma .nl {}
/* NameNamespace */
.chroma .nn {}
/* NameOther */
.chroma .nx {
color: #a6e22e
}
/* NameProperty */
.chroma .py {}
/* NameTag */
.chroma .nt {
color: #f92672
}
/* NameVariable */
.chroma .nv {}
/* NameVariableClass */
.chroma .vc {}
/* NameVariableGlobal */
.chroma .vg {}
/* NameVariableInstance */
.chroma .vi {}
/* NameVariableMagic */
.chroma .vm {}
/* Literal */
.chroma .l {
color: #ae81ff
}
/* LiteralDate */
.chroma .ld {
color: #e6db74
}
/* LiteralString */
.chroma .s {
color: #e6db74
}
/* LiteralStringAffix */
.chroma .sa {
color: #e6db74
}
/* LiteralStringBacktick */
.chroma .sb {
color: #e6db74
}
/* LiteralStringChar */
.chroma .sc {
color: #e6db74
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #e6db74
}
/* LiteralStringDoc */
.chroma .sd {
color: #e6db74
}
/* LiteralStringDouble */
.chroma .s2 {
color: #e6db74
}
/* LiteralStringEscape */
.chroma .se {
color: #ae81ff
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #e6db74
}
/* LiteralStringInterpol */
.chroma .si {
color: #e6db74
}
/* LiteralStringOther */
.chroma .sx {
color: #e6db74
}
/* LiteralStringRegex */
.chroma .sr {
color: #e6db74
}
/* LiteralStringSingle */
.chroma .s1 {
color: #e6db74
}
/* LiteralStringSymbol */
.chroma .ss {
color: #e6db74
}
/* LiteralNumber */
.chroma .m {
color: #ae81ff
}
/* LiteralNumberBin */
.chroma .mb {
color: #ae81ff
}
/* LiteralNumberFloat */
.chroma .mf {
color: #ae81ff
}
/* LiteralNumberHex */
.chroma .mh {
color: #ae81ff
}
/* LiteralNumberInteger */
.chroma .mi {
color: #ae81ff
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #ae81ff
}
/* LiteralNumberOct */
.chroma .mo {
color: #ae81ff
}
/* Operator */
.chroma .o {
color: #f92672
}
/* OperatorWord */
.chroma .ow {
color: #f92672
}
/* Punctuation */
.chroma .p {}
/* Comment */
.chroma .c {
color: #75715e
}
/* CommentHashbang */
.chroma .ch {
color: #75715e
}
/* CommentMultiline */
.chroma .cm {
color: #75715e
}
/* CommentSingle */
.chroma .c1 {
color: #75715e
}
/* CommentSpecial */
.chroma .cs {
color: #75715e
}
/* CommentPreproc */
.chroma .cp {
color: #75715e
}
/* CommentPreprocFile */
.chroma .cpf {
color: #75715e
}
/* Generic */
.chroma .g {}
/* GenericDeleted */
.chroma .gd {
color: #f92672
}
/* GenericEmph */
.chroma .ge {
font-style: italic
}
/* GenericError */
.chroma .gr {}
/* GenericHeading */
.chroma .gh {}
/* GenericInserted */
.chroma .gi {
color: #a6e22e
}
/* GenericOutput */
.chroma .go {}
/* GenericPrompt */
.chroma .gp {}
/* GenericStrong */
.chroma .gs {
font-weight: bold
}
/* GenericSubheading */
.chroma .gu {
color: #75715e
}
/* GenericTraceback */
.chroma .gt {}
/* GenericUnderline */
.chroma .gl {}
/* TextWhitespace */
.chroma .w {}
+411
View File
@@ -0,0 +1,411 @@
/*
* Style: monokailight
* https://xyproto.github.io/splash/docs/monokailight.html
*/
:root {
--pre-text-color: #272822;
--pre-background-color: #fafafa;
}
/* Background */
.chroma {
color: #272822;
background-color: #fafafa;
}
/* Other */
.chroma .x {}
/* Error */
.chroma .err {
color: #960050;
background-color: #1e0010
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
width: auto;
overflow: auto;
display: block;
}
/* LineHighlight */
.chroma .hl {
display: block;
width: 100%;
background-color: #ffffcc
}
/* LineNumbersTable */
.chroma .lnt {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #7f7f7f
}
/* LineNumbers */
.chroma .ln {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #7f7f7f
}
/* Keyword */
.chroma .k {
color: #00a8c8
}
/* KeywordConstant */
.chroma .kc {
color: #00a8c8
}
/* KeywordDeclaration */
.chroma .kd {
color: #00a8c8
}
/* KeywordNamespace */
.chroma .kn {
color: #f92672
}
/* KeywordPseudo */
.chroma .kp {
color: #00a8c8
}
/* KeywordReserved */
.chroma .kr {
color: #00a8c8
}
/* KeywordType */
.chroma .kt {
color: #00a8c8
}
/* Name */
.chroma .n {
color: #111111
}
/* NameAttribute */
.chroma .na {
color: #75af00
}
/* NameBuiltin */
.chroma .nb {
color: #111111
}
/* NameBuiltinPseudo */
.chroma .bp {
color: #111111
}
/* NameClass */
.chroma .nc {
color: #75af00
}
/* NameConstant */
.chroma .no {
color: #00a8c8
}
/* NameDecorator */
.chroma .nd {
color: #75af00
}
/* NameEntity */
.chroma .ni {
color: #111111
}
/* NameException */
.chroma .ne {
color: #75af00
}
/* NameFunction */
.chroma .nf {
color: #75af00
}
/* NameFunctionMagic */
.chroma .fm {
color: #111111
}
/* NameLabel */
.chroma .nl {
color: #111111
}
/* NameNamespace */
.chroma .nn {
color: #111111
}
/* NameOther */
.chroma .nx {
color: #75af00
}
/* NameProperty */
.chroma .py {
color: #111111
}
/* NameTag */
.chroma .nt {
color: #f92672
}
/* NameVariable */
.chroma .nv {
color: #111111
}
/* NameVariableClass */
.chroma .vc {
color: #111111
}
/* NameVariableGlobal */
.chroma .vg {
color: #111111
}
/* NameVariableInstance */
.chroma .vi {
color: #111111
}
/* NameVariableMagic */
.chroma .vm {
color: #111111
}
/* Literal */
.chroma .l {
color: #ae81ff
}
/* LiteralDate */
.chroma .ld {
color: #d88200
}
/* LiteralString */
.chroma .s {
color: #d88200
}
/* LiteralStringAffix */
.chroma .sa {
color: #d88200
}
/* LiteralStringBacktick */
.chroma .sb {
color: #d88200
}
/* LiteralStringChar */
.chroma .sc {
color: #d88200
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #d88200
}
/* LiteralStringDoc */
.chroma .sd {
color: #d88200
}
/* LiteralStringDouble */
.chroma .s2 {
color: #d88200
}
/* LiteralStringEscape */
.chroma .se {
color: #8045ff
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #d88200
}
/* LiteralStringInterpol */
.chroma .si {
color: #d88200
}
/* LiteralStringOther */
.chroma .sx {
color: #d88200
}
/* LiteralStringRegex */
.chroma .sr {
color: #d88200
}
/* LiteralStringSingle */
.chroma .s1 {
color: #d88200
}
/* LiteralStringSymbol */
.chroma .ss {
color: #d88200
}
/* LiteralNumber */
.chroma .m {
color: #ae81ff
}
/* LiteralNumberBin */
.chroma .mb {
color: #ae81ff
}
/* LiteralNumberFloat */
.chroma .mf {
color: #ae81ff
}
/* LiteralNumberHex */
.chroma .mh {
color: #ae81ff
}
/* LiteralNumberInteger */
.chroma .mi {
color: #ae81ff
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #ae81ff
}
/* LiteralNumberOct */
.chroma .mo {
color: #ae81ff
}
/* Operator */
.chroma .o {
color: #f92672
}
/* OperatorWord */
.chroma .ow {
color: #f92672
}
/* Punctuation */
.chroma .p {
color: #111111
}
/* Comment */
.chroma .c {
color: #75715e
}
/* CommentHashbang */
.chroma .ch {
color: #75715e
}
/* CommentMultiline */
.chroma .cm {
color: #75715e
}
/* CommentSingle */
.chroma .c1 {
color: #75715e
}
/* CommentSpecial */
.chroma .cs {
color: #75715e
}
/* CommentPreproc */
.chroma .cp {
color: #75715e
}
/* CommentPreprocFile */
.chroma .cpf {
color: #75715e
}
/* Generic */
.chroma .g {}
/* GenericDeleted */
.chroma .gd {}
/* GenericEmph */
.chroma .ge {
font-style: italic
}
/* GenericError */
.chroma .gr {}
/* GenericHeading */
.chroma .gh {}
/* GenericInserted */
.chroma .gi {}
/* GenericOutput */
.chroma .go {}
/* GenericPrompt */
.chroma .gp {}
/* GenericStrong */
.chroma .gs {
font-weight: bold
}
/* GenericSubheading */
.chroma .gu {}
/* GenericTraceback */
.chroma .gt {}
/* GenericUnderline */
.chroma .gl {}
/* TextWhitespace */
.chroma .w {}
+1
View File
@@ -122,6 +122,7 @@
/* Menu style */ /* Menu style */
.menu { .menu {
padding-left: 0;
list-style: none; list-style: none;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
+7 -3
View File
@@ -64,13 +64,13 @@ DefaultContentLanguage = "en" # Theme i18n support
[[menu.main]] [[menu.main]]
identifier = "about-cn" identifier = "about-cn"
name = "About" name = "About"
url = "/about/" url = "about"
weight = -90 weight = -90
pre = "user" pre = "user"
[[menu.main]] [[menu.main]]
identifier = "archives" identifier = "archives"
name = "Archives" name = "Archives"
url = "/archives/" url = "archives"
weight = -70 weight = -70
pre = "archives" pre = "archives"
@@ -85,4 +85,8 @@ DefaultContentLanguage = "en" # Theme i18n support
[[related.indices]] [[related.indices]]
name = "categories" name = "categories"
weight = 200 weight = 200
[markup]
[markup.highlight]
noClasses = false
@@ -0,0 +1,27 @@
> Original Repo: https://github.com/cdeleeuwe/netlify-plugin-hugo-cache-resources
>
# Netlify Build Plugin: Persist Hugo resources Between Builds
Persist [Hugo](https://gohugo.io/) resources folder between Netlify builds for huge build speed improvements! ⚡️
This plugin caches the `resources` folder after build. If you are processing many images, this would improve build duration significantly.
Note: Restoring cache only comes from the production branch. So once cache is saved on the production branch, the next preview build would use the cache. For example, when pushing to the same preview build, the latest preview build will not get the cache from the previous preview build, but will get it from master.
## Usage
To install, add the following lines to your `netlify.toml` file:
```toml
[build]
publish = "public"
[[plugins]]
package = "netlify-plugin-hugo-cache-resources"
[plugins.inputs]
# If it should show more verbose logs (optional, default = true)
debug = true
```
Note: The `[[plugins]]` line is required for each plugin, even if you have other plugins in your `netlify.toml` file already.
@@ -0,0 +1,39 @@
const getResourcesDir = () => {
return 'exampleSite/resources';
}
const printList = (items) => {
console.log('---');
items.forEach((item, index) => {
console.log(`${index + 1}. ${item}`);
});
}
module.exports = {
async onPreBuild({ utils, inputs }) {
const path = getResourcesDir();
const success = await utils.cache.restore(path);
if (success) {
const cachedFiles = await utils.cache.list(path);
console.log(`Restored cached resources folder. Total files: ${cachedFiles.length}`);
if (inputs.debug) printList(cachedFiles);
} else {
console.log(`No cache found for resources folder`);
}
},
async onPostBuild({ utils, inputs }) {
const path = getResourcesDir();
const success = await utils.cache.save(path);
if (success) {
const cachedFiles = await utils.cache.list(path);
console.log(`Saved resources folder to cache. Total files: ${cachedFiles.length}`);
if (inputs.debug) printList(cachedFiles);
} else {
console.log(`No resources folder cached`);
}
}
};
@@ -0,0 +1,5 @@
name: netlify-plugin-hugo-cache
inputs:
- name: debug
description: Show more verbose logs
default: true
+1 -1
View File
@@ -7,7 +7,7 @@
<div class="category-list"> <div class="category-list">
<div class="article-list--tile"> <div class="article-list--tile">
{{ range $categories }} {{ range $categories }}
{{ partial "article-list/tile" (dict "context" . "size" "250x150") }} {{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "taxonomy") }}
{{ end }} {{ end }}
</div> </div>
</div> </div>
+1 -3
View File
@@ -9,8 +9,6 @@
</main> </main>
{{- block "right-sidebar" . -}}{{ end }} {{- block "right-sidebar" . -}}{{ end }}
</div> </div>
{{ partial "footer/script.html" . }} {{ partial "footer/include.html" . }}
{{ partial "footer/style.html" . }}
{{ partial "footer/custom.html" . }}
</body> </body>
</html> </html>
+1 -1
View File
@@ -8,5 +8,5 @@
{{ partialCached "footer/footer" . }} {{ partialCached "footer/footer" . }}
{{ partial "article/components/photoswipe" . }} {{ partialCached "article/components/photoswipe" . }}
{{ end }} {{ end }}
+1 -1
View File
@@ -9,7 +9,7 @@
{{ end }} {{ end }}
</div> </div>
{{ $image := partial "helper/image" (dict "Context" . "Type" "taxonomy") }} {{- $image := partialCached "helper/image" (dict "Context" . "Type" "taxonomy") .RelPermalink "taxonomy" -}}
{{ if $image.exists }} {{ if $image.exists }}
<div class="taxonomy-image"> <div class="taxonomy-image">
{{ if $image.resource }} {{ if $image.resource }}
+1 -2
View File
@@ -12,8 +12,7 @@
</footer> </footer>
</div> </div>
{{ $image := partial "helper/image" (dict "Context" . "Type" "articleList") }} {{- $image := partialCached "helper/image" (dict "Context" . "Type" "articleList") .RelPermalink "articleList" -}}
{{ if $image.exists }} {{ if $image.exists }}
<div class="article-image"> <div class="article-image">
{{ if $image.resource }} {{ if $image.resource }}
+3 -3
View File
@@ -1,4 +1,4 @@
{{ $image := partial "helper/image" (dict "Context" . "Type" "articleList") }} {{ $image := partialCached "helper/image" (dict "Context" . "Type" "articleList") .RelPermalink "articleList" }}
<article class="{{ if $image.exists }}has-image{{ end }}"> <article class="{{ if $image.exists }}has-image{{ end }}">
{{ if $image.exists }} {{ if $image.exists }}
<div class="article-image"> <div class="article-image">
@@ -8,7 +8,7 @@
{{- $thumbnailRetina := $image.resource.Fill "1600x500" -}} {{- $thumbnailRetina := $image.resource.Fill "1600x500" -}}
<img src="{{ $thumbnail.RelPermalink }}" <img src="{{ $thumbnail.RelPermalink }}"
srcset="{{ $thumbnail.RelPermalink }} 1x, {{ $thumbnailRetina.RelPermalink }} 2x" srcset="{{ $thumbnail.RelPermalink }} 800w, {{ $thumbnailRetina.RelPermalink }} 1600w"
width="{{ $thumbnail.Width }}" height="{{ $thumbnail.Height }}" loading="lazy" width="{{ $thumbnail.Width }}" height="{{ $thumbnail.Height }}" loading="lazy"
alt="Featured image of post {{ .Title }}" /> alt="Featured image of post {{ .Title }}" />
{{ else }} {{ else }}
@@ -18,5 +18,5 @@
</div> </div>
{{ end }} {{ end }}
{{ partial "article/components/details" . }} {{ partialCached "article/components/details" . .RelPermalink }}
</article> </article>
+1 -1
View File
@@ -1,4 +1,4 @@
{{ $image := partial "helper/image" (dict "Context" .context "Type" .Type) }} {{ $image := partialCached "helper/image" (dict "Context" .context "Type" .Type) .context.RelPermalink .Type }}
<article class="{{ if $image.exists }}has-image{{ end }}"> <article class="{{ if $image.exists }}has-image{{ end }}">
<a href="{{ .context.Permalink }}"> <a href="{{ .context.Permalink }}">
@@ -1,16 +1,18 @@
{{ $image := partial "helper/image" (dict "Context" .) }} {{ $image := partialCached "helper/image" (dict "Context" . "Type" "article") .RelPermalink "article" }}
{{ $context := . }} {{- $context := . -}}
{{- $categories := .Params.categories -}}
<div class="article-details"> <div class="article-details">
{{ with $categories := .Params.categories }} {{ if $categories }}
<header class="article-category"> <header class="article-category">
{{ range $categories }} {{ range $category := $categories }}
{{ $term := $.Site.GetPage (printf "/categories/%s" $category) }}
{{ if and $image.exists $image.resource }} {{ if and $image.exists $image.resource }}
{{- $imageRaw := $image.resource | resources.Fingerprint "md5" -}} {{- $imageRaw := $image.resource | resources.Fingerprint "md5" -}}
{{- $20x := $imageRaw.Fill "20x20 smart" -}} {{- $20x := $imageRaw.Fill "20x20 smart" -}}
<a href="{{ printf `categories/%s` (. | urlize) | relLangURL }}" class="color-tag" <a href="{{ $term.Permalink }}" class="color-tag"
data-image="{{ $20x.RelPermalink }}" data-key="{{ $context.Slug }}" data-hash="{{ $imageRaw.Data.Integrity }}">{{ . | humanize }}</a> data-image="{{ $20x.RelPermalink }}" data-key="{{ $context.Slug }}" data-hash="{{ $imageRaw.Data.Integrity }}">{{ $term.Title | humanize }}</a>
{{ else }} {{ else }}
<a href="{{ printf `categories/%s` (. | urlize) | relLangURL }}">{{ . | humanize }}</a> <a href="{{ $term.Permalink }}">{{ $term.Title | humanize }}</a>
{{ end }} {{ end }}
{{ end }} {{ end }}
</header> </header>
@@ -1,11 +1,5 @@
<footer class="article-footer"> <footer class="article-footer">
{{ with $tags := .Params.Tags }} {{ partial "article/components/tags" . }}
<section class="article-tags">
{{ range $tags }}
<a href="{{ printf `tags/%s` (. | urlize) | relLangURL }}">{{ . | humanize }}</a>
{{ end }}
</section>
{{ end }}
{{ if and (.Site.Params.article.license.enabled) (not (eq .Params.license false)) }} {{ if and (.Site.Params.article.license.enabled) (not (eq .Params.license false)) }}
<section class="article-copyright"> <section class="article-copyright">
@@ -1,6 +1,5 @@
<header class="article-header"> <header class="article-header">
{{ $image := partial "helper/image" (dict "Context" . "Type" "article") }} {{- $image := partialCached "helper/image" (dict "Context" . "Type" "article") .RelPermalink "article" -}}
{{ if $image.exists }} {{ if $image.exists }}
<div class="article-image"> <div class="article-image">
{{ if $image.resource }} {{ if $image.resource }}
@@ -16,5 +15,5 @@
</div> </div>
{{ end }} {{ end }}
{{ partial "article/components/details" . }} {{ partialCached "article/components/details" . .RelPermalink }}
</header> </header>
@@ -5,7 +5,7 @@
<div class="related-contents"> <div class="related-contents">
<div class="flex article-list--tile"> <div class="flex article-list--tile">
{{ range . }} {{ range . }}
{{ partial "article-list/tile" (dict "context" . "size" "250x150") }} {{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "articleList") }}
{{ end }} {{ end }}
</div> </div>
</div> </div>
@@ -0,0 +1,10 @@
{{- $tags := .Params.Tags -}}
{{ if $tags }}
<section class="article-tags">
{{ range $tag := $tags }}
{{ with $.Site.GetPage (printf "/tags/%s" $tag) }}
<a href="{{ .Permalink }}">{{ .Title | humanize }}</a>
{{ end }}
{{ end }}
</section>
{{ end }}
@@ -0,0 +1,4 @@
{{- $light := resources.Get "css/highlight/light.css" | minify -}}
{{- $dark := resources.Get "css/highlight/dark.css" | minify -}}
<link rel="stylesheet" href="{{ $light.RelPermalink }}" media="(prefers-color-scheme: light)">
<link rel="stylesheet" href="{{ $dark.RelPermalink }}" media="(prefers-color-scheme: dark)">
@@ -1,7 +1,7 @@
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js" <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js"
integrity="sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=" crossorigin="anonymous"></script> 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 -}}
<script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script> <script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script>
+3 -3
View File
@@ -1,8 +1,8 @@
<footer class="site-footer"> <footer class="site-footer">
<section class="copyright">&copy; {{ now.Format "2006" }} {{ .Site.Title }}</section> <section class="copyright">&copy; {{ now.Format "2006" }} {{ .Site.Title }}</section>
<section class="powerby"> <section class="powerby">
Built with <a href="https://gohugo.io/" target="_blank">Hugo</a> <br /> Built with <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> <br />
Theme <b><a href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank">Stack</a></b> designed by Theme <b><a href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank" rel="noopener">Stack</a></b> designed by
<a href="https://jimmycai.com" target="_blank">Jimmy</a> <a href="https://jimmycai.com" target="_blank" rel="noopener">Jimmy</a>
</section> </section>
</footer> </footer>
+4
View File
@@ -0,0 +1,4 @@
{{ partialCached "footer/components/script.html" . }}
{{ partialCached "footer/components/custom-font.html" . }}
{{ partialCached "footer/components/highlight.html" . }}
{{ partial "footer/custom.html" . }}
+2 -2
View File
@@ -2,10 +2,10 @@
<meta charset='utf-8'> <meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1'>
{{- $description := partial "data/description" . -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta name='description' content='{{ $description }}'> <meta name='description' content='{{ $description }}'>
{{- $title := partial "data/title" . -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
<title>{{ $title }}</title> <title>{{ $title }}</title>
<link rel='canonical' href='{{ .Permalink }}'> <link rel='canonical' href='{{ .Permalink }}'>
@@ -1,5 +1,5 @@
{{- $title := partial "data/title" . -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
{{- $description := partial "data/description" . -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta property='og:title' content='{{ $title }}'> <meta property='og:title' content='{{ $title }}'>
<meta property='og:description' content='{{ $description }}'> <meta property='og:description' content='{{ $description }}'>
@@ -37,7 +37,7 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{ $image := partial "helper/image" (dict "Context" . "Type" "opengraph") }} {{ $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" }}
{{- if $image.exists -}} {{- if $image.exists -}}
<meta property='og:image' content='{{ absURL $image.permalink }}' /> <meta property='og:image' content='{{ absURL $image.permalink }}' />
{{- end -}} {{- end -}}
@@ -2,13 +2,13 @@
<meta name="twitter:site" content="{{ . }}"> <meta name="twitter:site" content="{{ . }}">
{{- end -}} {{- end -}}
{{- $title := partial "data/title" . -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
{{- $description := partial "data/description" . -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta name="twitter:title" content="{{ $title }}"> <meta name="twitter:title" content="{{ $title }}">
<meta name="twitter:description" content="{{ $description }}"> <meta name="twitter:description" content="{{ $description }}">
{{- $image := partial "helper/image" (dict "Context" . "Type" "opengraph") -}} {{- $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" -}}
{{- if $image.exists -}} {{- if $image.exists -}}
<meta name="twitter:card" content="{{ .Site.Params.opengraph.twitter.card }}"> <meta name="twitter:card" content="{{ .Site.Params.opengraph.twitter.card }}">
<meta name="twitter:image" content='{{ absURL $image.permalink }}' /> <meta name="twitter:image" content='{{ absURL $image.permalink }}' />
+1 -1
View File
@@ -1,3 +1,3 @@
{{ $sass := resources.Get "scss/style.scss" }} {{ $sass := resources.Get "scss/style.scss" }}
{{ $style := $sass | resources.ToCSS | minify }} {{ $style := $sass | resources.ToCSS | minify }}
<link rel="stylesheet" href="{{ $style.Permalink }}"> <link rel="stylesheet" href="{{ $style.RelPermalink }}">
+3 -3
View File
@@ -25,13 +25,13 @@
<h2 class="site-description">{{ .Site.Params.sidebar.subtitle }}</h2> <h2 class="site-description">{{ .Site.Params.sidebar.subtitle }}</h2>
</header> </header>
<nav class="menu" id="main-menu"> <ol class="menu" id="main-menu">
{{ $currentPage := . }} {{ $currentPage := . }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
{{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }} {{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }}
<li {{ if $active }} class='current' {{ end }}> <li {{ if $active }} class='current' {{ end }}>
<a href='{{ .URL }}'> <a href='{{ .URL | absLangURL }}'>
{{ if .Pre }} {{ if .Pre }}
{{ (resources.Get (delimit (slice "icons/" .Pre ".svg") "")).Content | safeHTML }} {{ (resources.Get (delimit (slice "icons/" .Pre ".svg") "")).Content | safeHTML }}
{{ end }} {{ end }}
@@ -39,5 +39,5 @@
</a> </a>
</li> </li>
{{ end }} {{ end }}
</nav> </ol>
</aside> </aside>
+4 -3
View File
@@ -8,9 +8,10 @@
<div class="tagCloud-tags"> <div class="tagCloud-tags">
{{ range first .Site.Params.widgets.tagCloud.limit $tags }} {{ range first .Site.Params.widgets.tagCloud.limit $tags }}
<a href="{{ printf `tags/%s` (.Term | urlize) | relLangURL }}" class="font_size_{{ .Count }}"> {{ $term := $.Site.GetPage (printf "/tags/%s" .Term) }}
{{ .Term | humanize }} <a href="{{ $term.Permalink }}" class="font_size_{{ .Count }}">
</a> {{ $term.Title | humanize }}
</a>
{{ end }} {{ end }}
</div> </div>
</section> </section>
+1 -1
View File
@@ -17,5 +17,5 @@
{{ partialCached "footer/footer" . }} {{ partialCached "footer/footer" . }}
{{- partial "article/components/photoswipe.html" . -}} {{- partialCached "article/components/photoswipe.html" . -}}
{{ end }} {{ end }}
+4 -1
View File
@@ -14,4 +14,7 @@
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}"
[context.deploy-preview] [context.deploy-preview]
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}"
[[plugins]]
package = "/exampleSite/plugins/netlify-plugin-hugo-cache-resources"
File diff suppressed because one or more lines are too long