diff --git a/assets/icons/language.svg b/assets/icons/language.svg new file mode 100644 index 0000000..66ede1c --- /dev/null +++ b/assets/icons/language.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/scss/partials/article.scss b/assets/scss/partials/article.scss index 459c22f..0d3efba 100644 --- a/assets/scss/partials/article.scss +++ b/assets/scss/partials/article.scss @@ -91,7 +91,8 @@ } } -.article-time { +.article-time, +.article-translations { display: flex; align-items: center; color: var(--card-text-color-tertiary); @@ -101,19 +102,21 @@ svg { vertical-align: middle; - margin-right: 15px; width: 20px; height: 20px; stroke-width: 1.33; } - time { + time, + a { font-size: 1.4rem; + color: var(--card-text-color-tertiary); } & > div { display: inline-flex; align-items: center; + gap: 15px; } } diff --git a/assets/scss/partials/layout/article.scss b/assets/scss/partials/layout/article.scss index af5f7bb..92e1167 100644 --- a/assets/scss/partials/layout/article.scss +++ b/assets/scss/partials/layout/article.scss @@ -122,67 +122,6 @@ } } -.article-page.has-toc { - .left-sidebar { - display: none; - } - - .right-sidebar { - width: 100%; - padding: 0; - display: none; - - @include respond(xl) { - display: block; - top: var(--main-top-padding); - } - } - - #article-toolbar { - display: block; - - @include respond(md) { - padding: 0; - } - - @include respond(xl) { - margin-top: 0; - position: sticky; - top: var(--main-top-padding); - flex-shrink: 1; - - a { - background: transparent; - box-shadow: none; - border: 1px solid var(--body-text-color); - width: 100%; - margin-right: 0; - - svg { - flex-shrink: 0; - } - } - } - } - - .main-container { - align-items: start; - flex-direction: column; - - @include respond(xl) { - flex-direction: row; - } - } - - .main { - padding-top: 0; - - @include respond(xl) { - padding-top: var(--main-top-padding); - } - } -} - .widget--toc { background-color: var(--card-background); border-radius: var(--card-border-radius); diff --git a/assets/scss/partials/menu.scss b/assets/scss/partials/menu.scss index 1d612d1..257eedb 100644 --- a/assets/scss/partials/menu.scss +++ b/assets/scss/partials/menu.scss @@ -125,7 +125,6 @@ .menu { padding-left: 0; list-style: none; - display: flex; flex-direction: column; overflow-y: auto; flex-grow: 1; @@ -138,8 +137,17 @@ margin: 0 -15px; + &, + .menu-bottom-section { + gap: 15px; + @include respond(xl) { + margin-top: 30px; + gap: 20px; + } + } + &.show { - display: block; + display: flex; } @include respond(md) { @@ -161,14 +169,6 @@ vertical-align: middle; padding: 10px 30px; - &:not(:last-of-type) { - margin-bottom: 15px; - - @include respond(xl) { - margin-bottom: 20px; - } - } - @include respond(md) { width: 100%; padding: 10px 0; @@ -200,6 +200,13 @@ } } } + + .menu-bottom-section { + margin-top: auto; + display: flex; + flex-direction: column; + width: 100%; + } } .social-menu { diff --git a/assets/scss/partials/sidebar.scss b/assets/scss/partials/sidebar.scss index 462729d..4d320a8 100644 --- a/assets/scss/partials/sidebar.scss +++ b/assets/scss/partials/sidebar.scss @@ -37,7 +37,7 @@ } .right-sidebar { - flex-shrink: 0; + width: 100%; display: none; &.sticky { @@ -158,3 +158,20 @@ display: none; } } + +#i18n-switch { + color: var(--body-text-color); + display: inline-flex; + align-content: center; + + select { + border: 0; + background-color: transparent; + color: var(--body-text-color); + + option { + color: var(--card-text-color-main); + background-color: var(--card-background); + } + } +} diff --git a/config.yaml b/config.yaml index 0e5283c..c55a911 100644 --- a/config.yaml +++ b/config.yaml @@ -95,6 +95,7 @@ params: darkTheme: reactionsEnabled: 1 emitMetadata: 0 + lang: gitalk: owner: @@ -108,16 +109,8 @@ params: id: widgets: - enabled: - - search - - archives - - tag-cloud - - archives: - limit: 5 - - tagCloud: - limit: 10 + homepage: [] + page: [] opengraph: twitter: diff --git a/exampleSite/config.yaml b/exampleSite/config.yaml index d449fc9..b2fe1d3 100644 --- a/exampleSite/config.yaml +++ b/exampleSite/config.yaml @@ -4,6 +4,16 @@ theme: hugo-theme-stack paginate: 5 title: Example Site +languages: + en: + languageName: English + title: Example Site + weight: 1 + cn: + languageName: 中文 + title: 演示站点 + weight: 2 + # Change it to your Disqus shortname before using disqusShortname: hugo-theme-stack @@ -132,16 +142,16 @@ params: host: id: widgets: - enabled: - - search - - archives - - tag-cloud - - archives: - limit: 5 - - tagCloud: - limit: 10 + homepage: + - type: search + - type: archives + params: + limit: 5 + - type: tag-cloud + params: + limit: 10 + page: + - type: toc opengraph: twitter: diff --git a/exampleSite/content/page/about/index.cn.md b/exampleSite/content/page/about/index.cn.md new file mode 100644 index 0000000..060c006 --- /dev/null +++ b/exampleSite/content/page/about/index.cn.md @@ -0,0 +1,5 @@ +--- +title: 关于 +--- + +This is a test page for i18n support. \ No newline at end of file diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 8a5ff95..db1903e 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -6,7 +6,8 @@ {{- partial "head/colorScheme" . -}} -
+ {{- $hasWidget := default (gt (len .Site.Params.widgets.homepage) 0) (.Scratch.Get "hasWidget") -}} +
{{- block "left-sidebar" . -}} {{ partial "sidebar/left.html" . }} {{- end -}} diff --git a/layouts/_default/list.html b/layouts/_default/list.html index 90e5b66..49a5c12 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -77,5 +77,5 @@ {{ end }} {{ define "right-sidebar" }} - {{ partialCached "sidebar/right.html" . }} + {{ partial "sidebar/right.html" (dict "Context" . "Scope" "homepage") }} {{ end }} \ No newline at end of file diff --git a/layouts/rss.xml b/layouts/_default/rss.xml similarity index 100% rename from layouts/rss.xml rename to layouts/_default/rss.xml diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 8ce42e9..c70df20 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,15 +1,26 @@ {{ define "body-class" }} - {{ $TOCEnabled := default (default false .Site.Params.article.toc) .Params.toc }} - {{- .Scratch.Set "hasTOC" (and (ge (len .TableOfContents) 100) $TOCEnabled) -}} - article-page {{ if (.Scratch.Get "hasTOC") }}has-toc{{ end }} -{{ end }} + article-page + {{/* + Enable the right sidebar if + - Widget different from 'TOC' is enabled + - TOC is enabled and not empty + */}} + {{- $HasWidgetNotTOC := false -}} + {{- $TOCWidgetEnabled := false -}} + {{- range .Site.Params.widgets.page -}} + {{- if ne .type "toc" -}} + {{ $HasWidgetNotTOC = true -}} + {{- else -}} + {{ $TOCWidgetEnabled = true -}} + {{- end -}} + {{- end -}} -{{ define "container-class" }} - {{ if (.Scratch.Get "hasTOC") }} - extended - {{ else }} - on-phone--column {{ if .Site.Params.widgets.enabled }}extended{{ else }}compact{{ end }} - {{ end }} + {{- $TOCManuallyDisabled := eq .Params.toc false -}} + {{- $TOCEnabled := and (not $TOCManuallyDisabled) $TOCWidgetEnabled -}} + {{- $hasTOC := ge (len .TableOfContents) 100 -}} + {{- .Scratch.Set "TOCEnabled" (and $TOCEnabled $hasTOC) -}} + + {{- .Scratch.Set "hasWidget" (or $HasWidgetNotTOC (and $TOCEnabled $hasTOC)) -}} {{ end }} {{ define "main" }} @@ -30,32 +41,6 @@ {{ partialCached "article/components/photoswipe" . }} {{ end }} -{{ define "left-sidebar" }} - {{ if (.Scratch.Get "hasTOC") }} -
- - {{ (resources.Get "icons/back.svg").Content | safeHTML }} - {{ T "article.back" }} - -
- {{ else }} - {{ partial "sidebar/left.html" . }} - {{ end }} -{{ end }} - {{ define "right-sidebar" }} - {{ if (.Scratch.Get "hasTOC") }} - - {{ end }} + {{ if .Scratch.Get "hasWidget" }}{{ partial "sidebar/right.html" (dict "Context" . "Scope" "page") }}{{ end}} {{ end }} diff --git a/layouts/index.html b/layouts/index.html index 576faef..0cd0b88 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -15,5 +15,5 @@ {{ end }} {{ define "right-sidebar" }} - {{ partial "sidebar/right.html" . }} + {{ partial "sidebar/right.html" (dict "Context" . "Scope" "homepage") }} {{ end }} \ No newline at end of file diff --git a/layouts/partials/article/components/details.html b/layouts/partials/article/components/details.html index 64d6c6e..2ec1241 100644 --- a/layouts/partials/article/components/details.html +++ b/layouts/partials/article/components/details.html @@ -42,4 +42,15 @@ {{ end }} {{ end }} + + {{ if .IsTranslated }} + + {{ end }}
\ No newline at end of file diff --git a/layouts/partials/comments/provider/giscus.html b/layouts/partials/comments/provider/giscus.html index f36ead9..abe345f 100644 --- a/layouts/partials/comments/provider/giscus.html +++ b/layouts/partials/comments/provider/giscus.html @@ -9,41 +9,41 @@ data-reactions-enabled="{{- default 1 .reactionsEnabled -}}" data-emit-metadata="{{- default 0 .emitMetadata -}}" data-theme="{{- default `light` .lightTheme -}}" + data-lang="{{- default `en` .lang -}}" crossorigin="anonymous" async > {{- end -}} - diff --git a/layouts/partials/comments/provider/twikoo.html b/layouts/partials/comments/provider/twikoo.html index 30c7033..7dd3e50 100644 --- a/layouts/partials/comments/provider/twikoo.html +++ b/layouts/partials/comments/provider/twikoo.html @@ -1,4 +1,4 @@ - +