Compare commits
No commits in common. "ac03834fbb987b202eb5486187ee844bb370378e" and "d7d6b817bdd7c46d0631753283bf710ee4daab85" have entirely different histories.
ac03834fbb
...
d7d6b817bd
12 changed files with 135 additions and 201 deletions
111
README.md
111
README.md
|
@ -1,26 +1,16 @@
|
|||
# hermit-V2 -: The Minimal Hugo Theme
|
||||
# Hugo theme Hermit - V2
|
||||
|
||||
> OG : [Hermit Theme](https://github.com/Track3/hermit) by [Track3](https://github.com/Track3)
|
||||
Initially, when I started my Blog journey, I was enthralled by this very theme and I am using it since. However, original developer has ceased maintaining the theme and it is riddled with many bugs. Hence, I have taken upon myself to maintain this theme.
|
||||
|
||||
Hermit-V2 is a minimal and fast theme for Hugo, built for bloggers who want a simple and focused website. This is a maintained fork of [Hermit](https://github.com/Track3/hermit), which iterates over the original work to have a almost-stable experience with bug fixes and new features.
|
||||
I fully intend to keep the essence of the theme as-it-is and only add minor updates and squash bugs which may arise.
|
||||
|
||||
![](https://github.com/1bl4z3r/hermit-V2/blob/main/images/screenshot.png)
|
||||
> Let's make __Hermit__ great again
|
||||
|
||||
### History
|
||||
DEMO : [Hermit-V2](https://1bl4z3r.github.io/hermit-V2/)
|
||||
|
||||
When I had switched from jekyll to Hugo, I was in a need of a theme. I was enthralled by this very theme and I am using it since in my own personal blog. However, it looks like [OP]((https://github.com/Track3)) has stopped maintaining this theme and as a result, it is riddled with bugs and code breaks. Hence, I have taken upon myself to maintain this theme. Intention of this project is to keep the essence of the theme as-it-is and only add minor updates and squash bugs which may arise.
|
||||
GoHugo Theme Page : [https://themes.gohugo.io/themes/hermit-v2/](https://themes.gohugo.io/themes/hermit-v2/)
|
||||
|
||||
> GoHugo Theme Page : [https://themes.gohugo.io/themes/hermit-v2/](https://themes.gohugo.io/themes/hermit-v2/)
|
||||
|
||||
## Demo
|
||||
|
||||
Demo page [https://1bl4z3r.github.io/hermit-V2](https://1bl4z3r.github.io/hermit-V2), which is both demo as well as documentation for the theme, is located in [Staging Branch](https://github.com/1bl4z3r/hermit-V2/tree/staging)
|
||||
|
||||
## Configuration Guide
|
||||
|
||||
Configuration Guide is present in [Explaining Configs](https://1bl4z3r.github.io/hermit-V2/en/posts/explaining-configs/)
|
||||
|
||||
## Installation
|
||||
### Installation
|
||||
|
||||
Run this command from the root of your Hugo directory:
|
||||
|
||||
|
@ -34,9 +24,36 @@ Or, if your Hugo site is already in git, you can include this repository as a [g
|
|||
git submodule add https://github.com/1bl4z3r/hermit-V2 themes/hermit-v2
|
||||
```
|
||||
|
||||
## GOOD-TO-KNOW LIST
|
||||
### Custom CSS and JS
|
||||
|
||||
### Features Inherited from Original Theme
|
||||
I have found that there are some requirement where custom CSS and JS should be supplied to a page to make it work. This custom files are not required for whole of the site, but is restricted to a page or few particular pages. E.g. If you make contact form.
|
||||
|
||||
To provision for the same, I have added custom css and js. Please add this to page frontmatter as required.
|
||||
|
||||
```
|
||||
custom_css = ["css/foo.css","css/bar.css"]
|
||||
custom_js = ["js/custom-about.js"]
|
||||
```
|
||||
|
||||
The files itself will reside in `static/css` for CSS files and `static/js` for JS files. Refer to [Staging Branch](https://github.com/1bl4z3r/hermit-V2/tree/staging) to have a feel on how [this](https://github.com/1bl4z3r/hermit-V2/blob/staging/content/about-hugo.md) is implemented.
|
||||
|
||||
### Demo
|
||||
|
||||
Demo page [https://1bl4z3r.github.io/hermit-V2/](https://1bl4z3r.github.io/hermit-V2/), which is both demo as well as documentation for the theme, is located in [Staging Branch](https://github.com/1bl4z3r/hermit-V2/tree/staging)
|
||||
|
||||
### Configuration Guide
|
||||
|
||||
Configuration Guide is present in [Explaining Configs](https://1bl4z3r.github.io/hermit-V2/en/posts/explaining-configs/)
|
||||
|
||||
---
|
||||
|
||||
# Original README
|
||||
|
||||
Hermit is a minimal and fast theme for Hugo. It's built for bloggers who want a simple and focused website.
|
||||
|
||||
![](https://github.com/1bl4z3r/hermit-V2/blob/main/images/screenshot.png)
|
||||
|
||||
## Features
|
||||
|
||||
* A single-column layout and carefully crafted typography offers a great reading experience.
|
||||
* Navigations and functions are placed in the bottom bar which will hide when you scroll down.
|
||||
|
@ -48,24 +65,31 @@ git submodule add https://github.com/1bl4z3r/hermit-V2 themes/hermit-v2
|
|||
|
||||
![](https://github.com/1bl4z3r/hermit-V2/blob/main/images/hermit.png)
|
||||
|
||||
## Getting started
|
||||
|
||||
### Installation
|
||||
|
||||
Run this command from the root of your Hugo directory:
|
||||
|
||||
```bash
|
||||
$ git clone https://github.com/Track3/hermit.git themes/hermit
|
||||
```
|
||||
|
||||
Or, if your Hugo site is already in git, you can include this repository as a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules). This makes it easier to update this theme. For this you need to run:
|
||||
|
||||
```bash
|
||||
$ git submodule add https://github.com/Track3/hermit.git themes/hermit
|
||||
```
|
||||
|
||||
Alternatively, if you are not familiar with git, you can download the theme as a `.zip` file, unzip the theme contents, and then move the unzipped source into your `themes` directory.
|
||||
|
||||
For more information, read the official [documentation](https://gohugo.io/themes/installing-and-using-themes/) of Hugo.
|
||||
|
||||
### Configuration
|
||||
|
||||
Site Configuration is done through `hugo.toml` or `hugo.yaml` file in root directory of your Hugo Site. To aid you, there is a [hugo.toml.example](https://github.com/1bl4z3r/hermit-V2/blob/main/hugo.toml.example) file located in theme folder. See this configuration in action [here](https://github.com/1bl4z3r/hermit-V2/blob/staging/hugo.toml). See what each configuration does [here](https://1bl4z3r.github.io/hermit-V2/en/posts/explaining-configs/#configuation-in-hugotoml).
|
||||
The example config file can be found in the theme's `exampleSite` folder. You can just copy the `config.toml` to the root directory of your Hugo site. There are instructions in the example config file, feel free to change strings as you like to customize your website.
|
||||
|
||||
### Custom CSS and JS
|
||||
|
||||
I have found that there are some requirement where custom CSS and JS should be supplied to a page to make it work. This custom files are not required for whole of the site, but is restricted to a page or few particular pages. E.g. If you make contact form.
|
||||
|
||||
To make use of custom CSS and JS, add the below section to page frontmatter. If there is any folder structure, that should be mentioned as well.
|
||||
|
||||
```
|
||||
custom_css = ["custom_css/foo.css","custom_css/bar.css"]
|
||||
custom_js = ["custom_js/custom-about.js"]
|
||||
```
|
||||
|
||||
The files itself will reside in `assets` directory. Refer to [Staging Branch](https://github.com/1bl4z3r/hermit-V2/tree/staging) to have a feel on how [this](https://github.com/1bl4z3r/hermit-V2/blob/staging/content/about-hugo.md) is implemented.
|
||||
|
||||
### Favicon
|
||||
#### Favicon
|
||||
|
||||
Use [RealFaviconGenerator](https://realfavicongenerator.net/) to generate these files, put them into your site's `static` folder:
|
||||
|
||||
|
@ -79,7 +103,7 @@ Use [RealFaviconGenerator](https://realfavicongenerator.net/) to generate these
|
|||
* safari-pinned-tab.svg
|
||||
* site.webmanifest
|
||||
|
||||
### Social icons
|
||||
#### Social icons
|
||||
|
||||
The following icons are supported, please make sure the `name` filed is exactly one of these:
|
||||
|
||||
|
@ -99,24 +123,26 @@ If that's not enough, you can see [Overriding templates](#overriding-templates)
|
|||
* Keep your regular pages in the `content` folder. To create a new page, run `hugo new page-title.md`
|
||||
* Keep your blog posts in the `content/posts` folder. To create a new post, run `hugo new posts/post-title.md`
|
||||
|
||||
### Overriding templates
|
||||
### More customizations
|
||||
|
||||
#### Overriding templates
|
||||
|
||||
In Hugo, layouts can live in either the project’s (root) or the themes’ layout folders, any template inside the root layout folder will override theme's layout that relative to it, for example: `layouts/_default/baseof.html` will override `themes/hermit/layouts/_default/baseof.html`. So, you can easily customize the theme without edit it directly, which makes updating the theme easier. Here's some common customizations:
|
||||
|
||||
### Customize social icons
|
||||
##### Customize social icons
|
||||
You can modify or add any svg icons in site's `layouts/partials/svg.html`.
|
||||
|
||||
### Customize comment system
|
||||
##### Customize comment system
|
||||
We only have built-in support for Disqus at the moment, if that doesn't fit your needs, you can just add html to site's `layouts/partials/comments.html`.
|
||||
|
||||
### Add custom analytics
|
||||
##### Add custom analytics
|
||||
If you prefer to use different analytics system other than google analytics, then add them inside `layouts/partials/analytics.html`.
|
||||
|
||||
### Customize CSS
|
||||
#### Customize CSS
|
||||
|
||||
If you'd like to customize theme color or fonts, you can simply override `assets/scss/_predefined.scss`, by simply copy it to site's root (keep the same relative path) then edit those variables. But keep in mind, you'll need **Hugo extended version** which has the ability to rebuild SCSS. You don't have to use extended version in production but in this case it's necessary to make sure the `resources` folder is committed and "up to date" (by running `hugo` or `hugo server` locally using the extended version). But anyway, always use the extended version if you can.
|
||||
|
||||
### Code injection
|
||||
#### Code injection
|
||||
|
||||
You can inject any html code to every page's document head or right above the closing body tag. This makes it easier to add any html meta data, custom css/js, dns-prefetch etc. To do this you simply need to create a file at site's `layouts/partials/extra-head.html` or `layouts/partials/extra-foot.html`, code inside will be injected to every page.
|
||||
|
||||
|
@ -126,4 +152,5 @@ You can inject any html code to every page's document head or right above the cl
|
|||
* [animate.css](https://daneden.github.io/animate.css/) - [MIT](https://github.com/daneden/animate.css/blob/master/LICENSE)
|
||||
* [feather](https://feathericons.com/) - [MIT](https://github.com/feathericons/feather/blob/master/LICENSE)
|
||||
* [code-copy.js](assets/js/code-copy.js) - [Tom Spencer](https://www.fiznool.com/blog/2018/09/14/adding-click-to-copy-buttons-to-a-hugo-powered-blog/)
|
||||
* [Everyone, who has submitted a PR](https://github.com/1bl4z3r/hermit-V2/pulls?q=is%3Apr+is%3Aclosed)
|
||||
|
||||
Thanks!
|
||||
|
|
|
@ -920,7 +920,7 @@ a.footnote-ref {
|
|||
white-space: nowrap; /* Keeps the content on a single line */
|
||||
margin: 0 auto 1.5em auto; /* Gives that scrolling effect as the typing happens */
|
||||
// letter-spacing: .100em; /* Adjust as needed */
|
||||
animation: typing 5s steps({{ strings.RuneCount .Site.Params.homeSubtitle }}, end),blink-caret .75s linear 5.1s infinite;
|
||||
animation: typing 5s steps({{ strings.RuneCount .Site.Params.homeSubtitle }}, end),blink-caret .75s step-end infinite;
|
||||
}
|
||||
|
||||
/* The typing effect */
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
baseURL = "CHANGE BASE URL"
|
||||
defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = true
|
||||
#theme = "hermit-v2"
|
||||
|
||||
#[languages]
|
||||
# [languages.en]
|
||||
|
@ -83,8 +82,7 @@ enableEmoji = true
|
|||
readTimeSeparator = "CHANGE ME READ TIME"
|
||||
# legacyLayout = false
|
||||
shareSocial = true
|
||||
# googleTagManager = "GTM-XXXXXXXX"
|
||||
|
||||
|
||||
[[params.socialLinks]]
|
||||
name = "mastodon"
|
||||
url = "https://joinmastodon.org/"
|
||||
|
|
|
@ -1,55 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{.Site.LanguageCode}}">
|
||||
<head>
|
||||
{{- if .Site.Params.googleTagManager -}}{{- partial "googleTagManager_head.html" . -}}{{- end -}}
|
||||
{{- partial "analytics.html" . -}}
|
||||
{{- partial "site-meta.html" -}}
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="revisit-after" content="15 days">
|
||||
{{ $author := (.Params.author | default .Site.Params.author.name) -}}
|
||||
<meta name="author" content="{{ $author }}">
|
||||
{{ with .Site.Params.themeColor -}}
|
||||
<meta name="theme-color" content="{{.}}">
|
||||
<meta name="msapplication-TileColor" content="{{.}}">
|
||||
<link rel="mask-icon" href="{{"safari-pinned-tab.svg" | relURL}}" color="{{.}}">
|
||||
{{- end -}}
|
||||
{{- with .Page.Params.description | default .Site.Params.description -}}<meta name="description" content="{{.}}">{{- end -}}
|
||||
{{- with .Params.description -}}<meta name="description" content="{{.}}">{{- end -}}
|
||||
{{- partial "structured-data.html" . -}}
|
||||
{{- partial "favicons.html" -}}
|
||||
<title>{{.Title}}</title>
|
||||
{{ range .AlternativeOutputFormats -}}
|
||||
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Title | safeHTML }}
|
||||
{{ end -}}
|
||||
{{ $style := resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "css/style.css" . | toCSS | minify | fingerprint -}}
|
||||
<link rel="stylesheet dns-prefetch preconnect preload prefetch" as="style" href="{{ $style.Permalink }}" {{ printf "integrity=%q" $style.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous">
|
||||
{{- range .Params.custom_css -}}
|
||||
{{ $c_css := resources.Get . | resources.ExecuteAsTemplate "css/style.css" . | toCSS | minify | fingerprint -}}
|
||||
<link rel="stylesheet preload prefetch" as="style" href="{{ $c_css.Permalink }}" {{ printf "integrity=%q" $c_css.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous">
|
||||
{{- end -}}
|
||||
<link rel="stylesheet" href="{{ $style.Permalink }}" {{ printf "integrity=%q" $style.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous">
|
||||
{{- range .Params.custom_css -}}<link rel="stylesheet" href="{{ . | absURL }}">{{- end -}}
|
||||
{{- block "head" . -}}{{- end -}}
|
||||
{{- if templates.Exists "partials/extra-head.html" -}}{{- partial "extra-head.html" . -}}{{- end -}}</head>
|
||||
<body id="page">
|
||||
{{- if .Site.Params.googleTagManager -}}{{- partial "googleTagManager_body.html" . -}}{{- end -}}
|
||||
{{- block "header" . -}}{{ end -}}
|
||||
{{- block "main" . -}}{{ end -}}
|
||||
{{- block "footer" . -}}{{ end }}
|
||||
{{- partial "scroll-to-top.html" . }}
|
||||
{{- $main := resources.Get "js/main.js" -}}
|
||||
{{- if .Site.Params.code_copy_button | default true -}}
|
||||
{{ $codeCopy := resources.Get "js/code-copy.js" -}}
|
||||
{{ $script := slice $main $codeCopy | resources.Concat "js/bundle.js" | minify | fingerprint -}}
|
||||
<script async src="{{ $script.Permalink }}" {{ printf "integrity=%q" $script.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- else -}}
|
||||
{{ $script := $main | minify | fingerprint -}}
|
||||
<script async src="{{ $script.Permalink }}" {{ printf "integrity=%q" $script.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- end -}}
|
||||
{{- if and (not (eq .Site.Params.shareSocial nil)) (.Site.Params.shareSocial) -}}
|
||||
{{ $linkshare := resources.Get "js/link-share.js" | minify | fingerprint -}}
|
||||
<script async src="{{ $linkshare.Permalink }}" {{ printf "integrity=%q" $linkshare.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- end -}}
|
||||
{{- range .Params.custom_js -}}
|
||||
{{ $c_js := resources.Get . | minify | fingerprint -}}
|
||||
<script defer src="{{ $c_js.Permalink }}" {{ printf "integrity=%q" $c_js.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- end }}
|
||||
{{- partial "mathjax.html" . -}}
|
||||
{{- if templates.Exists "partials/extra-foot.html" -}}{{- partial "extra-foot.html" . -}}{{- end }}
|
||||
{{- block "header" . -}}{{ end -}}
|
||||
{{- block "main" . -}}{{ end -}}
|
||||
{{- block "footer" . -}}{{ end }}
|
||||
{{- partial "scroll-to-top.html" . }}
|
||||
{{- $main := resources.Get "js/main.js" -}}
|
||||
{{- if .Site.Params.code_copy_button | default true -}}
|
||||
{{ $codeCopy := resources.Get "js/code-copy.js" -}}
|
||||
{{ $script := slice $main $codeCopy | resources.Concat "js/bundle.js" | minify | fingerprint -}}
|
||||
<script async src="{{ $script.Permalink }}" {{ printf "integrity=%q" $script.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- else -}}
|
||||
{{ $script := $main | minify | fingerprint -}}
|
||||
<script async src="{{ $script.Permalink }}" {{ printf "integrity=%q" $script.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- end -}}
|
||||
{{- if and (not (eq .Site.Params.shareSocial nil)) (.Site.Params.shareSocial) -}}
|
||||
{{ $linkshare := resources.Get "js/link-share.js" | minify | fingerprint -}}
|
||||
<script async src="{{ $linkshare.Permalink }}" {{ printf "integrity=%q" $linkshare.Data.Integrity | safeHTMLAttr }} crossorigin="anonymous"></script>
|
||||
{{- end -}}
|
||||
{{- range .Params.custom_js -}}<script type="text/javascript" src="{{ . | absURL }}"></script>{{- end }}
|
||||
{{- partial "mathjax.html" . -}}
|
||||
{{- if templates.Exists "partials/extra-foot.html" -}}{{- partial "extra-foot.html" . -}}{{- end }}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<main class="site-main section-inner thin animated fadeIn faster">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<div class="content">
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a>${3}` | safeHTML }}
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true">{{- partial "svg.html" (dict "context" . "name" "content-anchor") -}}</a>${3}` | safeHTML }}
|
||||
</div>
|
||||
{{- if .Params.comments }}
|
||||
<div id="comments" class="thin">
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ .Site.Params.googleTagManager }}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|
@ -1 +0,0 @@
|
|||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','{{ .Site.Params.googleTagManager }}');</script>
|
|
@ -1,5 +1,5 @@
|
|||
<p>
|
||||
© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Params.author.name }}</a> · {{ .Site.Params.footerCopyright | safeHTML }}
|
||||
© {{ now.Format "2006" }} <a href="{{ .Site.BaseURL }}">{{ .Site.Params.author.name }}</a> ·{{ .Site.Params.footerCopyright | safeHTML }}
|
||||
{{/*{{- with (not (in (.Site.Language.Get "disableKinds") "RSS")) }}*/}}
|
||||
· <a href="{{ "posts/index.xml" | absLangURL }}" target="_blank" title="rss">{{ partial "svg.html" (dict "context" . "name" "rss") }}</a>
|
||||
{{/*{{ end }}*/}}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="revisit-after" content="15 days">
|
||||
<link rel="author" href="{{"humans.txt" | relURL}}">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{"apple-touch-icon.png" | relURL}}">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{"favicon-32x32.png" | relURL}}">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{"favicon-16x16.png" | relURL}}">
|
||||
<link rel="manifest" href="{{"site.webmanifest" | relURL}}">
|
||||
<meta name="msapplication-TileImage" content="{{"mstile-144x144.png" | relURL}}">
|
||||
<link rel="shortcut icon" href="{{"favicon.ico" | relURL}}">
|
|
@ -24,7 +24,7 @@
|
|||
<h1>{{ .Title }}</h1>
|
||||
</header>
|
||||
<div class="content">
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a>${3}` | safeHTML }}
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true">{{- partial "svg.html" (dict "context" . "name" "content-anchor") -}}</a>${3}` | safeHTML }}
|
||||
</div>
|
||||
{{- if .Site.Params.relatedPosts }}
|
||||
{{- partial "related-posts.html" . -}}
|
||||
|
@ -41,7 +41,7 @@
|
|||
<div class="post-info">{{- partial "posts_single_info.html" . -}}</div>
|
||||
<hr class="post-end">
|
||||
<div class="content">
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a>${3}` | safeHTML }}
|
||||
{{ .Content | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true">{{- partial "svg.html" (dict "context" . "name" "content-anchor") -}}</a>${3}` | safeHTML }}
|
||||
</div>
|
||||
{{- if .Site.Params.relatedPosts }}
|
||||
{{- partial "related-posts.html" . -}}
|
||||
|
|
|
@ -1,103 +1,30 @@
|
|||
{{/* Extending upon [https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/shortcodes/figure.html] */}}
|
||||
{{/* Help from [https://discourse.gohugo.io/t/has-anyone-a-webp-shortcode/35391] */}}
|
||||
{{- $path := .Get "src" -}}
|
||||
{{- $link := .Get "link" -}}
|
||||
{{- $target := .Get "target" -}}
|
||||
{{- $rel := .Get "rel" -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $alt := .Get "alt" -}}
|
||||
{{- $attr := .Get "attr" -}}
|
||||
{{- $attrlink := .Get "attrlink" -}}
|
||||
{{- $title := .Get "title" -}}
|
||||
{{- $width := .Get "width" -}}
|
||||
{{- $height := .Get "height" -}}
|
||||
{{- $caption := .Get "caption" -}}
|
||||
{{- $loading := .Get "loading" -}}
|
||||
{{- $jpg := "" -}}
|
||||
{{- $webp := "" -}}
|
||||
{{- $fitOptionstojpg := printf "%vx%v jpg" $width $height -}}
|
||||
{{- $fitOptionstowebp := printf "%vx%v webp" $width $height -}}
|
||||
|
||||
{{- $msg1 := "The %q shortcode requires a parameter named %q. See %s" -}}
|
||||
{{- $msg2 := "The resource %q passed to the %q shortcode is not an image. See %s" -}}
|
||||
{{- $msg3 := "The resource %q passed to the %q shortcode could not be found. See %s" -}}
|
||||
|
||||
{{- if not (findRE `http[s]{0,1}://` $path 1) -}}
|
||||
|
||||
{{ if not $path }}
|
||||
{{ errorf $msg1 .Name "path" .Position }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
{{- with $i := resources.Get $path -}}
|
||||
{{- if eq $i.MediaType.MainType "image" -}}
|
||||
{{- if not $width -}}{{- $width = $i.Width -}}{{- end -}}
|
||||
{{- if not $height -}}{{- $height = $i.Height -}}{{- end -}}
|
||||
{{- if eq $i.MediaType "image/webp" -}}
|
||||
{{- $jpg = $i.Fit $fitOptionstojpg -}}
|
||||
{{- $webp = $i -}}
|
||||
{{- else if eq $i.MediaType "image/jpeg" -}}
|
||||
{{- $webp = $i.Fit $fitOptionstowebp -}}
|
||||
{{- $jpg = $i -}}
|
||||
{{- else -}}
|
||||
{{- $fitOptions := printf "%vx%v jpg" $width $height -}}{{- $jpg = $i.Fit $fitOptions -}}
|
||||
{{- $fitOptions = printf "%vx%v webp" $width $height -}}{{- $webp = $i.Fit $fitOptions -}}
|
||||
{{- end -}}
|
||||
|
||||
<figure{{ with $class }} class="{{ . }}" {{ end }}>
|
||||
{{- if $link -}}
|
||||
<a href="{{ $link }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>
|
||||
{{- end -}}
|
||||
<picture>
|
||||
<source srcset="{{ $webp.RelPermalink }}" type="image/webp">
|
||||
<source srcset="{{ $jpg.RelPermalink }}" type="image/jpeg">
|
||||
<img src="{{ $webp.RelPermalink }}"
|
||||
|
||||
{{- if or $alt $caption -}} alt="{{ with $alt }}{{ . }}{{ else }}{{ $caption | markdownify| plainify }}{{ end }}" {{- end -}}
|
||||
{{- with $jpg.Width }} width="{{ . }}" {{ end -}}
|
||||
{{- with $jpg.Height }} height="{{ . }}" {{ end -}}
|
||||
{{- with $loading }} loading="{{ . }}" {{ end -}} />
|
||||
</picture>
|
||||
{{- if $link }}</a>{{ end -}}
|
||||
{{- if or (or $title $caption) $attr -}}
|
||||
<figcaption>
|
||||
{{ with $title -}}<h4>{{ . }}</h4>{{- end -}}
|
||||
{{- if or $caption $attr -}}<p>
|
||||
{{- $caption | markdownify -}}
|
||||
{{- with $attrlink }}<a href="{{ . }}">{{- end -}}
|
||||
{{- $attr | markdownify -}}
|
||||
{{- if $attrlink }}</a>{{ end }}</p>
|
||||
<figure{{ with .Get "class" }} class="{{ . }}"{{ end }}>
|
||||
{{- if .Get "link" -}}
|
||||
<a href="{{ .Get "link" }}"{{ with .Get "target" }} target="{{ . }}"{{ end }}{{ with .Get "rel" }} rel="{{ . }}"{{ end }}>
|
||||
{{- end -}}
|
||||
<img src="{{ .Get "src" }}"
|
||||
{{- if or (.Get "alt") (.Get "caption") }}
|
||||
alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" | markdownify| plainify }}{{ end }}"
|
||||
{{- end -}}
|
||||
{{- with .Get "width" }} width="{{ . }}"{{ end -}}
|
||||
{{- with .Get "height" }} height="{{ . }}"{{ end -}}
|
||||
{{- with .Get "loading" }} loading="{{ . }}"{{ end -}}
|
||||
loading="lazy"
|
||||
/><!-- Closing img tag -->
|
||||
{{- if .Get "link" }}</a>{{ end -}}
|
||||
{{- if or (or (.Get "title") (.Get "caption")) (.Get "attr") -}}
|
||||
<figcaption>
|
||||
{{ with (.Get "title") -}}
|
||||
<h4>{{ . }}</h4>
|
||||
{{- end -}}
|
||||
{{- if or (.Get "caption") (.Get "attr") -}}<p>
|
||||
{{- .Get "caption" | markdownify -}}
|
||||
{{- with .Get "attrlink" }}
|
||||
<a href="{{ . }}">
|
||||
{{- end -}}
|
||||
{{- .Get "attr" | markdownify -}}
|
||||
{{- if .Get "attrlink" }}</a>{{ end }}</p>
|
||||
{{- end }}
|
||||
</figcaption>
|
||||
{{- end -}}
|
||||
</figure>
|
||||
{{- else -}}
|
||||
{{- errorf $msg2 $path $.Name $.Position -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- errorf $msg3 $path .Name .Position -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- else -}}
|
||||
<figure{{ with $class }} class="{{ . }}" {{ end }}>
|
||||
{{- if $link -}}<a href="{{ $link }}"{{ with $target }} target="{{ . }}"{{ end }}{{ with $rel }} rel="{{ . }}"{{ end }}>{{- end -}}
|
||||
<img src="{{ $path }}"
|
||||
{{- if or $alt $caption -}} alt="{{ with $alt }}{{ . }}{{ else }}{{ $caption | markdownify| plainify }}{{ end }}" {{- end -}}
|
||||
{{- with $width }} width="{{ . }}" {{ end -}}
|
||||
{{- with $height }} height="{{ . }}" {{ end -}}
|
||||
{{- with $loading }} loading="{{ . }}" {{ end -}} />
|
||||
{{- if $link }}</a>{{ end -}}
|
||||
{{- if or (or $title $caption) $attr -}}
|
||||
<figcaption>
|
||||
{{ with $title -}}<h4>{{ . }}</h4>{{- end -}}
|
||||
{{- if or $caption $attr -}}<p>
|
||||
{{- $caption | markdownify -}}
|
||||
{{- with $attrlink }}<a href="{{ . }}">{{- end -}}
|
||||
{{- $attr | markdownify -}}
|
||||
{{- if $attrlink }}</a>{{ end }}</p>
|
||||
{{- end }}
|
||||
</figcaption>
|
||||
{{- end -}}
|
||||
</figure>
|
||||
|
||||
{{- end -}}
|
||||
</figcaption>
|
||||
{{- end }}
|
||||
</figure>
|
||||
|
|
|
@ -4,7 +4,7 @@ licenselink = "https://github.com/1bl4z3r/hermit-V2/blob/main/LICENSE"
|
|||
description = "Continuing Hermit's legacy to be minimal and fast theme"
|
||||
homepage = "https://github.com/1bl4z3r/hermit-V2"
|
||||
demosite = "https://1bl4z3r.github.io/hermit-V2/"
|
||||
tags = ["blog", "minimal", "dark", "responsive", "landing", "dark mode"]
|
||||
tags = ["blog", "minimal", "dark", "responsive", "fast"]
|
||||
features = [
|
||||
"single column",
|
||||
"featured image",
|
||||
|
|
Loading…
Reference in a new issue