From efb650245f49585ddbb014e43916a2459b59eefb Mon Sep 17 00:00:00 2001 From: Vimux Date: Tue, 24 Sep 2019 10:50:06 -0400 Subject: [PATCH] Improve featured image (#17) WARNING: UPGRADE HUGO TO VERSION 0.54.0 OR LATER * post_thumbnail -> post_featured * Add url, alt, caption and credit params for featured * Add previewOnly param * Add styles for featured * Add fallback for thumbnail.* * Add "Featured Images" page * Show caption & credit on single pages only * Update README: add featured image guide * Bump Hugo min version because `reflect.IsMap` [0.38 -> 0.54.0] --- README.md | 32 +++++++- .../content/post/featured-images/featured.png | Bin 0 -> 27418 bytes .../content/post/featured-images/index.md | 72 ++++++++++++++++++ layouts/_default/single.html | 2 +- layouts/_default/summary.html | 2 +- layouts/partials/post_featured.html | 41 ++++++++++ layouts/partials/post_thumbnail.html | 13 ---- static/css/main.css | 22 +++++- theme.toml | 2 +- 9 files changed, 166 insertions(+), 20 deletions(-) create mode 100644 exampleSite/content/post/featured-images/featured.png create mode 100644 exampleSite/content/post/featured-images/index.md create mode 100644 layouts/partials/post_featured.html delete mode 100644 layouts/partials/post_thumbnail.html diff --git a/README.md b/README.md index 6205ad4..97a696d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ - [Post Meta](#post-meta) - [Related Content](#related-content) - [Share Buttons](#share-buttons) - - [Thumbnail Image](#thumbnail-image) + - [Featured Image](#featured-image) - [Footer Social Icons](#footer-social-icons) - [Web App Manifest](#web-app-manifest) - [Contributing](#contributing) @@ -154,6 +154,9 @@ googleAnalytics = "" # Enable Google Analytics by entering your tracking id mathjaxConfig = "TeX-AMS-MML_HTMLorMML" # Specify MathJax config. Optional hideNoPostsWarning = false # Don't show no posts empty state warning in main page, if true +[Params.Featured] + previewOnly = false # Show only preview featured image + [Params.Social] email = "example@example.com" facebook = "username" @@ -305,11 +308,34 @@ To display share buttons, set up `[Params.Share]` specific parameters in your si Available share buttons: Facebook, Twitter, Reddit, Telegram, LinkedIn, VK, Pocket, Pinterest -#### Thumbnail Image +#### Featured Image -You can add thumbnail image to your content page. Just put `thumbnail.*` image file in +There are two main different ways to add a featured image for a page. + +**Option 1.** Put `featured.*` or `thumbnail.*` image file in the [page bundle](https://gohugo.io/content-management/page-bundles/). +**Option 2.** Put any image in the page bundle & specify `featured` param in the page's front matter. + +You may put any image in the page bundle and specify `featured` param in the page's front matter: + +```yaml +featured: image.jpg +``` + +Or you can add some additional params like `alt`, `caption`, `credit` and `previewOnly`: + +```yaml +featured: + url: image.jpg + alt: A scale model of the Eiffel tower standing on a map + caption: Eiffel tower model + credit: Unknown author + previewOnly: false +``` + +**Note**: `caption` and `credit` appear only on single pages, not summaries. + #### Footer Social Icons With Binario, you have the option to display social icons in the footer. To display them, set up `[Params.Social]` diff --git a/exampleSite/content/post/featured-images/featured.png b/exampleSite/content/post/featured-images/featured.png new file mode 100644 index 0000000000000000000000000000000000000000..911eac6499a39f7b9671fed7eab7d3884e2cacc4 GIT binary patch literal 27418 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 literal 0 HcmV?d00001 diff --git a/exampleSite/content/post/featured-images/index.md b/exampleSite/content/post/featured-images/index.md new file mode 100644 index 0000000..ae5167a --- /dev/null +++ b/exampleSite/content/post/featured-images/index.md @@ -0,0 +1,72 @@ +--- +title: Featured Images +description: "In this page, we will explain what featured images are and show you some examples how to add a featured \ +image for a page." +date: 2019-09-12 +--- + +Featured image is the image that appears on summaries at the list pages and the top of content pages. Every content page +in this theme can have a featured image. + + + +## How to add a featured image + +Content pages in Hugo can have their images or any other files stored under the same directory of the page itself. +In Hugo's terms, it's called **page bundle** and allows us to keep all assets together with a page content file. + +This theme uses page bundles for featured images. There are two main different ways to add a featured image. + +### Option 1. Put `featured.*` or `thumbnail.*` image in the page bundle + +This theme considers `featured` or `thumbnail` image in any popular graphic format in the root of the page bundle as +a featured image. + +Directory structure of this page: + +``` +content +└── post + └── featured-images // single page folder (page bundle) + ├── featured.png // featured image + └── index.md // page content file +``` + +### Option 2. Put any image in the page bundle & specify `featured` param + +You may put any image in the page bundle and specify `featured` param in the page's front matter: + +```yaml +featured: image.jpg +``` + +- `featured` [`String`]: relative path of the image + +Or you can add some additional params like `alt`, `caption`, `credit` and `previewOnly`: + +```yaml +featured: + url: image.jpg + alt: A scale model of the Eiffel tower standing on a map + caption: Eiffel tower model + credit: Unknown author + previewOnly: false +``` + +- `featured` [`Map`]: + - `url` [`String`]: relative path of the image + - `alt` [`String`]: alternate text for the image + - `caption` [`String`]: image caption + - `credit` [`String`]: image credit + - `previewOnly` [`Boolean`]: show only preview image + +## FAQ + +**Q**: _What will happen if I specify `alt`, `caption`, `credit` params, but miss `url`? Featured image will be shown or +not?_\ +**A**: In that case, featured image would appear only if the page bundle contains `featured.*` or `thumbnail.*` image. +Otherwise, you'll get nothing. + +**Q**: _Is featured image path case sensitive or insensitive? Featured.png and featured.png are different image relative +paths for Hugo?_\ +**A**: The image matching is case-insensitive. In that case, Featured.png and featured.png are identical for Hugo. diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 0f77667..ea1c1bc 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -2,7 +2,7 @@
- {{- partial "post_thumbnail.html" (dict "page" .) }} + {{- partial "post_featured.html" (dict "page" . "IsSingle" true) }} {{- partial "post_meta.html" (dict "dot" . "class" "mb") }}

{{ .Title }}

{{- partial "post_toc.html" . }} diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html index 67b3ee5..30596e5 100644 --- a/layouts/_default/summary.html +++ b/layouts/_default/summary.html @@ -1,5 +1,5 @@
- {{- partial "post_thumbnail.html" (dict "page" . "link" .RelPermalink) }} + {{- partial "post_featured.html" (dict "page" . "link" .RelPermalink) }}

{{ .Title }}

{{- with .Summary }}
{{ . }}
diff --git a/layouts/partials/post_featured.html b/layouts/partials/post_featured.html new file mode 100644 index 0000000..e38966e --- /dev/null +++ b/layouts/partials/post_featured.html @@ -0,0 +1,41 @@ +{{- with .page.Resources.ByType "image" }} + {{- $link := $.link -}} + {{- $IsSingle := $.IsSingle -}} + {{- $match := $.page.Params.featured -}} + {{- $featuredMap := "" -}} + + {{- $IsMap := reflect.IsMap $match -}} + {{- if $IsMap }} + {{- $featuredMap = $match -}} + {{- $match = $match.url -}} + {{- end }} + + {{- $featured := .GetMatch ($match | default "{featured.*,thumbnail.*}") -}} + {{ if and $featured (not (and $IsSingle ($.page.Param "featured.previewOnly"))) }} +
+ {{- with $link }}{{ end }} + 
+					{{- with $featuredMap -}}
+						{{- .alt | default $featured.Title -}}
+					{{- else -}}
+						{{- $featured.Title -}}
+					{{- end -}}
+				+ {{- with $link }}{{ end }} + {{- with $IsSingle }} + {{- with $featuredMap }} + {{- if or .caption .credit }} + + {{- end }} + {{- end }} + {{- end }} +
+ {{- end }} +{{- end }} \ No newline at end of file diff --git a/layouts/partials/post_thumbnail.html b/layouts/partials/post_thumbnail.html deleted file mode 100644 index 36899bc..0000000 --- a/layouts/partials/post_thumbnail.html +++ /dev/null @@ -1,13 +0,0 @@ -{{- $img := (.page.Resources.ByType "image").GetMatch "thumbnail.*" }} -{{- $link := .link }} -{{- with $img }} -
- {{- with $link }} - - {{ $img.Title }} - - {{- else }} - {{ $img.Title }} - {{- end }} -
-{{- end }} \ No newline at end of file diff --git a/static/css/main.css b/static/css/main.css index b810b82..a91d5d0 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -699,8 +699,28 @@ button:not(:-moz-focusring):focus > .main-nav__btn-box { font-size: 1.25rem; } -.post__thumbnail { +.post__featured { + width: 100%; min-height: 1px; /* Workaround for IE11 flexbox img height issue https://github.com/philipwalton/flexbugs/issues/75 */ + text-align: center; + background-color: #1f1f1f; +} + +.featured__figcaption { + width: 100%; + padding: 1rem; + text-align: left; + background-color: #111; +} + +.featured__credit::before { + content: "© "; +} + +.featured__credit { + font-size: .875rem; + font-style: normal; + color: #888; } .post__content { diff --git a/theme.toml b/theme.toml index 555aef8..0c7a49f 100644 --- a/theme.toml +++ b/theme.toml @@ -5,7 +5,7 @@ description = "Responsive card-based & code-light Hugo theme" homepage = "https://github.com/vimux/binario/" tags = ["blog", "dark", "disqus", "google analytics", "responsive"] features = [] -min_version = "0.38" +min_version = "0.54.0" [author] name = "Vimux"