Commit Graph

168 Commits

Author SHA1 Message Date
Alan Orth 54f85c3beb
layouts/_default/single.html: Fix for images in the page bundle 2020-12-04 14:09:27 +02:00
Alan Orth c6498a4bfb
layouts/partials: Override internal templates for page bundles
The Hugo internal Twitter and OpenGraph templates assume your post
images are in the static directory. This tries to look them up in
the page bundle first and falls back to the Hugo default behavior.
2020-12-04 14:06:47 +02:00
Alan Orth 147ee8cf76
layouts/shortcodes/figure.html: Add srcset support
This overrides Hugo's default figure shortcode to enable img srcset
support, which allows the client to decide which size of image they
want to download based on a CSS media query. During build time Hugo
creates several versions of each image to match several breakpoints.
Unfortunately this only works if the images are in the post's page
bundle, falling back to retrieving images from the static directory
if they aren't found in the bundle.

This shortcode was originally from Charl P. Botha, but I modified
it to automatically rotate images that have orientation EXIF data.

See: https://gohugo.io/content-management/page-bundles/
See: http://www.johann-oberdorfer.eu/blog/2020/01/05/20-01-05_leverage_page_bundles_in_hugo/
See: https://cpbotha.net/2020/05/02/drop-in-replacement-for-hugo-figure-shortcode-with-responsive-img-srcset/
2020-12-04 14:03:29 +02:00
Jeremy Campbell 7dbe547dce Allow content without PublishDate, eliminates extraneous date output. 2020-10-29 12:53:14 +03:00
Jeremy Campbell 43d4fb3d2d Fixed formatting of ld-json keywords list on list.html default 2020-10-29 12:50:49 +03:00
Alan Orth ef714f2192
layouts: Fix error in Haven invocation 2020-05-17 22:45:23 +03:00
Alan Orth d72552cde3
layouts: Update Haven invocation
If the user has configured a cookie consent information URL we will
show it in the banner.
2020-05-17 22:42:56 +03:00
Alan Orth 26f170bfdd
layouts: Test for existence of Google Analytics ID
Previously we showed the Cookie Usage banner if the site's config
had a cookie consent URL specified. As of 2018-05 (GDPR) it makes
more sense to only display this banner if the site has a Google
Analytics ID set. Because we are using Haven for consent manage-
ment we can now inject Google Analytics automatically after the
user has agreed, so we no longer need to use Hugo's internal te-
mplate.
2020-05-17 22:32:12 +03:00
Alan Orth 3b360d2eef
Use haven for GDPR popup instead of cookieconsent
Haven is newer and more well maintained (and also it is actually
open source instead of open core with an upsell to a paid subscrip-
tion). Haven is configured to be 100% *opt-in* for Google Analytics,
which means it does not load or send a hit until the user agrees.

This is mostly a drop-in replacement, but translations need to make
sure the following strings are updated:

