mirror of https://github.com/jpanther/congo.git
Compare commits
11 Commits
16edb5da3b
...
fa3a47c52b
Author | SHA1 | Date |
---|---|---|
James Panther | fa3a47c52b | |
James Panther | 7a9020b52f | |
James Panther | a431f466dc | |
stereobooster | c8b33ae51e | |
stereobooster | 0c6c30fec1 | |
stereobooster | 6eb34e7124 | |
stereobooster | 11fd48f5d0 | |
stereobooster | 8cfe33965b | |
stereobooster | 3ffe2b1002 | |
stereobooster | 978791808f | |
stereobooster | c237e04744 |
|
@ -22,6 +22,7 @@ jobs:
|
||||||
uses: peaceiris/actions-hugo@v2
|
uses: peaceiris/actions-hugo@v2
|
||||||
with:
|
with:
|
||||||
hugo-version: "latest"
|
hugo-version: "latest"
|
||||||
|
extended: true
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ./exampleSite
|
working-directory: ./exampleSite
|
||||||
|
|
|
@ -19,6 +19,7 @@ jobs:
|
||||||
uses: peaceiris/actions-hugo@v2
|
uses: peaceiris/actions-hugo@v2
|
||||||
with:
|
with:
|
||||||
hugo-version: "latest"
|
hugo-version: "latest"
|
||||||
|
extended: true
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ./exampleSite
|
working-directory: ./exampleSite
|
||||||
|
|
|
@ -8,7 +8,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Warning when building if links to markdown files cannot be resolved ([#691](https://github.com/jpanther/congo/pull/691))
|
- Automatic support for WebP images ([#693](https://github.com/jpanther/congo/pull/693))
|
||||||
|
- Warning when building if links to Markdown files cannot be resolved ([#691](https://github.com/jpanther/congo/pull/691))
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- ⚠️ Hugo extended version is now required when building sites
|
||||||
|
- Refactored image logic into a new `picture.html` partial ([#693](https://github.com/jpanther/congo/pull/693))
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[hugoVersion]
|
[hugoVersion]
|
||||||
extended = false
|
extended = true
|
||||||
min = "0.87.0"
|
min = "0.87.0"
|
||||||
|
|
|
@ -12,6 +12,7 @@ autoSwitchAppearance = true
|
||||||
enableSearch = false
|
enableSearch = false
|
||||||
enableCodeCopy = false
|
enableCodeCopy = false
|
||||||
enableImageLazyLoading = true
|
enableImageLazyLoading = true
|
||||||
|
enableImageWebp = true
|
||||||
|
|
||||||
# robots = ""
|
# robots = ""
|
||||||
fingerprintAlgorithm = "sha256"
|
fingerprintAlgorithm = "sha256"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[hugoVersion]
|
[hugoVersion]
|
||||||
extended = false
|
extended = true
|
||||||
min = "0.86.1"
|
min = "0.87.0"
|
||||||
|
|
|
@ -12,6 +12,7 @@ autoSwitchAppearance = true
|
||||||
enableSearch = true
|
enableSearch = true
|
||||||
enableCodeCopy = true
|
enableCodeCopy = true
|
||||||
enableImageLazyLoading = true
|
enableImageLazyLoading = true
|
||||||
|
enableImageWebp = true
|
||||||
|
|
||||||
# robots = ""
|
# robots = ""
|
||||||
fingerprintAlgorithm = "sha256"
|
fingerprintAlgorithm = "sha256"
|
||||||
|
|
|
@ -60,6 +60,7 @@ jobs:
|
||||||
uses: peaceiris/actions-hugo@v2
|
uses: peaceiris/actions-hugo@v2
|
||||||
with:
|
with:
|
||||||
hugo-version: "latest"
|
hugo-version: "latest"
|
||||||
|
extended: true
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: hugo --minify
|
run: hugo --minify
|
||||||
|
|
|
@ -21,7 +21,7 @@ These instructions will get you up and running using Hugo and Congo from a compl
|
||||||
If you haven't used Hugo before, you will need to [install it onto your local machine](https://gohugo.io/getting-started/installing). You can check if it's already installed by running the command `hugo version`.
|
If you haven't used Hugo before, you will need to [install it onto your local machine](https://gohugo.io/getting-started/installing). You can check if it's already installed by running the command `hugo version`.
|
||||||
|
|
||||||
{{< alert >}}
|
{{< alert >}}
|
||||||
Make sure you are using **Hugo version 0.87.0** or later as the theme takes advantage of some of the latest Hugo features.
|
Make sure you are using **Hugo extended version 0.87.0** or later as the theme takes advantage of some of the latest Hugo features.
|
||||||
{{< /alert >}}
|
{{< /alert >}}
|
||||||
|
|
||||||
You can find detailed installation instructions for your platform in the [Hugo docs](https://gohugo.io/getting-started/installing).
|
You can find detailed installation instructions for your platform in the [Hugo docs](https://gohugo.io/getting-started/installing).
|
||||||
|
|
|
@ -1,64 +1,28 @@
|
||||||
{{ $url := urls.Parse .Destination }}
|
{{ $url := urls.Parse .Destination }}
|
||||||
{{ $altText := .Text }}
|
{{ $altText := .Text }}
|
||||||
{{ $caption := .Title }}
|
{{ $caption := .Title }}
|
||||||
{{ $lazyLoad := $.Page.Site.Params.enableImageLazyLoading | default true }}
|
{{ $class := "mx-auto my-0 rounded-md" }}
|
||||||
{{ if findRE "^https?" $url.Scheme }}
|
|
||||||
<figure>
|
{{ $file := $url.Path }}
|
||||||
<img
|
{{ $img := .Page.Resources.GetMatch $file }}
|
||||||
class="mx-auto my-0 rounded-md"
|
{{- if and (not $img) .Page.File }}
|
||||||
src="{{ $url.String }}"
|
{{ $path := path.Join .Page.File.Dir $file }}
|
||||||
alt="{{ $altText }}"
|
{{ $img = resources.Get $path }}
|
||||||
{{ if $lazyLoad }}
|
{{ end -}}
|
||||||
loading="lazy"
|
|
||||||
{{ end }}
|
{{/* https://github.com/gohugoio/hugo/pull/10666 */}}
|
||||||
/>
|
{{- $params := $url.Query -}}
|
||||||
|
{{- $x2Param := $params.Get "2x" -}}
|
||||||
|
{{- $x2 := false -}}
|
||||||
|
{{- if eq $x2Param "true" -}}
|
||||||
|
{{- $x2 = true -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<figure>
|
||||||
|
{{- with $img -}}
|
||||||
|
{{ partial "picture.html" (dict "img" . "alt" $altText "class" $class "x2" $x2) }}
|
||||||
|
{{- else -}}
|
||||||
|
<img src="{{ .Destination | safeURL }}" alt="{{ $altText }}" class="{{ $class }}"/>
|
||||||
|
{{- end -}}
|
||||||
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
||||||
</figure>
|
</figure>
|
||||||
{{ else }}
|
|
||||||
{{ $resource := "" }}
|
|
||||||
{{ if $.Page.Resources.GetMatch ($url.String) }}
|
|
||||||
{{ $resource = $.Page.Resources.GetMatch ($url.String) }}
|
|
||||||
{{ else if resources.GetMatch ($url.String) }}
|
|
||||||
{{ $resource = resources.Get ($url.String) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ with $resource }}
|
|
||||||
<figure>
|
|
||||||
<img
|
|
||||||
class="mx-auto my-0 rounded-md"
|
|
||||||
{{ if eq .MediaType.SubType "svg" }}
|
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
width="{{ .Width }}"
|
|
||||||
height="{{ .Height }}"
|
|
||||||
{{ if lt .Width 660 }}
|
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
srcset="
|
|
||||||
{{- (.Resize "330x").RelPermalink }} 330w,
|
|
||||||
{{- (.Resize "660x").RelPermalink }} 660w,
|
|
||||||
{{- (.Resize "1024x").RelPermalink }} 1024w,
|
|
||||||
{{- (.Resize "1320x").RelPermalink }} 2x"
|
|
||||||
src="{{ (.Resize "660x").RelPermalink }}"
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
alt="{{ $altText }}"
|
|
||||||
{{ if $lazyLoad }}
|
|
||||||
loading="lazy"
|
|
||||||
{{ end }}
|
|
||||||
/>
|
|
||||||
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
|
||||||
</figure>
|
|
||||||
{{ else }}
|
|
||||||
<figure>
|
|
||||||
<img
|
|
||||||
class="mx-auto my-0 rounded-md"
|
|
||||||
src="{{ $url.String }}"
|
|
||||||
alt="{{ $altText }}"
|
|
||||||
{{ if $lazyLoad }}
|
|
||||||
loading="lazy"
|
|
||||||
{{ end }}
|
|
||||||
/>
|
|
||||||
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
|
||||||
</figure>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
|
@ -15,25 +15,9 @@
|
||||||
</div>
|
</div>
|
||||||
{{ with $feature }}
|
{{ with $feature }}
|
||||||
<div class="prose">
|
<div class="prose">
|
||||||
<img
|
{{ $altText := $.Params.featureAlt | default $.Params.coverAlt | default "" }}
|
||||||
class="mb-6 -mt-4 rounded-md"
|
{{ $class := "mb-6 -mt-4 rounded-md" }}
|
||||||
{{ if eq .MediaType.SubType "svg" }}
|
{{ partial "picture.html" (dict "img" . "alt" $altText "class" $class "lazy" false) }}
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
width="{{ .Width }}"
|
|
||||||
height="{{ .Height }}"
|
|
||||||
{{ if lt .Width 660 }}
|
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
srcset="
|
|
||||||
{{- (.Resize "330x").RelPermalink }} 330w,
|
|
||||||
{{- (.Resize "660x").RelPermalink }} 660w,
|
|
||||||
{{- (.Resize "1024x").RelPermalink }} 1024w,
|
|
||||||
{{- (.Resize "1320x").RelPermalink }} 2x"
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
alt="{{ $.Params.featureAlt | default $.Params.coverAlt | default "" }}"
|
|
||||||
/>
|
|
||||||
{{ with $.Params.coverCaption }}
|
{{ with $.Params.coverCaption }}
|
||||||
<figcaption class="mb-6 -mt-3 text-center">{{ . | markdownify }}</figcaption>
|
<figcaption class="mb-6 -mt-3 text-center">{{ . | markdownify }}</figcaption>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -0,0 +1,112 @@
|
||||||
|
{{ $img := .img }}
|
||||||
|
{{ $alt := .alt }}
|
||||||
|
{{ $class := .class }}
|
||||||
|
{{ $lazy := .lazy | default $.Page.Site.Params.enableImageLazyLoading | default true }}
|
||||||
|
{{ $webp := .webp | default $.Page.Site.Params.enableImageWebp | default true }}
|
||||||
|
{{ $lqip := .lqip | default false }}
|
||||||
|
{{ $x2 := .x2 | default false }}
|
||||||
|
|
||||||
|
{{ with $img }}
|
||||||
|
{{ if (eq .MediaType.SubType "svg") }}
|
||||||
|
{{ $width := ""}}
|
||||||
|
{{ $height := ""}}
|
||||||
|
{{ $svgContent := .Content }}
|
||||||
|
{{ range (findRESubmatch `<svg[^>]*width=["']([.0-9]*)["'a-zA-Z]` $svgContent 1) }}
|
||||||
|
{{ $width = index . 1 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range (findRESubmatch `<svg[^>]*height=["']([.0-9]*)["'a-zA-Z]` $svgContent 1) }}
|
||||||
|
{{ $height = index . 1 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if (eq "" $width $height) }}
|
||||||
|
{{ range (findRESubmatch `<svg[^>]*viewBox=["']?([.0-9]*) ([.0-9]*) ([.0-9]*) ([.0-9]*)` $svgContent 1) }}
|
||||||
|
{{ $width = index . 3 }}
|
||||||
|
{{ $height = index . 4 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if (eq "" $width $height) }}
|
||||||
|
{{ warnf "Can't detect width and height for SVG %s" .RelPermalink }}
|
||||||
|
{{/* do not use lazy without dimensions */}}
|
||||||
|
{{ $lazy = false }}
|
||||||
|
{{ end }}
|
||||||
|
<picture {{ with $class }} class="{{ . }}" {{ end }}>
|
||||||
|
<img
|
||||||
|
src="{{ .RelPermalink }}"
|
||||||
|
{{ with $width }} width="{{ . }}" {{ end }}
|
||||||
|
{{ with $height }} height="{{ . }}" {{ end }}
|
||||||
|
{{ with $class }} class="{{ . }}" {{ end }}
|
||||||
|
{{ with $alt }} alt="{{ . }}" {{ end }}
|
||||||
|
{{ with $lazy }} loading="lazy" decoding="async" {{ end }}
|
||||||
|
>
|
||||||
|
</picture>
|
||||||
|
{{ else }}
|
||||||
|
<picture
|
||||||
|
{{ with $class }} class="{{ . }}" {{ end }}
|
||||||
|
{{ if $lqip }}
|
||||||
|
{{ $bg := (.Resize "20x webp q20").Content | base64Encode }}
|
||||||
|
style="background-image:url(data:image/webp;base64,{{ $bg }});background-size:cover"
|
||||||
|
{{ end }}
|
||||||
|
>
|
||||||
|
{{ $width := .Width }}
|
||||||
|
{{ $height := .Height }}
|
||||||
|
{{ if $x2 }}
|
||||||
|
{{ $width = div .Width 2 }}
|
||||||
|
{{ $height = div .Height 2 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if $webp }}
|
||||||
|
<source
|
||||||
|
{{ if lt .Width 660 }}
|
||||||
|
{{ with .Resize (printf "%dx%d webp" .Width .Height) }}
|
||||||
|
src="{{ .RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
srcset="
|
||||||
|
{{- (.Resize "330x webp").RelPermalink }} 330w,
|
||||||
|
{{- (.Resize "660x webp").RelPermalink }} 660w
|
||||||
|
{{ if gt .Width 1024 }}
|
||||||
|
,{{ (.Resize "1024x webp").RelPermalink }} 1024w
|
||||||
|
{{ else }}
|
||||||
|
{{ with .Resize (printf "%dx%d webp" .Width .Height) }}
|
||||||
|
,{{ .RelPermalink }} {{ .Width }}w
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if gt .Width 1320 }}
|
||||||
|
,{{ (.Resize "1320x webp").RelPermalink }} 2x
|
||||||
|
{{ else }}
|
||||||
|
{{ with .Resize (printf "%dx%d webp" .Width .Height) }}
|
||||||
|
,{{ .RelPermalink }} {{ .Width }}w
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}"
|
||||||
|
src="{{ (.Resize "660x webp").RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
type="image/webp"
|
||||||
|
/>
|
||||||
|
{{ end }}
|
||||||
|
<img
|
||||||
|
src="{{ .RelPermalink }}"
|
||||||
|
width="{{ $width }}"
|
||||||
|
height="{{ $height }}"
|
||||||
|
{{ with $class }} class="{{ . }}" {{ end }}
|
||||||
|
{{ with $alt }} alt="{{ . }}" {{ end }}
|
||||||
|
{{ with $lazy }} loading="lazy" decoding="async" {{ end }}
|
||||||
|
{{ if lt .Width 660 }}
|
||||||
|
src="{{ .RelPermalink }}"
|
||||||
|
{{ else }}
|
||||||
|
srcset="
|
||||||
|
{{- (.Resize "330x").RelPermalink }} 330w,
|
||||||
|
{{- (.Resize "660x").RelPermalink }} 660w
|
||||||
|
{{ if gt .Width 1024 }}
|
||||||
|
,{{ (.Resize "1024x").RelPermalink }} 1024w
|
||||||
|
{{ else }}
|
||||||
|
,{{ .RelPermalink }} {{ .Width }}w
|
||||||
|
{{ end }}
|
||||||
|
{{ if gt .Width 1320 }}
|
||||||
|
,{{ (.Resize "1320x").RelPermalink }} 2x
|
||||||
|
{{ else }}
|
||||||
|
,{{ .RelPermalink }} {{ .Width }}w
|
||||||
|
{{ end }}"
|
||||||
|
src="{{ (.Resize "660x").RelPermalink }}"
|
||||||
|
{{ end }}
|
||||||
|
>
|
||||||
|
</picture>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
|
@ -6,45 +6,23 @@
|
||||||
{{ $caption := .Get "caption" }}
|
{{ $caption := .Get "caption" }}
|
||||||
{{ $href := .Get "href" }}
|
{{ $href := .Get "href" }}
|
||||||
{{ $class := .Get "class" }}
|
{{ $class := .Get "class" }}
|
||||||
|
|
||||||
|
{{ $file := $url.Path }}
|
||||||
|
{{ $img := .Page.Resources.GetMatch $file }}
|
||||||
|
{{- if and (not $img) .Page.File }}
|
||||||
|
{{ $path := path.Join .Page.File.Dir $file }}
|
||||||
|
{{ $img = resources.Get $path }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
<figure{{ with $class }} class="{{ . }}"{{ end }}>
|
<figure{{ with $class }} class="{{ . }}"{{ end }}>
|
||||||
{{ with $href }}<a href="{{ . }}">{{ end }}
|
{{ with $href }}<a href="{{ . }}">{{ end }}
|
||||||
<img
|
|
||||||
class="mx-auto my-0 rounded-md"
|
{{- with $img -}}
|
||||||
alt="{{ $altText }}"
|
{{ partial "picture.html" (dict "img" . "alt" $altText "class" $class) }}
|
||||||
{{ if .Site.Params.enableImageLazyLoading | default true }}
|
{{- else -}}
|
||||||
loading="lazy"
|
<img src="{{ $url.String }}" alt="{{ $altText }}" class="{{ $class }}"/>
|
||||||
{{ end }}
|
{{- end -}}
|
||||||
{{ if findRE "^https?" $url.Scheme }}
|
|
||||||
src="{{ $url.String }}"
|
|
||||||
{{ else }}
|
|
||||||
{{ $resource := "" }}
|
|
||||||
{{ if $.Page.Resources.GetMatch ($url.String) }}
|
|
||||||
{{ $resource = $.Page.Resources.GetMatch ($url.String) }}
|
|
||||||
{{ else if resources.GetMatch ($url.String) }}
|
|
||||||
{{ $resource = resources.Get ($url.String) }}
|
|
||||||
{{ end }}
|
|
||||||
{{ with $resource }}
|
|
||||||
{{ if eq .MediaType.SubType "svg" }}
|
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
width="{{ .Width }}"
|
|
||||||
height="{{ .Height }}"
|
|
||||||
{{ if lt .Width 660 }}
|
|
||||||
src="{{ .RelPermalink }}"
|
|
||||||
{{ else }}
|
|
||||||
srcset="
|
|
||||||
{{- (.Resize "330x").RelPermalink }} 330w,
|
|
||||||
{{- (.Resize "660x").RelPermalink }} 660w,
|
|
||||||
{{- (.Resize "1024x").RelPermalink }} 1024w,
|
|
||||||
{{- (.Resize "1320x").RelPermalink }} 2x"
|
|
||||||
src="{{ (.Resize "660x").RelPermalink }}"
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
|
||||||
src="{{ $url.String }}"
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
/>
|
|
||||||
{{ with $href }}</a>{{ end }}
|
{{ with $href }}</a>{{ end }}
|
||||||
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
|
||||||
</figure>
|
</figure>
|
||||||
|
|
|
@ -4,17 +4,16 @@
|
||||||
{{- if .Get "href" -}}
|
{{- if .Get "href" -}}
|
||||||
<a href="{{ .Get "href" }}">
|
<a href="{{ .Get "href" }}">
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<img src="{{ $image.RelPermalink }}"
|
|
||||||
{{- if or (.Get "alt") (.Get "caption") }}
|
{{ $altText := "" }}
|
||||||
alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" | markdownify | plainify }}{{ end }}"
|
{{ with .Get "alt" }}
|
||||||
{{- end -}}
|
{{ $altText = . }}
|
||||||
{{ if .Site.Params.enableImageLazyLoading | default true }}
|
{{ else }}
|
||||||
loading="lazy"
|
{{ $altText = (.Get "caption") | markdownify | plainify }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
width="100%"
|
|
||||||
height="auto"
|
{{ partial "picture.html" (dict "img" $image "alt" $altText "x2" true) }}
|
||||||
style="max-width:{{ div $image.Width 2 }}px; max-height:{{ div $image.Height 2 }}px;"
|
|
||||||
/>
|
|
||||||
{{- if .Get "href" }}</a>{{ end -}}
|
{{- if .Get "href" }}</a>{{ end -}}
|
||||||
{{- if .Get "caption" -}}
|
{{- if .Get "caption" -}}
|
||||||
<figcaption>
|
<figcaption>
|
||||||
|
|
Loading…
Reference in New Issue