From d88771adeee6a1d8d30b27cd5d2e4d0c3810cbf9 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 11 Aug 2022 01:18:18 +0800 Subject: [PATCH 01/50] use height instead of max-height to control img size on parent div this change happens on both image-size-control and figure-img-size --- layouts/shortcodes/figure-img-size.html | 2 +- layouts/shortcodes/image-size-control.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/shortcodes/figure-img-size.html b/layouts/shortcodes/figure-img-size.html index 62c9f20129..b20f17f654 100644 --- a/layouts/shortcodes/figure-img-size.html +++ b/layouts/shortcodes/figure-img-size.html @@ -3,7 +3,7 @@
{{ .Page.RenderString .Inner }}
diff --git a/layouts/shortcodes/image-size-control.html b/layouts/shortcodes/image-size-control.html index 1bf374d136..679aae760f 100644 --- a/layouts/shortcodes/image-size-control.html +++ b/layouts/shortcodes/image-size-control.html @@ -1,6 +1,6 @@
{{ .Page.RenderString .Inner }}
From cb70e9f2d0f074f7ebb1dfbfe6581c61909ad421 Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 11:26:38 +0800 Subject: [PATCH 02/50] split example configs --- .../{config.yml => config.default.yml} | 0 exampleSite/config.profileMode.yml | 228 ++++++++++++++++++ 2 files changed, 228 insertions(+) rename exampleSite/{config.yml => config.default.yml} (100%) create mode 100644 exampleSite/config.profileMode.yml diff --git a/exampleSite/config.yml b/exampleSite/config.default.yml similarity index 100% rename from exampleSite/config.yml rename to exampleSite/config.default.yml diff --git a/exampleSite/config.profileMode.yml b/exampleSite/config.profileMode.yml new file mode 100644 index 0000000000..567ed4a0c9 --- /dev/null +++ b/exampleSite/config.profileMode.yml @@ -0,0 +1,228 @@ +baseURL: "https://reorx.github.io/hugo-PaperModX/" +title: PaperModX +paginate: 5 +theme: PaperModX +# NOTE remove this line if you copy exampleSite outof hugo-PaperModX +themesdir: ../.. + +enableInlineShortcodes: true +enableRobotsTXT: true +buildDrafts: false +buildFuture: false +buildExpired: false +enableEmoji: true + +params: + env: production # to enable google analytics, opengraph, twitter-cards and schema. + description: "Theme PaperModX - https://github.com/reorx/hugo-PaperModX" + author: + - Reorx + mainSections: + - docs + - posts + disableAnchoredHeadings: true + images: ["cover.png"] + DateFormat: "2006-01-02" + useCustomAnalytics: true + + defaultTheme: auto + # disableThemeToggle: true + ShowShareButtons: true + ShowReadingTime: true + ShowWordCount: true + # disableSpecial1stPost: true + displayFullLangName: true + ShowPostNavLinks: true + ShowBreadCrumbs: true + ShowCodeCopyButtons: true + ShowToc: true + TocOpen: true + TocSide: "right" + EnableInstantClick: true + EnableImageZoom: true + + commentSystems: + disqus: + shortname: reorx + remark42: + url: https://remark42.reorx.com + site: reorx.github.io + telegramWidget: + channel: reorx_share + accentColor: "9077e1" + limit: 20 + defaultCommentSystems: + remark42: true + + profileMode: + enabled: false + title: PaperModX + imageUrl: "#" + imageTitle: my image + # imageWidth: 120 + # imageHeight: 120 + buttons: + - name: Archives + url: /archives/ + - name: Tags + url: /tags/ + + homeInfoParams: + Title: "PaperModX" + Content: | + Welcome to demo of hugo's theme PaperModX. + + - **PaperModX** is a simple but fast and responsive theme with useful feature-set that enhances UX. + + - PaperModX is based on theme [PaperMod](https://github.com/adityatelange/hugo-PaperMod). + + To get started, please head to the [Docs](docs). + + To see examples of different contents, head to [examples tag](tags/example). + + socialIcons: + - name: github-simple + url: "https://github.com/reorx/hugo-PaperModX" + - name: rss-simple + url: "index.xml" + + editPost: + URL: "https://github.com/reorx/hugo-PaperModX/tree/exampleSite/content" + Text: "Suggest Changes" # edit text + appendFilePath: true # to append file path to Edit link + + # label: + # text: "Home" + # icon: icon.png + # iconHeight: 35 + + # assets: + # favicon: "" + # favicon16x16: "" + # favicon32x32: "" + # apple_touch_icon: "" + # safari_pinned_tab: "" + + # cover: + # hidden: true # hide everywhere but not in structured data + # hiddenInList: true # hide on list pages and home + # hiddenInSingle: true # hide on single page + + # fuseOpts: + # isCaseSensitive: false + # shouldSort: true + # location: 0 + # distance: 1000 + # threshold: 0.4 + # minMatchCharLength: 0 + # keys: ["title", "permalink", "summary", "content"] + +minify: + disableXML: true + # minifyOutput: true + +languages: + en: + languageName: "English" + weight: 1 + menu: + main: + - name: Docs + url: /docs/ + weight: 1 + - name: Tags + url: /tags/ + weight: 4 + - name: Archive + url: /archives/ + weight: 5 + - name: Search + url: /search/ + weight: 10 + - name: "@Author" + url: "https://reorx.com" + params: + external: true + + zh: + languageName: ":cn:" + languageAltTitle: 中文 + weight: 2 + title: PaperModX + profileMode: + enabled: true + title: PaperModX + # imageUrl: "#" + # imageTitle: my image + # imageWidth: 120 + # imageHeight: 120 + subtitle: > +

Hugo 主题

+ ☄️ 快速 | ☁️ 流畅 | 📖 可读性 | 📱 响应式 + buttons: + - name: 文档 + url: docs + - name: 标签 + url: tags + menu: + main: + - name: 文档 + url: docs + weight: 1 + - name: 标签 + url: tags/ + weight: 4 + - name: 归档 + url: archives + weight: 5 + - name: 搜索 + url: search/ + weight: 10 + - name: "@作者" + url: "https://reorx.com" + params: + external: true + +outputs: + home: + - HTML + - RSS + - JSON + +taxonomies: + category: categories + tag: tags + series: series + +markup: + goldmark: + renderer: + unsafe: true + highlight: + style: dracula + lineNos: false + noClasses: false + +privacy: + vimeo: + disabled: false + simple: true + + twitter: + disabled: false + enableDNT: true + simple: true + + instagram: + disabled: false + simple: true + + youtube: + disabled: false + privacyEnhanced: true + +services: + instagram: + disableInlineCSS: true + twitter: + disableInlineCSS: true From e25832c080af54e2ba9fbf2ad68cf07114293cd7 Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 11:58:04 +0800 Subject: [PATCH 03/50] link config.yml to default; update config.profileMode.yml --- exampleSite/config.profileMode.yml | 32 ++++++++++-------------------- exampleSite/config.yml | 1 + 2 files changed, 11 insertions(+), 22 deletions(-) create mode 120000 exampleSite/config.yml diff --git a/exampleSite/config.profileMode.yml b/exampleSite/config.profileMode.yml index 567ed4a0c9..68b136eb11 100644 --- a/exampleSite/config.profileMode.yml +++ b/exampleSite/config.profileMode.yml @@ -55,17 +55,20 @@ params: remark42: true profileMode: - enabled: false + enabled: true title: PaperModX - imageUrl: "#" - imageTitle: my image + # imageUrl: "#" + # imageTitle: my image # imageWidth: 120 # imageHeight: 120 + subtitle: > +

Hugo 主题

+ ☄️ 快速 | ☁️ 流畅 | 📖 可读性 | 📱 响应式 buttons: - - name: Archives - url: /archives/ - - name: Tags - url: /tags/ + - name: 文档 + url: docs + - name: 标签 + url: tags homeInfoParams: Title: "PaperModX" @@ -149,21 +152,6 @@ languages: languageAltTitle: 中文 weight: 2 title: PaperModX - profileMode: - enabled: true - title: PaperModX - # imageUrl: "#" - # imageTitle: my image - # imageWidth: 120 - # imageHeight: 120 - subtitle: > -

Hugo 主题