- cookieAccept
- cookieDecline
2020-05-13 13:19:41 +03:00
Alan Orth f7d9451aa6
layouts: Fix minor encoding issue with dates
This is similar to other encoding issues we have fixed lately where
we need to make sure Hugo (or Golang's HTML template library) does
not escape our non-ASCII content.

For example, this is how our datetimes end up currently:

    <p class="blog-post-meta"><time datetime="2020-01-16T09:23:20&#43;02:00">Thu Jan 16, 2020</time> by Alan Orth

After printing them with `printf` and filtering them with the Hugo
built-in function `safeHTMLAttr` they look like this:

    <p class="blog-post-meta"><time datetime="2020-01-16T09:23:20+02:00">Thu Jan 16, 2020</time> by Alan Orth

See: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html
See: https://github.com/alanorth/hugo-theme-bootstrap4-blog/pull/111
2020-03-22 11:09:27 +02:00
Alan Orth 85abd20ba7
layouts: Fix more structured data escaping issues
I think we actually only need to quote string literals. Otherwise,
it seems that Hugo automatically adds quoting for us, and doesn't
use funny escaping of URLs, special characters, etc.
2020-03-19 15:45:31 +02:00
Alan Orth 4a88be4434
layouts: Remove quoting of structured data
I don't understand it, but quoting these values causes Hugo to use
escape codes for non-ASCII (?) characters. For example:

  "description": "A thriving oasis in Jordan\x27s desert is at risk of disappearing."

Google's Search Console shows the following error:

    Unparsable structured data > Bad escape sequence in string

We had a similar issue with dates that was fixed in #111 and the
solution is the same here.
2020-03-19 15:22:29 +02:00
Alan Orth d4ece493ba
layouts/partials/meta-terms.html: Trailing slash
Hard code a trailing slash in URLs for categories and tags to avoid
an HTTP 301 redirect at the very least, and an HTTP 404 at the very
worst (depending on web server configuration).

This is a workaround for a problem caused by our manual construction
of URLs using the categories and tags strings in post front matter.
Hugo's own taxonomy tooling always uses a trailing slash.

See: https://github.com/alanorth/hugo-theme-bootstrap4-blog/issues/128
2020-01-28 10:50:31 +02:00
Alan Orth 3ab60bddea
Use Font Awesome SVGs via JavaScript
This is a bit of "one step forward, two steps back" in that we are
now using the much more lean SVG icons—and only the ones we are ac
tually using—instead of having to download the two ~70KiB web font
files, but it means we need to use JavaScript.

This approache was inspired by the work @xekon did in #127.

See: https://fontawesome.com/how-to-use/on-the-web/advanced/svg-javascript-core
See: https://github.com/alanorth/hugo-theme-bootstrap4-blog/pull/127
2020-01-27 18:17:35 +02:00
Alan Orth 4c5ce590f2
Update to Font Awesome 5
Nothing really new as far as how we're using Font Awesome, but it is
good to keep up with the times and the tooling. Users that have used
custom fonts in their content or layouts will need to update their
icon prefixes from "fa" to "fas" or "fab" depending on which font
their icon comes from.

See: https://fontawesome.com/how-to-use/on-the-web/setup/upgrading-from-version-4
2020-01-25 21:20:44 +02:00
Alan Orth 32af219491
layouts: Remove a few more references to GooglePlus
The sharing icons were removed in 2019, but these remained.
2020-01-25 16:05:51 +02:00
Alan Orth 63241061dd
layouts/_default/baseof.html: Fix comment about RTL
It's not just Arabic anymore now that I added Farsi strings!
2020-01-23 19:46:21 +02:00
Alan Orth 44e8c677a6
Use Hugo's built-in subresource integrity support
We can use Hugo's built-in SRI support instead of using our custom
SRI generator script (as cool as it was at the time). This is more
clean and gives us the added benefit of adding fingerprints to the
CSS and JS filenames, which acts as a cache buster.

See: https://gohugo.io/hugo-pipes/introduction/
See: https://github.com/alanorth/hugo-theme-bootstrap4-blog/issues/120
2020-01-23 19:34:21 +02:00
Alan Orth b2ea655810
layouts: Use right-to-left text for Farsi 2019-12-04 09:56:41 +02:00
Paweł Hofman 92cab738dd Fixed invalid URL if blog is not in domain root 2019-10-11 11:06:23 +03:00
TommySprat c1b3e978b7 Remove escape characters in formatted date
Without the quotes in the template the '+' character will no longer
needlessly be escaped as '\x2b'
2019-06-13 00:07:36 +02:00
TommySprat 8da12539f3 Support baseurl without trailing slash 2019-06-04 00:26:09 +02:00
Alan Orth 26e0a9a259
layouts/partials/recent.html: Only list "Regular" pages
This makes Hugo only list "Regular" pages in the sidebar. Otherwise
if you have very few posts, for example, you might see one entry in
the list called "Posts".

See: https://gohugo.io/functions/where/#mainsections
2019-05-26 10:28:31 +03:00
Alan Orth ed69bec464
layouts: Update Twitter sharing link
Use the new (?) sharing intent and add the page title as Tweet text.
2019-05-05 12:20:21 +03:00
Alan Orth b862745a0d
Localize "by" and "in" strings in post meta
This became a problem when I added right-to-left language support.
When you mix RTL languages like Arabic with English (even for just
dates and small strings) everything becomes jumbled. For now I have
only added translations for English (default), Arabic, and Bulgarian.
2019-04-22 18:51:33 +03:00
Alan Orth 9934368215
layouts: Set dir="auto" on some HTML elements
When a site is rendered in Arabic the root HTML element gets the
dir="rtl" attribute, but even Arabic sites might have an English
title or footer, etc so we should set dir="auto" on those elements.
2019-04-18 23:38:53 +03:00
Alan Orth 6a3bdc53fd
Add right-to-left version of CSS
This uses rtlcss to make a right-to-left version of the CSS and then
utilizes Hugo's Language variable to conditionally include it. Also,
we set the "dir" attribute on the HTML tag if the currently rendered
language is Arabic.
2019-04-18 22:19:42 +03:00
Alan Orth 2916229d28
layouts: Update for Hugo 0.55.0
See: https://github.com/gohugoio/hugo/releases/tag/v0.55.0
2019-04-14 16:25:35 +03:00
bit33 08cf066111
Removed Google+ from sharing icons
Google+ is no longer available for consumers
2019-04-05 23:55:09 +02:00
Cosmin Humeniuc 4a846731ee
Used different syntax for accessing site parameters. 2018-08-29 12:23:59 +03:00
Cosmin Humeniuc 4721b523ca
Added 'header_visible' parameter to allow switching off the header. 2018-08-29 12:23:54 +03:00
Camille Roux 5581929151
Use RegularPages instead of Pages in list.html 2018-08-09 15:06:28 +02:00
Alan Orth ba0aca3e2b
layouts/_default/list.html: Use pagination partial
Now that we're using the same pagination code on lists and taxonomy
pages we should reuse the code by putting it in a partial.
2018-04-19 18:20:35 +03:00
Alan Orth 400357930a
Add taxonomy template
The default list template was used for paginating posts on the homepage
as well as the taxonomies and terms pages, but actually those two cases
are different. This introduces a taxonomy template that paginates based
on the current context (ie, when displaying posts for a certain tag).
2018-04-19 18:08:48 +03:00
Alan Orth cbd7140e63
layouts/_default/baseof.html: Update navbar menu template
Uses the same code as the Hugo menu template example, which should be
more robust with nested menus.
2018-03-09 20:29:11 +02:00
Alan Orth 1655b876a8
Use .Site.Params.mainSections instead of hard coding "post" type
Hugo 0.32 or so added the quasi-magical .Site.Params.mainSections slice
that returns a range over the section that has the most number of pages.

This way we don't need to hard code the "post" type, and instead simply
use the pages that the user has created. Hugo's quickstart, for example,
recommends users create "posts", which currently doesn't work with this
theme!

Closes #89
2018-03-09 17:50:03 +02:00
Frank Tegtmeyer b77fe77932 Configurable keywords for blog posts. 2018-02-02 11:56:19 +01:00
Alan Orth 58f0b48a72
layouts/404.html: Add minimal not found page
You still need to instruct your web server to use this. See the Hugo
documentation for more information: https://gohugo.io/templates/404/

Closes #72
2018-01-14 05:49:55 +02:00
Noah Zoschke 9cce778e86 blocks for masthead, header, body and footer 2018-01-02 13:52:23 -08:00
Alan Orth 0055110e47
layouts/partials/sidebar.html: Use margin class instead of offset
Bootstrap 4.0 Beta 1 dropped the offset classes in favor of margin
classes. We need to use `ml-auto` instead of `offset-sm-1` here to
get the same effect.

See: https://github.com/twbs/bootstrap/pull/22942
See: https://github.com/twbs/bootstrap/pull/23388
2017-08-13 11:41:35 +03:00
Alan Orth 2dd72d7ec1
layouts/_default/single.html: Improve Schema.org keywords
Use delimit function over a union of Categories and Tags. This is
much easier to read, results in correct delimiting with no trailing
comma, and works even if one of the slices is nil.
2017-07-07 16:29:59 +03:00
Alan Orth 6945b0de20
layouts/_default/single.html: Improve Schema.org keywords
Use delimit function over a union of Categories and Tags. This is
much easier to read, results in correct delimiting with no trailing
comma, and works even if one of the slices is nil.
2017-07-07 16:25:56 +03:00
Alan Orth 1311adde33
layouts: Revert to built-in Disqus template
Hugo 0.25 improved the embedded Disqus template so we can just use
theirs now.

See: https://github.com/gohugoio/hugo/pull/3655
See: https://github.com/gohugoio/hugo/pull/3639
2017-07-07 15:31:17 +03:00
Alan Orth a81ed6803b
layouts/_default/baseof.html: Allow disabling of SRI
Some sites using edge caching like that on a CDN or S3 might have
issues with assets being cached too long, causing user agents to
refuse to load assets due to SRI hash mismatch. These sites should
disable the use of sub-resource integrity hashes using this config
option in their config:

    disable_sri = true
2017-04-12 21:38:10 +03:00
Mike Lococo 2e5eef29a6 Add option to control post truncation. 2017-04-04 12:45:11 +03:00
Alan Orth e7749e9bde
layouts/_default/baseof.html: Don't create whitespace
Cleans up some template logic so that extra, unnecessary whitespace
isn't created during site generation.
2017-04-04 12:21:52 +03:00
Alan Orth 77671af35d
layouts/: Use absLangURL to determine active page in menu
On sites with multiple languages we need to use the absolute URL in
the test to determine if the current page should be marked "active"
in the menu bar. Perhaps a bug with Hugo that relative links end up
like "/bg/bg/about" instead of "/bg/about".
2017-04-04 12:03:07 +03:00
Alan Orth 09d089f214
layouts/_default/baseof.html: Remove trailing whitespace 2017-04-04 11:54:30 +03:00
zidenis e811b25fdc highlights the current navbar menu entry 2017-04-04 11:53:38 +03:00
Alan Orth e2ccfe8bf3
Clean up empty whitespace in JSON-LD
Use secret formatting feature of Go templates, adding - to blocks
to clear whitespace around the tags.
2017-03-24 16:49:26 +02:00