Compare commits
44 Commits
Author | SHA1 | Date |
---|---|---|
Alan Orth | a8ff91e1ea | |
Alan Orth | 31ee2abcad | |
Henrik Schack | 915caee6dd | |
Alan Orth | 08ae262312 | |
Alan Orth | b781125ed8 | |
Alan Orth | ddcae7c761 | |
Alan Orth | b415ee2879 | |
Alan Orth | 4260a7e1af | |
Alan Orth | a94ebccf3d | |
Alan Orth | 54d3242633 | |
Alan Orth | 1d4204a404 | |
Alan Orth | 985070b311 | |
Alan Orth | 2e40f6cd69 | |
Alan Orth | 99f1a6725c | |
Alan Orth | 898d91701a | |
Alan Orth | 40b3fb4979 | |
Alan Orth | 5797675dbd | |
Alan Orth | 8cdfeb297d | |
Alan Orth | 7a2ac26879 | |
Alan Orth | 72fe18fd4d | |
Alan Orth | 085cf9847f | |
Alan Orth | dbc97128f3 | |
Alan Orth | 5dd511963d | |
Alan Orth | d24e709cd3 | |
Alan Orth | 6c30836cc9 | |
Alan Orth | ddd2836905 | |
Alan Orth | f3a5cf6630 | |
Alan Orth | 1876747063 | |
Alan Orth | 96d6304f09 | |
Alan Orth | e0c8b5a057 | |
Alan Orth | d6ab3cda0a | |
Alan Orth | e1dfe242a6 | |
Alan Orth | bfac136c3e | |
Alan Orth | 4a922d8657 | |
Alan Orth | 94269648d6 | |
Alan Orth | 3fc531eb66 | |
Alan Orth | 82362818a1 | |
Alan Orth | 54f85c3beb | |
Alan Orth | c6498a4bfb | |
Alan Orth | 147ee8cf76 | |
Alan Orth | cb81c7818d | |
Alan Orth | 37e48b1e28 | |
Alan Orth | 39a9a8fd2a | |
Alan Orth | 64d62a9179 |
|
@ -1,6 +1,6 @@
|
|||
image: archlinux
|
||||
packages:
|
||||
- nodejs-lts-erbium
|
||||
- nodejs-lts-fermium
|
||||
- npm
|
||||
sources:
|
||||
- https://git.sr.ht/~alanorth/hugo-theme-bootstrap4-blog
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
kind: pipeline
|
||||
type: docker
|
||||
name: node14
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: node:14-alpine
|
||||
commands:
|
||||
- npm --version
|
||||
- npm install -g npm
|
||||
- npm --version
|
||||
- npm install
|
||||
- npm run build
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: node16
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: node:16-alpine
|
||||
commands:
|
||||
- npm --version
|
||||
- npm install -g npm
|
||||
- npm --version
|
||||
- npm install
|
||||
- npm run build
|
10
.travis.yml
10
.travis.yml
|
@ -1,10 +0,0 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- 10
|
||||
- 12
|
||||
- 13
|
||||
- 14
|
||||
script: npm run build
|
||||
dist: focal
|
||||
|
||||
# vim: ts=2 sw=2 et
|
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## Unreleased Changes
|
||||
### Updated
|
||||
- Bootstrap v4.6.0, webpack v5, haven 0.7.0, clean-css-cli, etc
|
||||
- Use Node.js 14 in CI, remove Node.js 12
|
||||
|
||||
## Added
|
||||
- Support for Bootstrap table classes (#145)
|
||||
- i18n language keys for Danish (@schack, #146)
|
||||
|
||||
## [[ 1.6.0 ]] - 2020-12-05
|
||||
### Changed
|
||||
- Migrate to dart sass from node-sass (see [LibSass is Deprecated](https://sass-lang.com/blog/libsass-is-deprecated))
|
||||
- Use new [figure shortcode](https://cpbotha.net/2020/05/02/drop-in-replacement-for-hugo-figure-shortcode-with-responsive-img-srcset/a) that automatically processes images in a post's page bundle to multiple resolutions and outputs an appropriate img srcset (falls back to getting images from static dir)
|
||||
|
||||
## [[1.5.1]] - 2020-11-15
|
||||
### Updated
|
||||
- Minor version bump for bootstrap, node-sass, and fontawesome
|
||||
|
@ -17,7 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [[1.5.0]] - 2020-05-17
|
||||
### Updated
|
||||
- i18n language keys for German (#dermellor, #131)
|
||||
- i18n language keys for German (@dermellor, #131)
|
||||
- Boostrap v4.5.0
|
||||
- Minor version bump for webpack, node-sass, and fontawesome
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Hugo Bootstrap v4 Blog [![Build Status](https://travis-ci.org/alanorth/hugo-theme-bootstrap4-blog.svg?branch=master)](https://travis-ci.org/alanorth/hugo-theme-bootstrap4-blog) [![builds.sr.ht status](https://builds.sr.ht/~alanorth/hugo-theme-bootstrap4-blog.svg)](https://builds.sr.ht/~alanorth/hugo-theme-bootstrap4-blog?)
|
||||
# Hugo Bootstrap v4 Blog [![Build Status](https://ci.mjanja.ch/api/badges/alanorth/hugo-theme-bootstrap4-blog/status.svg)](https://ci.mjanja.ch/alanorth/hugo-theme-bootstrap4-blog) [![builds.sr.ht status](https://builds.sr.ht/~alanorth/hugo-theme-bootstrap4-blog.svg)](https://builds.sr.ht/~alanorth/hugo-theme-bootstrap4-blog?)
|
||||
A simple but opinionated [Hugo](https://gohugo.io) theme geared towards blog-style content. Based on the older two-column [Bootstrap blog example](https://v4-alpha.getbootstrap.com/examples/blog/) that was used for several Bootstrap versions, but has now been retired in favor of a "snarky" (their words) new example as of version [4.0.0's final release](https://blog.getbootstrap.com/2018/01/18/bootstrap-4/).
|
||||
|
||||
![Screenshot](https://raw.githubusercontent.com/alanorth/hugo-theme-bootstrap4-blog/master/screenshot.png "Screenshot")
|
||||
|
@ -18,6 +18,7 @@ See [picturingjordan.com](https://picturingjordan.com) for an example of this th
|
|||
- Allow addition of custom `<head>` code in site's `layouts/partials/head-custom.html` (see [#17](https://github.com/alanorth/hugo-theme-bootstrap4-blog/pull/17))
|
||||
- Configurable display of summaries of content in list templates.
|
||||
- Configurable keywords for every post
|
||||
- Supports automatic generation of `<img>` srcsets for images in [page bundles](https://gohugo.io/content-management/page-bundles/) using a [new figure shortcode](https://cpbotha.net/2020/05/02/drop-in-replacement-for-hugo-figure-shortcode-with-responsive-img-srcset/) (falls back to default Hugo behavior of looking up images in the static directory)
|
||||
|
||||
## Usage
|
||||
Clone the repository to your site's `themes` directory. Refer to [`exampleSite/config.toml`](https://github.com/alanorth/hugo-theme-bootstrap4-blog/blob/master/exampleSite/config.toml) for recommended configuration values.
|
||||
|
@ -37,7 +38,7 @@ A few suggestions to help you get a good looking site quickly:
|
|||
See the source code and structure of [picturingjordan.com](https://github.com/alanorth/picturingjordan.com) to get more ideas.
|
||||
|
||||
## Building (For Developers)
|
||||
This theme uses the [Bootstrap](https://getbootstrap.com/) framework. A static version of this is already included, but if you want to bump the version, tweak the style, etc, you'll need to rebuild the assets. Make sure you have NodeJS >= v10 installed, and then run the following from inside the theme's directory:
|
||||
This theme uses the [Bootstrap](https://getbootstrap.com/) framework. A static version of this is already included, but if you want to bump the version, tweak the style, etc, you'll need to rebuild the assets. Make sure you have Node.js >= v14 installed, and then run the following from inside the theme's directory:
|
||||
|
||||
```console
|
||||
$ npm install
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,50 @@
|
|||
- id: about
|
||||
translation: "Om"
|
||||
|
||||
- id: home
|
||||
translation: "Hjem"
|
||||
|
||||
- id: recentPosts
|
||||
translation: "Seneste indlæg"
|
||||
|
||||
- id: readMore
|
||||
translation: "Læs mere"
|
||||
|
||||
- id: translations
|
||||
translation: "Oversættelser"
|
||||
|
||||
- id: share
|
||||
translation: "Del"
|
||||
|
||||
- id: paginatorPrevious
|
||||
translation: "Forrige side"
|
||||
|
||||
- id: paginatorNext
|
||||
translation: "Næste side"
|
||||
|
||||
- id: cookieMessage
|
||||
translation: "Denne hjemmeside anvender cookies."
|
||||
|
||||
- id: cookieLink
|
||||
translation: "Læs mere."
|
||||
|
||||
- id: cookieAccept
|
||||
translation: "OK"
|
||||
|
||||
- id: cookieDecline
|
||||
translation: "Afbryd"
|
||||
|
||||
- id: backToTop
|
||||
translation: "Til toppen"
|
||||
|
||||
- id: links
|
||||
translation: "Links"
|
||||
|
||||
- id: authoredBy
|
||||
translation: "af"
|
||||
|
||||
- id: postedIn
|
||||
translation: "i"
|
||||
|
||||
- id: comma
|
||||
translation: ","
|
|
@ -7,18 +7,28 @@
|
|||
"@type": "BlogPosting",
|
||||
{{- /* Google recommends the headline be no more than 110 characters */}}
|
||||
"headline": {{ substr .Title 0 110 }},
|
||||
{{- with .Params.images -}}{{ range first 1 . }}
|
||||
{{- with .Params.images -}}{{- range first 1 . -}}
|
||||
{{/* try to get the image from the page bundle */}}
|
||||
{{- with $.Page.Resources.GetMatch (printf "*%s*" .) }}
|
||||
"image": {
|
||||
"@type": "ImageObject",
|
||||
"url": {{ . | absURL }}
|
||||
"url": {{ .Permalink }},
|
||||
"height": "{{ .Height }}",
|
||||
"width": "{{ .Width }}"
|
||||
{{/* otherwise, get the image from static */}}
|
||||
{{- else }}
|
||||
"image": {
|
||||
"@type": "ImageObject",
|
||||
{{- $image := . -}}
|
||||
{{- /* Don't try to get imageConfig if image param is not local */ -}}
|
||||
{{- if not (or (hasPrefix . "http://") (hasPrefix . "https://")) -}}
|
||||
{{- with (imageConfig (printf "/static/%s" .)) -}}
|
||||
,
|
||||
{{- with (imageConfig (printf "/static/%s" .)) }}
|
||||
"url": {{ $image | absURL }},
|
||||
"height": "{{ .Height }}",
|
||||
"width": "{{ .Width }}"
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
},
|
||||
{{- end -}}{{ end }}
|
||||
"url": {{ printf "%s" .Permalink }},
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
{{ partial "opengraph.html" . }}
|
||||
{{ partial "twitter_cards.html" . }}
|
||||
|
||||
{{- with .Site.Params.google_verify_meta -}}
|
||||
<meta name="google-site-verification" content="{{ . }}" />
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<!--
|
||||
Import Hugo's internal twitter_cards.html template to add support for resolving
|
||||
images in page bundles and with falling back to the default of looking in the
|
||||
static assets directory.
|
||||
|
||||
See: tpl/tplimpl/embedded/templates/opengraph.html
|
||||
See: https://github.com/gohugoio/hugo/issues/5078
|
||||
-->
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
|
||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
{{ with $.Params.images }}{{ range first 6 . -}}
|
||||
{{/* try to get the image from the page bundle */}}
|
||||
{{- with $.Page.Resources.GetMatch (printf "*%s*" .) -}}
|
||||
<meta property="og:image" content="{{ .Permalink }}" />
|
||||
{{/* otherwise, get the image from /static */}}
|
||||
{{- else -}}
|
||||
<meta property="og:image" content="{{ . | absURL }}" />
|
||||
{{- end }}
|
||||
{{ end }}{{ else -}}
|
||||
{{- $images := $.Resources.ByType "image" -}}
|
||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
<meta property="og:image" content="{{ $featured.Permalink }}"/>
|
||||
{{ else -}}
|
||||
{{- with $.Site.Params.images -}}
|
||||
<meta property="og:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{ end }}{{ end }}{{ end }}
|
||||
|
||||
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||
{{- if .IsPage }}
|
||||
{{- if not .PublishDate.IsZero }}<meta property="article:published_time" {{ .PublishDate.Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />
|
||||
{{ else if not .Date.IsZero }}<meta property="article:published_time" {{ .Date.Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />
|
||||
{{ end }}
|
||||
{{- if not .Lastmod.IsZero }}<meta property="article:modified_time" {{ .Lastmod.Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
|
||||
{{- else }}
|
||||
{{- if not .Date.IsZero }}<meta property="og:updated_time" {{ .Lastmod.Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />
|
||||
{{- end }}
|
||||
{{- end }}{{/* .IsPage */}}
|
||||
|
||||
{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
|
||||
{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.videos }}
|
||||
{{- range . }}
|
||||
<meta property="og:video" content="{{ . | absURL }}" />
|
||||
{{ end }}{{ end }}
|
||||
|
||||
{{- /* If it is part of a series, link to related articles */}}
|
||||
{{- $permalink := .Permalink }}
|
||||
{{- $siteSeries := .Site.Taxonomies.series }}{{ with .Params.series }}
|
||||
{{- range $name := . }}
|
||||
{{- $series := index $siteSeries $name }}
|
||||
{{- range $page := first 6 $series.Pages }}
|
||||
{{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }}
|
||||
{{- end }}
|
||||
{{ end }}{{ end }}
|
||||
|
||||
{{- if .IsPage }}
|
||||
{{- range .Site.Authors }}{{ with .Social.facebook }}
|
||||
<meta property="article:author" content="https://www.facebook.com/{{ . }}" />{{ end }}{{ with .Site.Social.facebook }}
|
||||
<meta property="article:publisher" content="https://www.facebook.com/{{ . }}" />{{ end }}
|
||||
<meta property="article:section" content="{{ .Section }}" />
|
||||
{{- with .Params.tags }}{{ range first 6 . }}
|
||||
<meta property="article:tag" content="{{ . }}" />{{ end }}{{ end }}
|
||||
{{- end }}{{ end }}
|
||||
|
||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<!--
|
||||
Import Hugo's internal twitter_cards.html template to add support for resolving
|
||||
images in page bundles and with falling back to the default of looking in the
|
||||
static assets directory.
|
||||
|
||||
See: tpl/tplimpl/embedded/templates/twitter_cards.html
|
||||
See: https://github.com/gohugoio/hugo/issues/5078
|
||||
-->
|
||||
{{- with $.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
{{/* try to get the image from the page bundle */}}
|
||||
{{- with $.Page.Resources.GetMatch (printf "*%s*" .) -}}
|
||||
<meta name="twitter:image" content="{{ .Permalink }}"/>
|
||||
{{- else -}}
|
||||
<meta name="twitter:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{- end -}}
|
||||
{{ else -}}
|
||||
{{- $images := $.Resources.ByType "image" -}}
|
||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ $featured.Permalink }}"/>
|
||||
{{- else -}}
|
||||
{{- with $.Site.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{ else -}}
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
<meta name="twitter:title" content="{{ .Title }}"/>
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||
{{ with .Site.Social.twitter -}}
|
||||
<meta name="twitter:site" content="@{{ . }}"/>
|
||||
{{ end -}}
|
||||
{{ range .Site.Authors }}
|
||||
{{ with .twitter -}}
|
||||
<meta name="twitter:creator" content="@{{ . }}"/>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
|
@ -0,0 +1,92 @@
|
|||
{{/*
|
||||
|
||||
figure with auto-resizing and srcset v2020-11-30
|
||||
|
||||
Drop-in replacement for Hugo's figure shortcode as of 2020-05-02 that uses img srcset
|
||||
to enable browsers to download only the resolution that they need.
|
||||
|
||||
The resizing and srcset magic only works for images that are part of the page
|
||||
bundle. It will fall back to stock Hugo figure behaviour otherwise.
|
||||
|
||||
Improvements that were initially out of reach of my Hugo template programming "skills"
|
||||
but have now been taken care of:
|
||||
- [x] gracefully handle images that are not in page bundle, i.e. no image processing available
|
||||
- [x] use a single configurable sizes array, and derive everything from there
|
||||
|
||||
See https://cpbotha.net/2020/05/02/drop-in-replacement-for-hugo-figure-shortcode-with-img-srcset-support/
|
||||
|
||||
- original srcset img shortcode from: https://laurakalbag.com/processing-responsive-images-with-hugo/
|
||||
- original hugo figure shortcode from: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/shortcodes/figure.html
|
||||
- no unnecessary resizes and more nudges by Stéfan van der Walt https://mentat.za.net/
|
||||
- mashing together and srcset logic fixes by Charl P. Botha https://cpbotha.net/
|
||||
|
||||
Changes:
|
||||
- 2020-11-30 handle images that are rotated 90 degrees (should handle more eventually)
|
||||
- 2020-05-10 fall back to stock Hugo behaviour when no page bundle found
|
||||
- 2020-05-04 no unnecessary resizes, sizes in array
|
||||
- 2020-05-02 initial release
|
||||
|
||||
*/}}
|
||||
|
||||
{{/* hugo will resize to all of these sizes that are smaller than your original. configure if you like! */}}
|
||||
{{ $sizes := (slice "480" "800" "1200" "1500") }}
|
||||
|
||||
{{/* get file that matches the filename as specified as src="" in shortcode */}}
|
||||
{{ $src := .Page.Resources.GetMatch (printf "*%s*" (.Get "src")) }}
|
||||
|
||||
<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
|
||||
{{ if $src }}
|
||||
sizes="(min-width: 35em) 1200px, 100vw"
|
||||
{{/* only srcset images smaller than or equal to the src (original) image size, as Hugo will upscale small images */}}
|
||||
srcset='
|
||||
{{ range $sizes }}
|
||||
{{ $size := . }}
|
||||
{{/* https://discourse.gohugo.io/t/image-exif-orientation/22902/7 */}}
|
||||
{{/* set orientation to 1 just in case it doesnt exist in Exif */}}
|
||||
{{ $orientation := 1 }}
|
||||
{{ with $src.Exif }}
|
||||
{{ $orientation := .Tags.Orientation }}
|
||||
{{ if and (ge $src.Width $size) (eq $orientation 8) }}
|
||||
{{ ($src.Resize (printf "%sx r90" $size)).Permalink }} {{ (printf "%sw" $size) }},
|
||||
{{ else if ge $src.Width $size }}{{ ($src.Resize (printf "%sx" $size)).Permalink }} {{ (printf "%sw" $size) }},{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}'
|
||||
|
||||
{{/* when no support for srcset (old browsers, RSS), we load small (800px) */}}
|
||||
{{/* if image smaller than 800, then load the image itself */}}
|
||||
{{ if ge $src.Width "800" }}src="{{ ($src.Resize "800x").Permalink }}"
|
||||
{{ else }}src="{{ $src.Permalink }}"
|
||||
{{ end }}
|
||||
|
||||
{{ else }}
|
||||
{{/* fall back to stock hugo behaviour when image is not available in bundle */}}
|
||||
src="{{ .Get "src" }}"
|
||||
{{ end }}
|
||||
|
||||
{{- 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 -}}
|
||||
/> <!-- 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>
|
File diff suppressed because it is too large
Load Diff
27
package.json
27
package.json
|
@ -1,32 +1,31 @@
|
|||
{
|
||||
"name": "hugo-theme-bootstrap4-blog",
|
||||
"version": "1.5.1",
|
||||
"version": "1.6.0",
|
||||
"description": "A Bootstrap v4 theme for the Hugo static site generator.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/alanorth/hugo-theme-bootstrap4-blog.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build:css": "node-sass --output-style expanded --precision 6 source/scss/style.scss assets/css/style.css.tmp && cleancss --level 1 assets/css/style.css.tmp -o assets/css/style.css",
|
||||
"build:rtlcss": "rtlcss -s assets/css/style.css.tmp assets/css/style.rtl.css.tmp && cleancss --level 1 assets/css/style.rtl.css.tmp -o assets/css/style.rtl.css",
|
||||
"build:css": "sass --style expanded source/scss/style.scss assets/css/style.css.tmp && cleancss -O1 assets/css/style.css.tmp -o assets/css/style.css",
|
||||
"build:rtlcss": "rtlcss -s assets/css/style.css.tmp assets/css/style.rtl.css.tmp && cleancss -O1 assets/css/style.rtl.css.tmp -o assets/css/style.rtl.css",
|
||||
"build:cookieconsent": "cp node_modules/@chiiya/haven/dist/haven.umd.min.js assets/js",
|
||||
"build:js": "webpack",
|
||||
"build": "npm run build:css && npm run build:rtlcss && npm run build:js && npm run build:cookieconsent && npm run clean",
|
||||
"clean": "rm assets/css/style.css.tmp assets/css/style.rtl.css.tmp"
|
||||
"clean": "rm assets/css/style.css.tmp assets/css/style.css.tmp.map assets/css/style.rtl.css.tmp"
|
||||
},
|
||||
"keywords": "hugo",
|
||||
"author": "Alan Orth",
|
||||
"license": "CC-BY-3.0",
|
||||
"devDependencies": {
|
||||
"@chiiya/haven": "^0.6.0",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.1",
|
||||
"bootstrap": "^4.5.3",
|
||||
"clean-css-cli": "^4.3.0",
|
||||
"node-sass": "^5.0.0",
|
||||
"rtlcss": "^2.6.1",
|
||||
"webpack": "^5.4.0",
|
||||
"webpack-cli": "^3.3.12"
|
||||
"@chiiya/haven": "^0.7.0",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.34",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.2",
|
||||
"bootstrap": "^4.6.0",
|
||||
"clean-css-cli": "^5.4.1",
|
||||
"rtlcss": "^3.3.0",
|
||||
"sass": "^1.43.2",
|
||||
"webpack-cli": "^4.9.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,44 +1,44 @@
|
|||
/*!
|
||||
* Bootstrap v4.5.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors
|
||||
* Copyright 2011-2020 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Bootstrap v4.6.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
@import "node_modules/bootstrap/scss/functions";
|
||||
@import "node_modules/bootstrap/scss/variables";
|
||||
@import "node_modules/bootstrap/scss/mixins";
|
||||
//@import "node_modules/bootstrap/scss/root";
|
||||
@import "node_modules/bootstrap/scss/reboot";
|
||||
@import "node_modules/bootstrap/scss/type";
|
||||
@import "node_modules/bootstrap/scss/images";
|
||||
@import "node_modules/bootstrap/scss/code";
|
||||
@import "node_modules/bootstrap/scss/grid";
|
||||
//@import "node_modules/bootstrap/scss/tables";
|
||||
@import "node_modules/bootstrap/scss/forms";
|
||||
@import "node_modules/bootstrap/scss/buttons";
|
||||
//@import "node_modules/bootstrap/scss/transitions";
|
||||
//@import "node_modules/bootstrap/scss/dropdown";
|
||||
//@import "node_modules/bootstrap/scss/button-group";
|
||||
//@import "node_modules/bootstrap/scss/input-group";
|
||||
//@import "node_modules/bootstrap/scss/custom-forms";
|
||||
@import "node_modules/bootstrap/scss/nav";
|
||||
@import "node_modules/bootstrap/scss/navbar";
|
||||
//@import "node_modules/bootstrap/scss/card";
|
||||
//@import "node_modules/bootstrap/scss/breadcrumb";
|
||||
@import "node_modules/bootstrap/scss/pagination";
|
||||
//@import "node_modules/bootstrap/scss/badge";
|
||||
//@import "node_modules/bootstrap/scss/jumbotron";
|
||||
//@import "node_modules/bootstrap/scss/alert";
|
||||
//@import "node_modules/bootstrap/scss/progress";
|
||||
//@import "node_modules/bootstrap/scss/media";
|
||||
//@import "node_modules/bootstrap/scss/list-group";
|
||||
//@import "node_modules/bootstrap/scss/close";
|
||||
//@import "node_modules/bootstrap/scss/toasts";
|
||||
//@import "node_modules/bootstrap/scss/modal";
|
||||
//@import "node_modules/bootstrap/scss/tooltip";
|
||||
//@import "node_modules/bootstrap/scss/popover";
|
||||
//@import "node_modules/bootstrap/scss/carousel";
|
||||
//@import "node_modules/bootstrap/scss/spinners";
|
||||
@import "node_modules/bootstrap/scss/utilities";
|
||||
@import "node_modules/bootstrap/scss/print";
|
||||
@import "../../node_modules/bootstrap/scss/functions";
|
||||
@import "../../node_modules/bootstrap/scss/variables";
|
||||
@import "../../node_modules/bootstrap/scss/mixins";
|
||||
@import "../../node_modules/bootstrap/scss/root";
|
||||
@import "../../node_modules/bootstrap/scss/reboot";
|
||||
@import "../../node_modules/bootstrap/scss/type";
|
||||
@import "../../node_modules/bootstrap/scss/images";
|
||||
@import "../../node_modules/bootstrap/scss/code";
|
||||
@import "../../node_modules/bootstrap/scss/grid";
|
||||
@import "../../node_modules/bootstrap/scss/tables";
|
||||
@import "../../node_modules/bootstrap/scss/forms";
|
||||
@import "../../node_modules/bootstrap/scss/buttons";
|
||||
//@import "../../node_modules/bootstrap/scss/transitions";
|
||||
//@import "../../node_modules/bootstrap/scss/dropdown";
|
||||
//@import "../../node_modules/bootstrap/scss/button-group";
|
||||
//@import "../../node_modules/bootstrap/scss/input-group";
|
||||
//@import "../../node_modules/bootstrap/scss/custom-forms";
|
||||
@import "../../node_modules/bootstrap/scss/nav";
|
||||
@import "../../node_modules/bootstrap/scss/navbar";
|
||||
//@import "../../node_modules/bootstrap/scss/card";
|
||||
//@import "../../node_modules/bootstrap/scss/breadcrumb";
|
||||
@import "../../node_modules/bootstrap/scss/pagination";
|
||||
//@import "../../node_modules/bootstrap/scss/badge";
|
||||
//@import "../../node_modules/bootstrap/scss/jumbotron";
|
||||
//@import "../../node_modules/bootstrap/scss/alert";
|
||||
//@import "../../node_modules/bootstrap/scss/progress";
|
||||
//@import "../../node_modules/bootstrap/scss/media";
|
||||
//@import "../../node_modules/bootstrap/scss/list-group";
|
||||
//@import "../../node_modules/bootstrap/scss/close";
|
||||
//@import "../../node_modules/bootstrap/scss/toasts";
|
||||
//@import "../../node_modules/bootstrap/scss/modal";
|
||||
//@import "../../node_modules/bootstrap/scss/tooltip";
|
||||
//@import "../../node_modules/bootstrap/scss/popover";
|
||||
//@import "../../node_modules/bootstrap/scss/carousel";
|
||||
//@import "../../node_modules/bootstrap/scss/spinners";
|
||||
@import "../../node_modules/bootstrap/scss/utilities";
|
||||
@import "../../node_modules/bootstrap/scss/print";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// selectively import components we need from bootstrap
|
||||
// see: node_modules/bootstrap/scss/bootstrap.scss
|
||||
@import 'source/scss/bootstrap';
|
||||
@import 'bootstrap';
|
||||
|
||||
// local style overrides
|
||||
@import 'source/scss/main';
|
||||
@import 'main';
|
||||
|
|
|
@ -3,6 +3,7 @@ license = "CC-BY-3.0"
|
|||
licenselink = "https://github.com/alanorth/hugo-theme-bootstrap4-blog/blob/master/LICENSE.txt"
|
||||
description = "A simple Hugo theme based on the Bootstrap v4 blog example."
|
||||
homepage = "https://github.com/alanorth/hugo-theme-bootstrap4-blog"
|
||||
demosite = "https://picturingjordan.com"
|
||||
tags = ["bootstrap", "blog", "font awesome"]
|
||||
features = ["responsive", "blog"]
|
||||
min_version = 0.55
|
||||
|
|
Loading…
Reference in New Issue