- ☄️ 快速 | ☁️ 流畅 | 📖 可读性 | 📱 响应式 - buttons: - - name: 文档 - url: docs - - name: 标签 - url: tags menu: main: - name: 文档 diff --git a/exampleSite/config.yml b/exampleSite/config.yml new file mode 120000 index 0000000000..76e66cebcc --- /dev/null +++ b/exampleSite/config.yml @@ -0,0 +1 @@ +config.default.yml \ No newline at end of file From 7f76d0ad1dade9632049f3c985e329e0bcd2a017 Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 12:01:14 +0800 Subject: [PATCH 04/50] ignore resources in exampleSite --- exampleSite/.gitignore | 1 + ...s_f300667da4f5b5f84e1a9e0702b2fdde.content | 571 ------------------ ...scss_f300667da4f5b5f84e1a9e0702b2fdde.json | 1 - 3 files changed, 1 insertion(+), 572 deletions(-) delete mode 100644 exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.content delete mode 100644 exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.json diff --git a/exampleSite/.gitignore b/exampleSite/.gitignore index 5b1f2d7d87..03615ff394 100644 --- a/exampleSite/.gitignore +++ b/exampleSite/.gitignore @@ -23,5 +23,6 @@ _testmain.go *.test public/ +resources/ .DS_Store .hugo_build.lock diff --git a/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.content b/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.content deleted file mode 100644 index 125e9fc64c..0000000000 --- a/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.content +++ /dev/null @@ -1,571 +0,0 @@ -/* Background */ -.chroma { - background-color: #ffffff; } - -/* Other */ -/* Error */ -.chroma .err { - color: #a61717; - background-color: #e3d2d2; } - -/* 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: #000000; - font-weight: bold; } - -/* KeywordConstant */ -.chroma .kc { - color: #000000; - font-weight: bold; } - -/* KeywordDeclaration */ -.chroma .kd { - color: #000000; - font-weight: bold; } - -/* KeywordNamespace */ -.chroma .kn { - color: #000000; - font-weight: bold; } - -/* KeywordPseudo */ -.chroma .kp { - color: #000000; - font-weight: bold; } - -/* KeywordReserved */ -.chroma .kr { - color: #000000; - font-weight: bold; } - -/* KeywordType */ -.chroma .kt { - color: #445588; - font-weight: bold; } - -/* Name */ -/* NameAttribute */ -.chroma .na { - color: #008080; } - -/* NameBuiltin */ -.chroma .nb { - color: #0086b3; } - -/* NameBuiltinPseudo */ -.chroma .bp { - color: #999999; } - -/* NameClass */ -.chroma .nc { - color: #445588; - font-weight: bold; } - -/* NameConstant */ -.chroma .no { - color: #008080; } - -/* NameDecorator */ -.chroma .nd { - color: #3c5d5d; - font-weight: bold; } - -/* NameEntity */ -.chroma .ni { - color: #800080; } - -/* NameException */ -.chroma .ne { - color: #990000; - font-weight: bold; } - -/* NameFunction */ -.chroma .nf { - color: #990000; - font-weight: bold; } - -/* NameFunctionMagic */ -/* NameLabel */ -.chroma .nl { - color: #990000; - font-weight: bold; } - -/* NameNamespace */ -.chroma .nn { - color: #555555; } - -/* NameOther */ -/* NameProperty */ -/* NameTag */ -.chroma .nt { - color: #000080; } - -/* NameVariable */ -.chroma .nv { - color: #008080; } - -/* NameVariableClass */ -.chroma .vc { - color: #008080; } - -/* NameVariableGlobal */ -.chroma .vg { - color: #008080; } - -/* NameVariableInstance */ -.chroma .vi { - color: #008080; } - -/* NameVariableMagic */ -/* Literal */ -/* LiteralDate */ -/* LiteralString */ -.chroma .s { - color: #dd1144; } - -/* LiteralStringAffix */ -.chroma .sa { - color: #dd1144; } - -/* LiteralStringBacktick */ -.chroma .sb { - color: #dd1144; } - -/* LiteralStringChar */ -.chroma .sc { - color: #dd1144; } - -/* LiteralStringDelimiter */ -.chroma .dl { - color: #dd1144; } - -/* LiteralStringDoc */ -.chroma .sd { - color: #dd1144; } - -/* LiteralStringDouble */ -.chroma .s2 { - color: #dd1144; } - -/* LiteralStringEscape */ -.chroma .se { - color: #dd1144; } - -/* LiteralStringHeredoc */ -.chroma .sh { - color: #dd1144; } - -/* LiteralStringInterpol */ -.chroma .si { - color: #dd1144; } - -/* LiteralStringOther */ -.chroma .sx { - color: #dd1144; } - -/* LiteralStringRegex */ -.chroma .sr { - color: #009926; } - -/* LiteralStringSingle */ -.chroma .s1 { - color: #dd1144; } - -/* LiteralStringSymbol */ -.chroma .ss { - color: #990073; } - -/* LiteralNumber */ -.chroma .m { - color: #009999; } - -/* LiteralNumberBin */ -.chroma .mb { - color: #009999; } - -/* LiteralNumberFloat */ -.chroma .mf { - color: #009999; } - -/* LiteralNumberHex */ -.chroma .mh { - color: #009999; } - -/* LiteralNumberInteger */ -.chroma .mi { - color: #009999; } - -/* LiteralNumberIntegerLong */ -.chroma .il { - color: #009999; } - -/* LiteralNumberOct */ -.chroma .mo { - color: #009999; } - -/* Operator */ -.chroma .o { - color: #000000; - font-weight: bold; } - -/* OperatorWord */ -.chroma .ow { - color: #000000; - font-weight: bold; } - -/* Punctuation */ -/* Comment */ -.chroma .c { - color: #999988; - font-style: italic; } - -/* CommentHashbang */ -.chroma .ch { - color: #999988; - font-style: italic; } - -/* CommentMultiline */ -.chroma .cm { - color: #999988; - font-style: italic; } - -/* CommentSingle */ -.chroma .c1 { - color: #999988; - font-style: italic; } - -/* CommentSpecial */ -.chroma .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - -/* CommentPreproc */ -.chroma .cp { - color: #999999; - font-weight: bold; - font-style: italic; } - -/* CommentPreprocFile */ -.chroma .cpf { - color: #999999; - font-weight: bold; - font-style: italic; } - -/* Generic */ -/* GenericDeleted */ -.chroma .gd { - color: #000000; - background-color: #ffdddd; } - -/* GenericEmph */ -.chroma .ge { - color: #000000; - font-style: italic; } - -/* GenericError */ -.chroma .gr { - color: #aa0000; } - -/* GenericHeading */ -.chroma .gh { - color: #999999; } - -/* GenericInserted */ -.chroma .gi { - color: #000000; - background-color: #ddffdd; } - -/* GenericOutput */ -.chroma .go { - color: #888888; } - -/* GenericPrompt */ -.chroma .gp { - color: #555555; } - -/* GenericStrong */ -.chroma .gs { - font-weight: bold; } - -/* GenericSubheading */ -.chroma .gu { - color: #aaaaaa; } - -/* GenericTraceback */ -.chroma .gt { - color: #aa0000; } - -/* GenericUnderline */ -.chroma .gl { - text-decoration: underline; } - -/* TextWhitespace */ -.chroma .w { - color: #bbbbbb; } - -.chroma { - background-color: #f6f8fa; } - -.dark { - /* Background */ - /* Other */ - /* Error */ - /* LineTableTD */ - /* LineTable */ - /* LineHighlight */ - /* LineNumbersTable */ - /* LineNumbers */ - /* Keyword */ - /* KeywordConstant */ - /* KeywordDeclaration */ - /* KeywordNamespace */ - /* KeywordPseudo */ - /* KeywordReserved */ - /* KeywordType */ - /* Name */ - /* NameAttribute */ - /* NameBuiltin */ - /* NameBuiltinPseudo */ - /* NameClass */ - /* NameConstant */ - /* NameDecorator */ - /* NameEntity */ - /* NameException */ - /* NameFunction */ - /* NameFunctionMagic */ - /* NameLabel */ - /* NameNamespace */ - /* NameOther */ - /* NameProperty */ - /* NameTag */ - /* NameVariable */ - /* NameVariableClass */ - /* NameVariableGlobal */ - /* NameVariableInstance */ - /* NameVariableMagic */ - /* Literal */ - /* LiteralDate */ - /* LiteralString */ - /* LiteralStringAffix */ - /* LiteralStringBacktick */ - /* LiteralStringChar */ - /* LiteralStringDelimiter */ - /* LiteralStringDoc */ - /* LiteralStringDouble */ - /* LiteralStringEscape */ - /* LiteralStringHeredoc */ - /* LiteralStringInterpol */ - /* LiteralStringOther */ - /* LiteralStringRegex */ - /* LiteralStringSingle */ - /* LiteralStringSymbol */ - /* LiteralNumber */ - /* LiteralNumberBin */ - /* LiteralNumberFloat */ - /* LiteralNumberHex */ - /* LiteralNumberInteger */ - /* LiteralNumberIntegerLong */ - /* LiteralNumberOct */ - /* Operator */ - /* OperatorWord */ - /* Punctuation */ - /* Comment */ - /* CommentHashbang */ - /* CommentMultiline */ - /* CommentSingle */ - /* CommentSpecial */ - /* CommentPreproc */ - /* CommentPreprocFile */ - /* Generic */ - /* GenericDeleted */ - /* GenericEmph */ - /* GenericError */ - /* GenericHeading */ - /* GenericInserted */ - /* GenericOutput */ - /* GenericPrompt */ - /* GenericStrong */ - /* GenericSubheading */ - /* GenericTraceback */ - /* GenericUnderline */ - /* TextWhitespace */ } - .dark .chroma { - color: #f8f8f2; - background-color: #282a36; } - .dark .chroma .lntd { - vertical-align: top; - padding: 0; - margin: 0; - border: 0; } - .dark .chroma .lntable { - border-spacing: 0; - padding: 0; - margin: 0; - border: 0; - width: auto; - overflow: auto; - display: block; } - .dark .chroma .hl { - display: block; - width: 100%; - background-color: #ffffcc; } - .dark .chroma .lnt { - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #7f7f7f; } - .dark .chroma .ln { - margin-right: 0.4em; - padding: 0 0.4em 0 0.4em; - color: #7f7f7f; } - .dark .chroma .k { - color: #ff79c6; } - .dark .chroma .kc { - color: #ff79c6; } - .dark .chroma .kd { - color: #8be9fd; - font-style: italic; } - .dark .chroma .kn { - color: #ff79c6; } - .dark .chroma .kp { - color: #ff79c6; } - .dark .chroma .kr { - color: #ff79c6; } - .dark .chroma .kt { - color: #8be9fd; } - .dark .chroma .na { - color: #50fa7b; } - .dark .chroma .nb { - color: #8be9fd; - font-style: italic; } - .dark .chroma .nc { - color: #50fa7b; } - .dark .chroma .nf { - color: #50fa7b; } - .dark .chroma .nl { - color: #8be9fd; - font-style: italic; } - .dark .chroma .nt { - color: #ff79c6; } - .dark .chroma .nv { - color: #8be9fd; - font-style: italic; } - .dark .chroma .vc { - color: #8be9fd; - font-style: italic; } - .dark .chroma .vg { - color: #8be9fd; - font-style: italic; } - .dark .chroma .vi { - color: #8be9fd; - font-style: italic; } - .dark .chroma .s { - color: #f1fa8c; } - .dark .chroma .sa { - color: #f1fa8c; } - .dark .chroma .sb { - color: #f1fa8c; } - .dark .chroma .sc { - color: #f1fa8c; } - .dark .chroma .dl { - color: #f1fa8c; } - .dark .chroma .sd { - color: #f1fa8c; } - .dark .chroma .s2 { - color: #f1fa8c; } - .dark .chroma .se { - color: #f1fa8c; } - .dark .chroma .sh { - color: #f1fa8c; } - .dark .chroma .si { - color: #f1fa8c; } - .dark .chroma .sx { - color: #f1fa8c; } - .dark .chroma .sr { - color: #f1fa8c; } - .dark .chroma .s1 { - color: #f1fa8c; } - .dark .chroma .ss { - color: #f1fa8c; } - .dark .chroma .m { - color: #bd93f9; } - .dark .chroma .mb { - color: #bd93f9; } - .dark .chroma .mf { - color: #bd93f9; } - .dark .chroma .mh { - color: #bd93f9; } - .dark .chroma .mi { - color: #bd93f9; } - .dark .chroma .il { - color: #bd93f9; } - .dark .chroma .mo { - color: #bd93f9; } - .dark .chroma .o { - color: #ff79c6; } - .dark .chroma .ow { - color: #ff79c6; } - .dark .chroma .c { - color: #6272a4; } - .dark .chroma .ch { - color: #6272a4; } - .dark .chroma .cm { - color: #6272a4; } - .dark .chroma .c1 { - color: #6272a4; } - .dark .chroma .cs { - color: #6272a4; } - .dark .chroma .cp { - color: #ff79c6; } - .dark .chroma .cpf { - color: #ff79c6; } - .dark .chroma .gd { - color: #ff5555; } - .dark .chroma .ge { - text-decoration: underline; } - .dark .chroma .gh { - font-weight: bold; } - .dark .chroma .gi { - color: #50fa7b; - font-weight: bold; } - .dark .chroma .go { - color: #44475a; } - .dark .chroma .gu { - font-weight: bold; } - .dark .chroma .gl { - text-decoration: underline; } diff --git a/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.json b/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.json deleted file mode 100644 index 3213d97e25..0000000000 --- a/exampleSite/resources/_gen/assets/scss/hugo-papermodx/css/common/highlight.scss_f300667da4f5b5f84e1a9e0702b2fdde.json +++ /dev/null @@ -1 +0,0 @@ -{"Target":"css/common/highlight.css","MediaType":"text/css","Data":{}} \ No newline at end of file From 72ad30a0a03b002f0fe9c9f2d99882ebf3d871cf Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 12:20:03 +0800 Subject: [PATCH 05/50] ci: use extended hugo --- .github/workflows/gh-pages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index c5efbb2f78..76fbced6d9 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -20,6 +20,7 @@ jobs: uses: peaceiris/actions-hugo@v2 with: hugo-version: '0.91.2' + extended: true - name: Build run: cd PaperModX/exampleSite && hugo -D --gc --verbose --minify From 295396b44009b6dc29c1ddfb547218d786593fcd Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 21:35:10 +0800 Subject: [PATCH 06/50] makefile: add new command --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1c878f822b..629cbca715 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ -run-example: - cd exampleSite && hugo server -D --gc -p 13131 +run-default: + cd exampleSite && hugo server -D --gc -p 13131 --config config.default.yml + +run-profile-mode: + cd exampleSite && hugo server -D --gc -p 13131 --config config.profileMode.yml chroma-css: hugo gen chromastyles --style=dracula > assets/css/lib/chroma-dark.css From 0935880bf3ca90ab6a44e012fa867d06d6a7a3bf Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 3 Sep 2022 21:36:36 +0800 Subject: [PATCH 07/50] fix markdown image render hook, handle third party image url --- exampleSite/assets/images/regular.jpg | Bin 0 -> 97512 bytes exampleSite/content/posts/rich-content.md | 10 ++++++ layouts/_default/_markup/render-image.html | 38 ++++++++++++--------- 3 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 exampleSite/assets/images/regular.jpg diff --git a/exampleSite/assets/images/regular.jpg b/exampleSite/assets/images/regular.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70a34014ccba24d97cf4475d24f39384caf7257b GIT binary patch literal 97512 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%0Dq3;)>3`oAvqig28zXT*UsJl;Mu$_u3>oMd|s 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 --- +## Image + +third party image: + +![](https://images.unsplash.com/photo-1662141978148-2eeb2afb3837?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=772&q=80) + +internal image: + +![](images/regular.jpg) + ## YouTube Privacy Enhanced Shortcode {{< youtube ZJthWmvUzzc >}} diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html index 0fc039cb2c..c4d74971c5 100644 --- a/layouts/_default/_markup/render-image.html +++ b/layouts/_default/_markup/render-image.html @@ -1,20 +1,26 @@ -{{- $img := .Page.Resources.GetMatch .Destination -}} -{{- if and (not $img) .Page.File -}} - {{ $path := path.Join .Page.File.Dir .Destination }} - {{- $img = resources.Get $path -}} -{{- end -}} +{{- $url := urls.Parse .Destination -}} +{{- if $url.Scheme -}} + {{/* third party image */}} + {{ $.Text }} +{{- else -}} + {{/* internal image */}} + {{- $img := .Page.Resources.GetMatch .Destination -}} + {{- if not $img -}} + {{- $img = resources.Get .Destination -}} + {{- end -}} -{{- if $img -}} - {{- if eq $img.MediaType.MainType "video" -}} -
- -
+ {{- if $img -}} + {{- if eq $img.MediaType.MainType "video" -}} +
+ +
+ {{- else -}} + {{ $.Text }} + {{- end -}} {{- else -}} - {{ $.Text }} + {{- warnf "No image found for %s from %s" .Destination .Page.File }} {{- end -}} -{{- else -}} - {{- warnf "No image found for %s from %s" .Destination .Page.File }} {{- end -}} From 51d922a535efa103206ab3657e4e9b3b1a8feb9b Mon Sep 17 00:00:00 2001 From: Reorx Date: Mon, 5 Sep 2022 22:55:05 +0800 Subject: [PATCH 08/50] use params.socialAccounts.twitter.username to change twitter meta tag and --- layouts/partials/head.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 8eb9f52cac..1889a85816 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -93,8 +93,10 @@ {{- end }} - - +{{- with site.Params.socialAccounts.twitter }} + + +{{- end }} {{- template "partials/templates/opengraph.html" (dict "page" . "pageTitle" $pageTitle) }} From a316c983a6e3118a5278b0522381217f31c7b47c Mon Sep 17 00:00:00 2001 From: Reorx Date: Tue, 6 Sep 2022 00:32:41 +0800 Subject: [PATCH 09/50] enhance footnotes and sup style - smaller footnotes in a colored box - highlight anchor of both footnote links and sups - sups are surrounded with brackets, imitate wikipedia --- assets/css/common/post-single.css | 54 +++++++++++++++++++++++++++++++ assets/css/core/theme-vars.css | 2 ++ 2 files changed, 56 insertions(+) diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index b6d2c9f1a7..432e0d17ec 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -269,6 +269,24 @@ h6:hover .anchor { .post-content sup { line-height: 1; } +.post-content sup a { + box-shadow: none; + font-family: Helvetica, Arial, sans-serif; + color: var(--link-hover-color); +} +.post-content sup a:hover { + box-shadow: none; + text-decoration: underline; +} +.post-content sup a:before { + content: "["; +} +.post-content sup a:after { + content: "]"; +} +.post-content sup:target { + background-color: var(--link-background-color); +} .post-content hr { margin: 30px 0; @@ -573,3 +591,39 @@ h6:hover .anchor { font-weight: bold; vertical-align: super; } + +.footnotes { + font-size: .8em; + color: var(--primary-dim); + font-weight: 400; + padding: 1em; + background-color: var(--code-bg); +} + +.footnotes a { + color: var(--primary-dim); + font-weight: 400; +} + +.footnotes hr { + display: none; +} +.footnotes ol { + margin: 0; +} +.footnotes ol li { + margin: 0 0 6px 0; +} +.footnotes ol li p { + line-height: 1.5em; + margin: 0; +} +.footnotes ol li:target p { + background-color: var(--link-background-color); +} +.footnotes ol:before { + content: "Footnotes"; + font-size: 1.5em; + margin-left: -1em; + font-weight: 200; +} diff --git a/assets/css/core/theme-vars.css b/assets/css/core/theme-vars.css index 2535b999f5..7980b48a46 100644 --- a/assets/css/core/theme-vars.css +++ b/assets/css/core/theme-vars.css @@ -11,6 +11,7 @@ --theme: rgb(255, 255, 255); --entry: rgb(255, 255, 255); --primary: rgb(30, 30, 30); + --primary-dim: rgb(60, 60, 60); --secondary: rgb(108, 108, 108); --tertiary: rgb(158, 158, 158); --tertiary-bg: rgb(214, 214, 214); @@ -31,6 +32,7 @@ --theme: rgb(29, 30, 32); --entry: rgb(46, 46, 51); --primary: rgb(218, 218, 219); + --primary-dim: rgb(186, 186, 186); --secondary: rgb(155, 156, 157); --tertiary: rgb(123, 124, 124); --tertiary-bg: rgb(65, 66, 68); From 8d679ad58d6930eb9dfe2be5c03086af0a0dd992 Mon Sep 17 00:00:00 2001 From: Reorx Date: Tue, 6 Sep 2022 01:43:08 +0800 Subject: [PATCH 10/50] add shortcode tweet-ref for creating tweet reference in footnotes --- assets/css/common/post-single.css | 30 +++++++++++++++++++++++- layouts/partials/social_quote_tweet.html | 2 +- layouts/shortcodes/tweet-ref.html | 10 ++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 layouts/shortcodes/tweet-ref.html diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 432e0d17ec..1efd99aa08 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -513,6 +513,7 @@ h6:hover .anchor { .social-links { margin: calc(var(--content-gap) * 2) 0; } +/* shortcode */ .social-quote { padding: 1em; } @@ -608,6 +609,14 @@ h6:hover .anchor { .footnotes hr { display: none; } +.footnotes a { + box-shadow: none; + text-decoration: underline; +} +.footnotes a:hover { + box-shadow: none; + text-decoration: underline; +} .footnotes ol { margin: 0; } @@ -618,7 +627,11 @@ h6:hover .anchor { line-height: 1.5em; margin: 0; } -.footnotes ol li:target p { +/* fix tweet-ref makes the li markers sink at the bottom */ +.footnotes ol li > * { + vertical-align: top; +} +.footnotes ol li:target { background-color: var(--link-background-color); } .footnotes ol:before { @@ -627,3 +640,18 @@ h6:hover .anchor { margin-left: -1em; font-weight: 200; } + +/* shortcode */ +.tweet-ref { + width: calc(100% - 2em); + display: inline-block; +} +.tweet-ref blockquote { + margin: 3px 0 0 0; + border-inline-color: var(--tertiary); + line-height: 1.5em; +} + +.tweet-ref blockquote a { + text-decoration: none; +} diff --git a/layouts/partials/social_quote_tweet.html b/layouts/partials/social_quote_tweet.html index b3068aa475..d0bd66d3e8 100644 --- a/layouts/partials/social_quote_tweet.html +++ b/layouts/partials/social_quote_tweet.html @@ -4,7 +4,7 @@ {{ with .title }}{{ . }}{{ end }} - {{ $dnt := true }} + {{- $dnt := true -}} {{- $url := printf "https://twitter.com/%v/status/%v" .user .id -}} {{- $query := querify "url" $url "dnt" $dnt -}} {{- $request := printf "https://publish.twitter.com/oembed?%s" $query -}} diff --git a/layouts/shortcodes/tweet-ref.html b/layouts/shortcodes/tweet-ref.html new file mode 100644 index 0000000000..cf02c4c954 --- /dev/null +++ b/layouts/shortcodes/tweet-ref.html @@ -0,0 +1,10 @@ +
From 8bbb2ac5b5281bd2707fb1ea799852f08c9be57b Mon Sep 17 00:00:00 2001 From: Reorx Date: Tue, 6 Sep 2022 22:38:40 +0800 Subject: [PATCH 11/50] add blogroll type of section page --- assets/css/common/main.css | 47 ---------------------- layouts/blogroll/section.html | 75 +++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 47 deletions(-) create mode 100644 layouts/blogroll/section.html diff --git a/assets/css/common/main.css b/assets/css/common/main.css index e02851b883..004de15638 100644 --- a/assets/css/common/main.css +++ b/assets/css/common/main.css @@ -169,53 +169,6 @@ figure > img { } -/* links page */ - -.links-container { - font-size: 16px; -} -.links-container blockquote { - margin: var(--gap) 0; - padding: 0 14px; - border-inline-start: 3px solid var(--primary); -} -.links .item { - padding: 12px; - background: var(--entry); - border-radius: var(--radius); - margin-bottom: var(--gap); - border: 1px solid var(--border); -} - -.links .favicon { - display: inline-block; - background-size: 16px 16px; - width: 16px; - height: 16px; - image-rendering: -webkit-optimize-contrast; -} -.links .item .title { -} -.links .item .title .favicon { - margin-right: calc(var(--gap) / 2); - vertical-align: middle; -} - -.links .item .title a:hover { - text-decoration: underline; -} - -.links .item .description { - margin-left: calc(16px + var(--gap) / 2); - color: var(--secondary); -} - -.links .item .description .delimiter::after { - content: "·"; - margin-inline-start: .5em; - margin-inline-end: .5em; -} - /* shortcodes */ .standout { diff --git a/layouts/blogroll/section.html b/layouts/blogroll/section.html new file mode 100644 index 0000000000..690910a831 --- /dev/null +++ b/layouts/blogroll/section.html @@ -0,0 +1,75 @@ +{{- define "head" }} + +{{- end }} + +{{- define "main" }} + + + + +{{- end }} From 3bc70e9a2cdc3dd3185c8b3a9a513e999dbd0023 Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 00:38:45 +0800 Subject: [PATCH 12/50] fix hidden is shown in list.html (section page) --- layouts/_default/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/list.html b/layouts/_default/list.html index 6ab2cde742..e2c248ceb0 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -26,10 +26,10 @@

{{ .Title }}

{{- $pages := .Pages }} - {{- if .IsHome }} {{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }} {{- end }} +{{- $pages = where $pages "Params.hidden" "!=" true }} {{/* related issue: https://github.com/gohugoio/hugo/issues/9003 */}} {{ $paginator := "" }} From cd0381f6d3b86adb02702f1848283d9f19b017b5 Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 01:45:22 +0800 Subject: [PATCH 13/50] move blogroll style to css file prevent instantclick from ignoring the style --- assets/css/common/blogroll.css | 42 ++++++++++++++++++++++++++++++ layouts/blogroll/section.html | 47 +--------------------------------- 2 files changed, 43 insertions(+), 46 deletions(-) create mode 100644 assets/css/common/blogroll.css diff --git a/assets/css/common/blogroll.css b/assets/css/common/blogroll.css new file mode 100644 index 0000000000..ec5e94609d --- /dev/null +++ b/assets/css/common/blogroll.css @@ -0,0 +1,42 @@ +.links-container { + font-size: 16px; +} +.links-container blockquote { + margin: var(--gap) 0; + padding: 0 14px; + border-inline-start: 3px solid var(--primary); +} +.links .item { + padding: 12px; + background: var(--entry); + border-radius: var(--radius); + margin-bottom: var(--gap); + border: 1px solid var(--border); +} + +.links .favicon { + display: inline-block; + background-size: 16px 16px; + width: 16px; + height: 16px; + image-rendering: -webkit-optimize-contrast; +} +.links .item .title .favicon { + margin-right: calc(var(--gap) / 2); + vertical-align: middle; +} + +.links .item .title a:hover { + text-decoration: underline; +} + +.links .item .description { + margin-left: calc(16px + var(--gap) / 2); + color: var(--secondary); +} + +.links .item .description .delimiter::after { + content: "·"; + margin-inline-start: .5em; + margin-inline-end: .5em; +} diff --git a/layouts/blogroll/section.html b/layouts/blogroll/section.html index 690910a831..48d5fb48f5 100644 --- a/layouts/blogroll/section.html +++ b/layouts/blogroll/section.html @@ -1,49 +1,4 @@ -{{- define "head" }} - -{{- end }} +{{/* section is AKA list */}} {{- define "main" }} {{- end }} diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html new file mode 100644 index 0000000000..07aab279b9 --- /dev/null +++ b/layouts/newsletter/section.html @@ -0,0 +1,67 @@ +{{/* section is AKA list */}} +{{- define "bodyClass" }} theme-newsletter{{- end }} + +{{- define "main" }} + + + + +{{- $pages := where .Pages "Params.hidden" "!=" true }} + +{{/* related issue: https://github.com/gohugoio/hugo/issues/9003 */}} +{{ $paginator := "" }} +{{ if (.Param "paginate") }} + {{- $paginator = .Paginate $pages (.Param "paginate") }} +{{ else }} + {{- $paginator = .Paginate $pages }} +{{ end }} + + +{{- range $index, $page := $paginator.Pages }} +
+
+

+ {{- .Title }} + {{- if .Draft }}  [Draft]{{- end }} + {{- if .Weight }}  [Pinned]{{- end }} +

+
+ {{- if (ne (.Param "hideSummary") true) }} +
+ {{ if .Description }} +

{{ .Description | plainify | htmlUnescape }}

+ {{ else }} +

{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}

+ {{ end }} +
+ {{- end }} + {{- if not (.Param "hideMeta") }} +
+ {{- partial "post_meta.html" . -}} +
+ {{- end }} + +
+{{- end }} + +{{- if gt $paginator.TotalPages 1 }} + +{{- end }} + +{{ end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 1889a85816..3ced6b6073 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -47,10 +47,11 @@ {{- /* order is important */}} {{- $core := (slice $theme_vars $reset $common $commonHighlight $media) | resources.Concat "assets/css/core.css" }} {{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }} +{{- $extendedScss := (resources.Match "css/extended/*.scss") | resources.Concat "assets/css/extended.scss" | resources.ToCSS }} {{- /* bundle all required css */}} {{- /* Add extended css after theme style */ -}} -{{- $stylesheet := (slice $core $extended) | resources.Concat "assets/css/stylesheet.css" | minify }} +{{- $stylesheet := (slice $core $extended $extendedScss) | resources.Concat "assets/css/stylesheet.css" | minify }} {{- if not site.Params.assets.disableFingerprinting }} {{- $stylesheet := $stylesheet | fingerprint }} From 44533c76bbe3dbd176b350a26f3ac748023d4c9f Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 12:22:54 +0800 Subject: [PATCH 15/50] menu link is active for being the prefix of current url --- layouts/partials/header.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 1061d5bd09..01f2b41843 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -133,7 +133,7 @@ {{- .Pre }} From 62288bcb5661de24f23f2a0e26511ac0fe749467 Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 13:47:52 +0800 Subject: [PATCH 16/50] enhance post-footer spacing --- assets/css/common/post-single.css | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 1efd99aa08..91d7ee8622 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -401,6 +401,8 @@ h6:hover .anchor { .post-footer { margin-top: calc(var(--content-gap) * 1.5); + padding-bottom: calc(var(--content-gap) * 2); + border-bottom: 1px solid var(--tertiary); } .share-buttons { @@ -453,7 +455,7 @@ h6:hover .anchor { } .paginav { - margin: var(--content-gap) 0; + margin-top: var(--content-gap); display: flex; line-height: 30px; border-radius: var(--radius); @@ -574,10 +576,7 @@ h6:hover .anchor { } .comments { - border-top: 1px solid var(--tertiary); -} -.comments { - margin: 40px 0 20px; + margin: var(--content-gap) 0; } .comments .title { margin: 20px 0; From a016d836633b6e223d1ac3ee0ddb262eca0d626d Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 13:53:15 +0800 Subject: [PATCH 17/50] home page filter pages use "Section in" instead of "Type in" distinguish .Section and .Type --- layouts/_default/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/list.html b/layouts/_default/list.html index f92963dfb8..5797a30d82 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -32,7 +32,7 @@

{{ .Title }}

{{- $pages := .Pages }} {{- if .IsHome }} - {{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }} + {{- $pages = where site.RegularPages "Section" "in" site.Params.mainSections }} {{- end }} {{- $pages = where $pages "Params.hidden" "!=" true }} From ca373fd00303c93ed62eafa55696ab03d23667b2 Mon Sep 17 00:00:00 2001 From: Reorx Date: Wed, 7 Sep 2022 15:19:46 +0800 Subject: [PATCH 18/50] add type- and kind- classes to body, styling newsletter single and section --- assets/css/extended/newsletter.scss | 99 +++++++++++++++++++++++++++++ layouts/_default/baseof.html | 3 +- layouts/_default/single.html | 22 ++++++- layouts/newsletter/section.html | 5 +- 4 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 assets/css/extended/newsletter.scss diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss new file mode 100644 index 0000000000..0dc5235274 --- /dev/null +++ b/assets/css/extended/newsletter.scss @@ -0,0 +1,99 @@ +/* +color candidates: +#CB3A56 茜色 +#F05654 銀紅 +#F20C00 石榴紅 +#FF2D51 火紅 +*/ +body.type-newsletter { + --signature: #CB3A56; + --signature-bg: rgba(203, 58, 87, 0.239); + --signature-bg-dim: rgba(203, 58, 87, 0.147); + --main-border: 5px solid var(--signature); + --link-hover-color: var(--signature); + + + /* regular page layout */ +} + +body.type-newsletter.kind-section { + /* section page layout */ + + .main { + border: var(--main-border); + background-color: var(--theme); + margin-top: var(--content-gap); + min-height: calc(100vh - var(--header-height) - var(--footer-height) - var(--content-gap)); + max-width: calc(var(--nav-width)); + } + + .main-logo { + position: absolute; + left: 0; top: 0; + width: 50px; + height: 50px; + line-height: 45px; + border-right: var(--main-border); + border-bottom: var(--main-border); + background-color: var(--signature); + color: var(--theme); + font-size: 32px; + text-align: center; + } +} + +body.type-newsletter.kind-page { + .newsletter-brand { + display: flex; + background-color: var(--signature-bg-dim); + transition: var(--link-transition); + font-size: 32px; + margin-bottom: calc(var(--content-gap) * 2); + line-height: 50px; + + .icon, .name { + height: 50px; + } + .icon { + width: 50px; + color: var(--theme); + text-align: center; + background-color: var(--signature); + } + .name { + padding: 0 20px; + font-weight: bolder; + color: var(--signature); + } + .issueno { + color: var(--signature); + font-weight: 300; + transition: var(--link-transition); + } + .arrow { + margin-left: auto; + color: transparent; + display: flex; + align-items: center; + padding-right: 15px; + transition: var(--link-transition); + } + + &:hover, &:active { + background-color: var(--signature-bg); + .arrow { + color: var(--signature); + } + .issueno { + color: transparent; + } + } + } + + .post-title { + font-size: 36px; + } + .post-footer { + border-bottom: 0; + } +} diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index e74c03eb94..0d78fad21f 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -12,8 +12,7 @@ {{- end -}} {{- if eq site.Params.defaultTheme `dark` -}} {{- print " dark" }} -{{- end -}} -{{- block "bodyClass" . }}{{ end }} +{{- end }} type-{{ .Type }} kind-{{ .Kind -}} " id="top"> {{- partialCached "header.html" . .Page -}}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html index c71f66dfcb..7109cdb133 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,15 +1,31 @@ {{- define "main" }} +{{- $isNewsletter := eq .Type "newsletter" }}
{{ partial "breadcrumbs.html" . }} + + {{- if $isNewsletter -}} + + {{- end -}}

- {{ .Title }} - {{- if .Draft }}  [draft]{{- end }} + {{- if $isNewsletter -}} + {{- replace .Title (.Param "titlePrefix") (.Param "titlePrefixReplace") -}} + {{- else -}} + {{- .Title -}} + {{- end -}} + {{- if .Draft -}}  [draft]{{- end -}}

{{- if .Description }}
- {{ .Description }} + {{- .Description -}}
{{- end }} {{- if not (.Param "hideMeta") }} diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html index 07aab279b9..344810aaf1 100644 --- a/layouts/newsletter/section.html +++ b/layouts/newsletter/section.html @@ -1,11 +1,10 @@ {{/* section is AKA list */}} -{{- define "bodyClass" }} theme-newsletter{{- end }} {{- define "main" }} - + +{{/* get pages from the current page's section */}} +{{/* in this way, archives.html could be used for section archives other than the only one archives of the whole site */}} {{- $sections := site.Params.mainSections }} -{{/* with the follow condition, archives.html could be used for section archives other than the only one archives of the whole site */}} {{- if .Section }} - {{- $sections = .Section}} + {{- $sections = slice .Section }} {{- end }} -{{- $pages := where site.AllPages "Type" "in" $sections }} +{{- $pages := where (where site.RegularPages "Section" "in" $sections) "Params.hidden" "!=" true }} {{- range $pages.GroupByPublishDate "2006" }} {{- if ne .Key "0001" }} diff --git a/layouts/_default/list.html b/layouts/_default/list.html index 5797a30d82..67e1897201 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -32,6 +32,7 @@

{{ .Title }}

{{- $pages := .Pages }} {{- if .IsHome }} + {{/* get all regular pages instead of pages in a section */}} {{- $pages = where site.RegularPages "Section" "in" site.Params.mainSections }} {{- end }} {{- $pages = where $pages "Params.hidden" "!=" true }} diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html index 95bbf7d535..a52e40f463 100644 --- a/layouts/newsletter/section.html +++ b/layouts/newsletter/section.html @@ -13,12 +13,10 @@

{{ .Title }}

{{- partial "newsletter_sub_form.html"}} - {{- $pages := where .Pages "Params.hidden" "!=" true }} -

最近更新

- {{- range first 5 $pages }} + {{- range first 5 (where .Pages "Params.hidden" "!=" true) }}
{{- if not .Date.IsZero -}} diff --git a/layouts/partials/post_nav_links.html b/layouts/partials/post_nav_links.html index 2d1eaa9a39..c52fbfa051 100644 --- a/layouts/partials/post_nav_links.html +++ b/layouts/partials/post_nav_links.html @@ -1,4 +1,11 @@ -{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} +{{/* get pages from the current page's section */}} +{{- $sections := site.Params.mainSections }} +{{- if .Section }} + {{- $sections = slice .Section }} +{{- end }} +{{ $sections }} +{{- $pages := where (where site.RegularPages "Section" "in" $sections) "Params.hidden" "!=" true }} + {{- if and (gt (len $pages) 1) (in $pages . ) }}
{{- end }} - {{- with .Param "archivesSlug" }} -
- Archives + - {{- end }}
{{- end }} diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html index a52e40f463..11d52ab611 100644 --- a/layouts/newsletter/section.html +++ b/layouts/newsletter/section.html @@ -35,13 +35,13 @@

最近更新

相关链接

-
+
From edf0ed0258cbfffe9bb4d6231601302d2357d24d Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 01:41:33 +0800 Subject: [PATCH 34/50] add newsletter sub box in single --- assets/css/common/post-single.css | 1 + assets/css/extended/newsletter.scss | 18 ++++++++++++++++++ layouts/_default/baseof.html | 2 +- layouts/_default/single.html | 7 ++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index ab0b54fb0b..bdfa9454e2 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -592,6 +592,7 @@ h6:hover .anchor { vertical-align: super; } +/* footnotes */ .footnotes { font-size: .8em; color: var(--primary-dim); diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index 55cdbb6937..49a7aadf9c 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -285,4 +285,22 @@ body.type-newsletter.kind-page { .post-footer { border-bottom-color: var(--signature); } + + + .newsletter-sub { + margin-top: var(--gap); + background-color: var(--signature-bg-dim); + padding: 1em; + .notice { + font-size: .8em; + color: var(--signature); + line-height: 1.6; + } + .sub-form { + margin: 1em 0; + input { + border-color: var(--signature-bg); + } + } + } } diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index bf74e92586..1413f56d1a 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -12,7 +12,7 @@ {{- end -}} {{- if eq site.Params.defaultTheme `dark` -}} {{- print " dark" }} -{{- end }} type-{{ .Type }} kind-{{ .Kind -}} +{{- end }} type-{{ .Type }} kind-{{ .Kind }} layout-{{ .Layout -}} " id="top"> {{- partialCached "header.html" . .Page -}}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 6fff034d2b..64fc16497e 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -54,7 +54,12 @@

{{- end }} {{- if $isNewsletter }} - {{- partial "newsletter_sub_form.html"}} + {{- end }} From 2faf1cc852b794d8d79d1bb7e3ff0e30a4ca4705 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 02:35:11 +0800 Subject: [PATCH 35/50] finish newsletter archives --- assets/css/extended/newsletter.scss | 34 +++++++++++++---------------- layouts/newsletter/archives.html | 33 ++++++++++++++++++++++++++++ layouts/newsletter/section.html | 7 +++--- 3 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 layouts/newsletter/archives.html diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index 49a7aadf9c..136ba92f6a 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -27,8 +27,9 @@ body.type-newsletter { --icon-font-size: 24px; } - /* a links in section page content and regular page post-content */ + /* a links in section/archives page content and regular page post-content */ &.kind-section .main .content a, + &.layout-archives .main .content a, &.kind-page .post-content a { font-weight: 500; color: var(--primary); @@ -86,8 +87,9 @@ body.type-newsletter { } } -body.type-newsletter.kind-section { - /* section page layout */ +body.type-newsletter.kind-section, +body.type-newsletter.layout-archives { + /* section/archives page */ .main { border: var(--main-border); @@ -129,21 +131,16 @@ body.type-newsletter.kind-section { @media screen and (max-width: $small) { margin-top: calc(var(--icon-length)); } + } - .entry-header { - text-align: center; - margin-bottom: calc(var(--content-gap) * 1.5); - h1 { - // back to default - font-size: 36px; - } - .subtitle { - color: var(--secondary); - } - } - // .entry-content { - // font-size: 16px; - // } + h1 { + text-align: center; + margin-top: var(--gap); + margin-bottom: calc(var(--content-gap) * 1); + } + .subtitle { + text-align: center; + color: var(--secondary); } h2 { @@ -214,7 +211,7 @@ body.type-newsletter.kind-section { } } -/* regular page layout */ +/* regular page */ body.type-newsletter.kind-page { .newsletter-brand { --icon-length: 50px; @@ -286,7 +283,6 @@ body.type-newsletter.kind-page { border-bottom-color: var(--signature); } - .newsletter-sub { margin-top: var(--gap); background-color: var(--signature-bg-dim); diff --git a/layouts/newsletter/archives.html b/layouts/newsletter/archives.html new file mode 100644 index 0000000000..ae19b5af4e --- /dev/null +++ b/layouts/newsletter/archives.html @@ -0,0 +1,33 @@ +{{- define "main" }} +
+ +
+

{{ .Title }}

+ {{- partial "newsletter_sub_form.html"}} + + {{/* get pages from the current page's section */}} + {{- $sections := slice .Section }} + {{- $pages := where (where site.RegularPages "Section" "in" $sections) "Params.hidden" "!=" true }} + + {{/* TODO statistics */}} +
+ {{- range $pages }} +
+
+ {{- if not .Date.IsZero -}} + {{ .Date | time.Format (default "January 2, 2006" site.Params.DateFormat) }} + {{- end }} +
+ +
{{ with .Param "issueno" }}#{{ . }}{{ end }}
+
+ {{- end }} +
+ +
+{{ end }} diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html index 11d52ab611..28ac710379 100644 --- a/layouts/newsletter/section.html +++ b/layouts/newsletter/section.html @@ -4,11 +4,10 @@
+

{{ .Title }}

+ {{ with .Param "subtitle" }}
{{ . }}
{{ end }} +
-
-

{{ .Title }}

- {{ with .Param "subtitle" }}
{{ . }}
{{ end }} -
{{ .Description | markdownify }}
{{- partial "newsletter_sub_form.html"}}
From deb675dacea8df81c0c3d027322e8d486d6b52e6 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 02:37:44 +0800 Subject: [PATCH 36/50] clear debug code --- layouts/partials/post_nav_links.html | 1 - 1 file changed, 1 deletion(-) diff --git a/layouts/partials/post_nav_links.html b/layouts/partials/post_nav_links.html index c52fbfa051..05e68a3cec 100644 --- a/layouts/partials/post_nav_links.html +++ b/layouts/partials/post_nav_links.html @@ -3,7 +3,6 @@ {{- if .Section }} {{- $sections = slice .Section }} {{- end }} -{{ $sections }} {{- $pages := where (where site.RegularPages "Section" "in" $sections) "Params.hidden" "!=" true }} {{- if and (gt (len $pages) 1) (in $pages . ) }} From e14673bee7e16f4c00a5ad50d62f1aa023ff11ac Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 21:08:03 +0800 Subject: [PATCH 37/50] subtle adjustments --- assets/css/common/post-single.css | 5 ++++- assets/css/extended/newsletter.scss | 6 +----- layouts/_default/single.html | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index bdfa9454e2..2f6e2c1e6a 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -1,6 +1,9 @@ .page-header, .post-header { - margin: 32px 0; + margin: calc(var(--gap) * 4/3) 0; +} +.post-header { + margin-top: calc(var(--gap) * 1/3); } .post-title { diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index 136ba92f6a..7ac207bb85 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -127,10 +127,6 @@ body.type-newsletter.layout-archives { .first-entry { margin-bottom: 0; - - @media screen and (max-width: $small) { - margin-top: calc(var(--icon-length)); - } } h1 { @@ -284,7 +280,7 @@ body.type-newsletter.kind-page { } .newsletter-sub { - margin-top: var(--gap); + margin-top: calc(var(--content-gap) * 1.5); background-color: var(--signature-bg-dim); padding: 1em; .notice { diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 64fc16497e..fa4c86d1e1 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -56,7 +56,7 @@

{{- if $isNewsletter }} From ce83fcc8ed84127f21b328b759882409093dcf67 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 21:29:29 +0800 Subject: [PATCH 38/50] consistant header gaps --- assets/css/common/main.css | 14 ++++++++++++-- assets/css/common/post-single.css | 8 ++------ assets/css/extended/newsletter.scss | 12 +++++++----- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/assets/css/common/main.css b/assets/css/common/main.css index 785546cb0a..8d798f5c43 100644 --- a/assets/css/common/main.css +++ b/assets/css/common/main.css @@ -4,8 +4,18 @@ min-height: calc(100vh - var(--header-height) - var(--footer-height)); max-width: calc(var(--main-width) + var(--gap) * 2); margin: auto; - padding: var(--gap); - padding-bottom: 0; + padding: var(--content-gap) var(--gap) 0; +} + +@media screen and (max-width: 500px) { + .main { + padding-top: 0; + } +} + +/* same as .post-header */ +.page-header { + margin: var(--gap) 0 calc(var(--content-gap) * 1.5); } .mark-line { diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 2f6e2c1e6a..03104b6113 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -1,14 +1,10 @@ -.page-header, .post-header { - margin: calc(var(--gap) * 4/3) 0; -} -.post-header { - margin-top: calc(var(--gap) * 1/3); + margin: var(--gap) 0 calc(var(--content-gap) * 1.5); } .post-title { font-size: 40px; - margin: var(--content-gap) 0; + margin-bottom: var(--content-gap); } .post-description { diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index 7ac207bb85..97bfa9cb27 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -94,7 +94,8 @@ body.type-newsletter.layout-archives { .main { border: var(--main-border); background-color: var(--theme); - margin-top: var(--content-gap); + margin-top: var(--gap); + padding-top: 0; padding-bottom: var(--icon-length); min-height: calc(100vh - var(--header-height) - var(--footer-height) - var(--content-gap)); max-width: var(--nav-width); @@ -122,7 +123,7 @@ body.type-newsletter.layout-archives { .main { .content { max-width: calc(var(--post-width)); - margin: 0 auto; + margin: var(--icon-length) auto 0; } .first-entry { @@ -131,12 +132,13 @@ body.type-newsletter.layout-archives { h1 { text-align: center; - margin-top: var(--gap); - margin-bottom: calc(var(--content-gap) * 1); + margin-bottom: 10px; } .subtitle { text-align: center; color: var(--secondary); + line-height: 1.2em; + margin-bottom: var(--content-gap); } h2 { @@ -216,7 +218,7 @@ body.type-newsletter.kind-page { background-color: var(--signature-bg-dim); transition: var(--link-transition); font-size: 32px; - // margin-bottom: calc(var(--content-gap) * 2); + margin-bottom: var(--content-gap); line-height: var(--icon-length); box-shadow: none; // reset From e4f4f1d6608cee4997f5ee67a486424ade29c6b6 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 21:46:44 +0800 Subject: [PATCH 39/50] use content-gap instead of gap for header --- assets/css/common/main.css | 2 +- assets/css/common/post-single.css | 2 +- assets/css/extended/newsletter.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/css/common/main.css b/assets/css/common/main.css index 8d798f5c43..893081f61d 100644 --- a/assets/css/common/main.css +++ b/assets/css/common/main.css @@ -15,7 +15,7 @@ /* same as .post-header */ .page-header { - margin: var(--gap) 0 calc(var(--content-gap) * 1.5); + margin: var(--content-gap) 0 calc(var(--content-gap) * 1.5); } .mark-line { diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 03104b6113..70951929f0 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -1,5 +1,5 @@ .post-header { - margin: var(--gap) 0 calc(var(--content-gap) * 1.5); + margin: var(--content-gap) 0 calc(var(--content-gap) * 1.5); } .post-title { diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index 97bfa9cb27..a1a8fef772 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -94,7 +94,7 @@ body.type-newsletter.layout-archives { .main { border: var(--main-border); background-color: var(--theme); - margin-top: var(--gap); + margin-top: var(--content-gap); padding-top: 0; padding-bottom: var(--icon-length); min-height: calc(100vh - var(--header-height) - var(--footer-height) - var(--content-gap)); From 3f294daccf50f2242a085fd9af97d115a9d96d32 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 21:50:49 +0800 Subject: [PATCH 40/50] lower nav height in mobile --- assets/css/core/theme-vars.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/css/core/theme-vars.css b/assets/css/core/theme-vars.css index e3dd503c39..d67a361e5a 100644 --- a/assets/css/core/theme-vars.css +++ b/assets/css/core/theme-vars.css @@ -27,6 +27,12 @@ --link-transition: all 0.3s ease; --line-yellow: url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' width='120' height='6' viewBox='0 0 120 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M119 0.8C60 4 50-0.5 1 1.5' stroke='%23fc0' stroke-width='3' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); } +@media screen and (max-width: 500px) { + :root { + --header-height: 52px; + } + +} .dark { --theme: rgb(29, 30, 32); From bb02a60990dd79f9828798a044776984d51ff5da Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 21:55:35 +0800 Subject: [PATCH 41/50] newsletter section: only show list when there are pages --- layouts/newsletter/section.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/layouts/newsletter/section.html b/layouts/newsletter/section.html index 28ac710379..04c3eed747 100644 --- a/layouts/newsletter/section.html +++ b/layouts/newsletter/section.html @@ -12,10 +12,12 @@

{{ .Title }}

{{- partial "newsletter_sub_form.html"}}

-

最近更新

+ {{ $pages := where .Pages "Params.hidden" "!=" true }} + {{ if $pages }} +

最新通讯

- {{- range first 5 (where .Pages "Params.hidden" "!=" true) }} + {{- range first 5 $pages }}
{{- if not .Date.IsZero -}} @@ -32,6 +34,7 @@

最近更新

{{- end }}
+ {{ end }}

相关链接

{{ end }} diff --git a/layouts/partials/inline_links.html b/layouts/partials/inline_links.html new file mode 100644 index 0000000000..72e4af2d92 --- /dev/null +++ b/layouts/partials/inline_links.html @@ -0,0 +1,11 @@ + From cf1605c75e0ab00b1db5de57a68a7435ea0f7c22 Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 23:21:23 +0800 Subject: [PATCH 43/50] enhance archives month position --- assets/css/common/archive.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/common/archive.css b/assets/css/common/archive.css index 7e7e245323..63066eb96e 100644 --- a/assets/css/common/archive.css +++ b/assets/css/common/archive.css @@ -18,7 +18,7 @@ } .archive-month-header { - margin: 25px 0; + margin: 22px 0; width: 200px; } From 2dd6ff7b0aaaf7469973c8e88fd6b814428120af Mon Sep 17 00:00:00 2001 From: Reorx Date: Thu, 8 Sep 2022 23:36:02 +0800 Subject: [PATCH 44/50] add newsletter example --- exampleSite/config.default.yml | 3 +++ .../content/newsletter/001-hello-world/index.md | 7 +++++++ exampleSite/content/newsletter/_index.md | 13 +++++++++++++ exampleSite/content/newsletter/archives.md | 5 +++++ 4 files changed, 28 insertions(+) create mode 100644 exampleSite/content/newsletter/001-hello-world/index.md create mode 100644 exampleSite/content/newsletter/_index.md create mode 100644 exampleSite/content/newsletter/archives.md diff --git a/exampleSite/config.default.yml b/exampleSite/config.default.yml index 567ed4a0c9..38e30d1106 100644 --- a/exampleSite/config.default.yml +++ b/exampleSite/config.default.yml @@ -130,6 +130,9 @@ languages: - name: Docs url: /docs/ weight: 1 + - name: Newsletter + url: /newsletter/ + weight: 1 - name: Tags url: /tags/ weight: 4 diff --git a/exampleSite/content/newsletter/001-hello-world/index.md b/exampleSite/content/newsletter/001-hello-world/index.md new file mode 100644 index 0000000000..810650ddec --- /dev/null +++ b/exampleSite/content/newsletter/001-hello-world/index.md @@ -0,0 +1,7 @@ +--- +title: "My Newsletter: Hello World" +date: 2022-09-07 +issueno: "001" +--- + +Welcome to PaperModX. diff --git a/exampleSite/content/newsletter/_index.md b/exampleSite/content/newsletter/_index.md new file mode 100644 index 0000000000..b67aa37503 --- /dev/null +++ b/exampleSite/content/newsletter/_index.md @@ -0,0 +1,13 @@ +--- +title: My Newsletter +subtitle: What do you want to write? +description: | + This is the template for creating a newsletter in PaperModX. +type: newsletter +cascade: + - _target: + kind: page + type: newsletter + titlePrefix: "My Newsletter: " + newsletterName: "My Newsletter" +--- diff --git a/exampleSite/content/newsletter/archives.md b/exampleSite/content/newsletter/archives.md new file mode 100644 index 0000000000..3bb09e41ee --- /dev/null +++ b/exampleSite/content/newsletter/archives.md @@ -0,0 +1,5 @@ +--- +title: "My Newsletter Archives" +layout: archives +hidden: true +--- From 7a7486c112f56555166315f5ba1a8b28b68e6513 Mon Sep 17 00:00:00 2001 From: Reorx Date: Fri, 9 Sep 2022 11:30:00 +0800 Subject: [PATCH 45/50] fix header logo width inconsistancy --- assets/css/common/header.css | 10 +++++++--- layouts/partials/header.html | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/assets/css/common/header.css b/assets/css/common/header.css index 1a9ccff3eb..4a93258515 100644 --- a/assets/css/common/header.css +++ b/assets/css/common/header.css @@ -31,7 +31,8 @@ font-weight: 700; } -.logo a img { +.logo a img, +.logo a svg { display: inline; vertical-align: middle; pointer-events: none; @@ -81,9 +82,12 @@ body:not(.dark) #sun { color: var(--primary); } +#menu a.active:hover { + color: var(--signature); +} #menu .active { - color: var(--primary); - box-shadow: 0 2px 0 var(--primary); + color: var(--signature); + box-shadow: 0 2px 0 var(--signature); } #menu .external-link { diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 01f2b41843..f1435b8211 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -89,10 +89,10 @@ {{- end }} {{- end }} logo + height="{{- site.Params.logo.iconHeight | default "30" -}}" width="{{- site.Params.logo.iconWidth | default "30" -}}"> {{- else }} - logo + logo {{- end -}} {{- end -}} {{- $label_text -}} From a461f6d44f994b963ffe60dec2ac4646d9029109 Mon Sep 17 00:00:00 2001 From: Reorx Date: Fri, 9 Sep 2022 11:30:49 +0800 Subject: [PATCH 46/50] add essays section layout --- assets/css/common/post-single.css | 4 +- assets/css/core/theme-vars.css | 4 ++ assets/css/extended/essays.scss | 35 ++++++++++++++++ layouts/essays/section.html | 70 +++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 assets/css/extended/essays.scss create mode 100644 layouts/essays/section.html diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 70951929f0..644eaed3d0 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -12,7 +12,7 @@ color: var(--secondary); opacity: .8; padding-left: .5em; - border-left: 3px solid var(--tertiary); + border-left: 8px solid var(--signature); } .post-meta, @@ -141,7 +141,7 @@ h6:hover .anchor { } .post-content li { - margin-top: 10px; + margin-top: .5em; } .post-content li p { diff --git a/assets/css/core/theme-vars.css b/assets/css/core/theme-vars.css index d67a361e5a..5b2c7f8dc8 100644 --- a/assets/css/core/theme-vars.css +++ b/assets/css/core/theme-vars.css @@ -26,6 +26,10 @@ --link-hover-underline-shadow: 0 2px 0 var(--link-hover-underline-color); --link-transition: all 0.3s ease; --line-yellow: url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' width='120' height='6' viewBox='0 0 120 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M119 0.8C60 4 50-0.5 1 1.5' stroke='%23fc0' stroke-width='3' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); + + /* for type pages theming */ + --signature: var(--primary); + --signature-bg: var(--secondary); } @media screen and (max-width: 500px) { :root { diff --git a/assets/css/extended/essays.scss b/assets/css/extended/essays.scss new file mode 100644 index 0000000000..0881a4a81b --- /dev/null +++ b/assets/css/extended/essays.scss @@ -0,0 +1,35 @@ +/* +color candidates: +#48C0A3 青碧 +#519A73 蒼黃 +#1BD1A5 碧色 +#7BCFA6 玉色 +*/ +body.type-essays { + --signature: #48C0A3; + --signature-bg: rgba(72, 192, 164, 0.427); + // override theme-vars + --link-hover-color: var(--signature); + --link-hover-underline-color: var(--signature); + --link-hover-underline-shadow: 0 2px 0 var(--link-hover-underline-color); + + .post-entry { + /* same as .post-header h2 */ + .entry-title { + font-size: 24px; + line-height: 1.3; + margin-bottom: calc(var(--content-gap) / 2); + a { + color: var(--primary); + transition: var(--link-transition); + &:hover { + color: var(--link-hover-color); + box-shadow: var(--link-hover-underline-shadow); + } + } + } + .post-meta { + margin-bottom: var(--content-gap); + } + } +} diff --git a/layouts/essays/section.html b/layouts/essays/section.html new file mode 100644 index 0000000000..95b06e5b0a --- /dev/null +++ b/layouts/essays/section.html @@ -0,0 +1,70 @@ +{{- define "main" }} + + + +{{- if .Content }} +
+ {{- if not (.Param "disableAnchoredHeadings") }} + {{- partial "anchored_headings.html" .Content -}} + {{- else }}{{ .Content }}{{ end }} +
+{{- end }} + + +{{- $pages := .Pages }} +{{- $pages = where $pages "Params.hidden" "!=" true }} + +{{/* related issue: https://github.com/gohugoio/hugo/issues/9003 */}} +{{ $paginator := "" }} +{{ if (.Param "paginate") }} + {{- $paginator = .Paginate $pages (.Param "paginate") }} +{{ else }} + {{- $paginator = .Paginate $pages }} +{{ end }} + +{{- $term := .Data.Term }} +{{- range $index, $page := $paginator.Pages }} + + +{{- end }} + +{{- if gt $paginator.TotalPages 1 }} + +{{- end }} + +{{- end }}{{- /* end main */ -}} From e309c7a17d8a014a48306819ec8088552ddad853 Mon Sep 17 00:00:00 2001 From: Reorx Date: Fri, 9 Sep 2022 22:32:28 +0800 Subject: [PATCH 47/50] fix --link-background-color inconsistant with signature color --- assets/css/extended/essays.scss | 2 ++ assets/css/extended/newsletter.scss | 1 + 2 files changed, 3 insertions(+) diff --git a/assets/css/extended/essays.scss b/assets/css/extended/essays.scss index 0881a4a81b..686bb734b8 100644 --- a/assets/css/extended/essays.scss +++ b/assets/css/extended/essays.scss @@ -8,10 +8,12 @@ color candidates: body.type-essays { --signature: #48C0A3; --signature-bg: rgba(72, 192, 164, 0.427); + --siguature-bg-dim: rgba(72, 192, 164, 0.298); // override theme-vars --link-hover-color: var(--signature); --link-hover-underline-color: var(--signature); --link-hover-underline-shadow: 0 2px 0 var(--link-hover-underline-color); + --link-background-color: var(--siguature-bg-dim); .post-entry { /* same as .post-header h2 */ diff --git a/assets/css/extended/newsletter.scss b/assets/css/extended/newsletter.scss index a1a8fef772..fa1d286df0 100644 --- a/assets/css/extended/newsletter.scss +++ b/assets/css/extended/newsletter.scss @@ -21,6 +21,7 @@ body.type-newsletter { --link-hover-color: var(--signature); --link-hover-underline-color: var(--signature); --link-hover-underline-shadow: 0 2px 0 var(--link-hover-underline-color); + --link-background-color: var(--signature-bg-dim); @media screen and (max-width: $small) { --icon-length: 40px; From 5a324267dcfe4b2216c16078bda8f14dd4d75dbf Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 10 Sep 2022 00:50:11 +0800 Subject: [PATCH 48/50] add fixedWith for image-size-control --- layouts/shortcodes/image-size-control.html | 1 + 1 file changed, 1 insertion(+) diff --git a/layouts/shortcodes/image-size-control.html b/layouts/shortcodes/image-size-control.html index 679aae760f..d0f8d6291c 100644 --- a/layouts/shortcodes/image-size-control.html +++ b/layouts/shortcodes/image-size-control.html @@ -1,5 +1,6 @@
{{ .Page.RenderString .Inner }} From d7986e71bfeda9ca660e0253b7d6180093e23c9d Mon Sep 17 00:00:00 2001 From: Reorx Date: Sat, 10 Sep 2022 01:44:16 +0800 Subject: [PATCH 49/50] remove twitter:image meta tag according to https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started, twitter:image is not needed when og:image appears --- layouts/partials/head.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 165afb4652..6f36fbe775 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -84,12 +84,10 @@ {{- /* https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started */}} {{- if .Params.cover.image }} - - + {{- else }} {{- with site.Params.images -}} - - + {{- end }} {{- end }} From 6f9714cf2b276dd47f6c18e827f5f5288875a471 Mon Sep 17 00:00:00 2001 From: Reorx Date: Fri, 30 Sep 2022 00:19:08 +0800 Subject: [PATCH 50/50] enhance blockquote and monospace font --- assets/css/common/post-single.css | 6 +++++- assets/css/core/theme-vars.css | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/css/common/post-single.css b/assets/css/common/post-single.css index 644eaed3d0..67b44eb3de 100644 --- a/assets/css/common/post-single.css +++ b/assets/css/common/post-single.css @@ -245,6 +245,7 @@ h6:hover .anchor { padding: 4px 5px; border-radius: 3px; font-size: .95em; + font-family: var(--monospace); } .post-content pre code { /* reset inline code */ @@ -254,15 +255,18 @@ h6:hover .anchor { overflow-x: auto; border-radius: var(--radius); word-break: break-all; + font-family: var(--monospace); } .post-content .chroma code { background-color: inherit; + font-family: var(--monospace); } .post-content blockquote { margin: 20px 0; padding: 0 14px; - border-inline-start: 3px solid var(--primary); + border-inline-start: 3px solid var(--tertiary-bg); + opacity: 0.8; } .post-content sup { diff --git a/assets/css/core/theme-vars.css b/assets/css/core/theme-vars.css index 5b2c7f8dc8..6c4f43c724 100644 --- a/assets/css/core/theme-vars.css +++ b/assets/css/core/theme-vars.css @@ -7,6 +7,7 @@ --header-height: 60px; --footer-height: 80px; --radius: 8px; + --monospace: "Lucida Console", Monaco, "Consolas", monospace; --theme: rgb(255, 255, 255); --entry: rgb(255, 255, 255);

+ {{- $url := .Get 0 -}} + From {{ strings.TrimPrefix "https://" $url }}: + + {{- $dnt := true -}} + {{- $query := querify "url" $url "dnt" $dnt -}} + {{- $request := printf "https://publish.twitter.com/oembed?%s" $query -}} + {{- $json := getJSON $request -}} + {{- replaceRE "" "" $json.html | safeHTML -}} +