1
0
mirror of https://github.com/alanorth/hugo-theme-bootstrap4-blog.git synced 2024-06-29 09:33:45 +02:00
Commit Graph

112 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Noah Zoschke
9cce778e86 blocks for masthead, header, body and footer 2018-01-02 13:52:23 -08:00
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
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
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
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
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
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
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
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
d554b6bead
layouts/_default/single.html: Only get imageConfig on local images
Don't try to get image information when the image isn't local. We
generally expect that images are in the local filesystem's static
directory, but if the user has specified a remote image—ie, with
an http:// or https:// prefix—then we shouldn't try imageConfig.
2017-03-24 16:31:50 +02:00
3b3598960c
Revert "Revert "layouts: Add imageConfig to set height and width""
This reverts commit 5e1b0f40ab.
2017-03-24 16:02:44 +02:00
5e1b0f40ab Revert "layouts: Add imageConfig to set height and width"
This reverts commit bf9bca9656.

If the user specifies a non-local image then the build generates
an error. See #56. We need to have a way to only get imageInfo for
local images...
2017-03-24 11:07:20 +02:00
Caleb Cushing
2e6a27300e add previous and next relations (#55)
* add previous and next relations

https://www.w3.org/TR/html5/links.html#link-type-next

* undo rel's on disabled buttons
2017-03-24 10:59:41 +02:00
bf9bca9656
layouts: Add imageConfig to set height and width
Hugo 0.18 introduced the imageConfig function which allows you to
access the height and width of images, which makes bots consuming
the structured data happy.
2017-02-21 08:24:01 +02:00
4d7a544dac
layouts: Quote some parameters in JSON LD
Current Hugo 0.19-DEV doesn't quote these anymore, so we need to
add quotes manually. I'm not sure if this is a design decision or
not on Hugo's part.
2017-02-21 08:17:19 +02:00
d6cc7839ef
layouts/_default/list.html: Use .Date for modification time on nodes
I'm not sure if it really matters to bots who will parse this (it's
much more important on content pages of course), but using .Date on
nodes like the homepage and taxonomy terms pages will set the date
to be that of the latest post in that range—to me this does indeed
seem to be "time when the object was last updated"[0].

[0] https://developers.facebook.com/docs/reference/opengraph/object-type/website/
2017-01-22 14:58:13 +02:00
2459ad9567
layouts/_default/single.html: Simplify sharing icon logic
Allowing users to select specific icons they want to show makes the
configuration and logic a bit tricky. A user brought up the case of
disabling sharing icons on certain pages/posts, and it was actaully
not possible without adding lots of extra logic, not to mention the
pain of having to test all possible configurations.

Instead, it is much simpler to just allow sharing icons to be either
on or off as desired in the site config or page/post frontmatter:

  sharingicons = false

Otherwise, sharing icons default to being enabled, as this is most
in line with what would be expected on a "blog".
2017-01-21 19:16:57 +02:00
8ab05ae625
Add Schema.org implementation based on JSON-LD
This replaces the metadata that Hugo's own schema.html template had
been providing, but does so in JSON-LD notation rather than via the
use of <meta> tags (this is Google's currently recommended form of
specifying this markup). There are a few exceptions where I did not
follow the conventions used in Hugo's template, for example the use
of up to six images from a post's frontmatter, because Google's tool
only recognizes one image, as well as different logic for a post's
publish and modified dates (using enableGitInfo = true).

Using this new markup, Google's Structured Data Testing Tool is now
able to understand site metadata much better (before it was reading
none).

The implementation here is a mix of the elements and types from the
official Schema.org types—for example, Blog and BlogPosting—as well
as from Google's search documentation. Note that Google's docs are
geared towards AMP, where some metadata is required, while for non-
AMP pages the metadata is just recommended.

We will have to re-evaluate this in the future, for example to add
height and width information to image metadata.

See: https://schema.org/Blog
See: https://schema.org/BlogPosting
See: https://developers.google.com/search/docs/data-types/data-type-selector
See: https://search.google.com/structured-data/testing-tool
2017-01-20 15:58:30 +02:00
0e381ab120
Start using SRI hashes for CSS/JS assets
Uses Hugo's site data mechanism to load pre-generated asset hashes.
2017-01-11 10:42:49 +02:00
1f6cc0cf42
layouts/_default/single.html: Adjust Disqus logic
Bring the Disqus comments inside the <article> tag. The article has
a sizeable bottom margin seprating it from the blog footer, and if
Disqus comments are active they appear after this margin, and this
looks ugly.

Semantically, I think the comments should actually be inside the
article tag anyways (since they are directly related), as well as
further wrapped in article tags, but we don't control the code that
Disqus injects so we'll have to make do with this.

See: https://www.w3.org/TR/html5/sections.html#the-article-element
2017-01-07 11:22:45 +02:00
af39372a24
layouts/_default/baseof.html: Revert to simple "read more" link
Prepending the site's URL to relative links was a hack but at the
time I couldn't understand why href="#" didn't take us to the top
of the page. It turns out that this was because of the <base> tag
that I have now removed.
2017-01-05 15:23:09 +02:00
fa0df752a1
layouts/_default/baseof.html: Remove base tag
It was screwing up relative links like the ones in footnotes. I'm
not sure why I added it in the first place, actually, as the docs
specifically say "specifies the base URL to use for all relative
URLs contained within a document".

See: https://developer.mozilla.org/en/docs/Web/HTML/Element/base
2017-01-05 15:20:29 +02:00
ffb8487c13
layouts/_default/baseof.html: Remove second RSS link
link tags with rel="feed" don't seem to be valid. They are flagged
by the w3c validator and modern documentation only mentions the use
of rel="alternate", which we are already using.

See: https://validator.w3.org
See: https://developer.mozilla.org/en-US/docs/Web/RSS/Getting_Started/Syndicating
2017-01-05 14:34:10 +02:00
8616dd8c10
layouts/_default/baseof.html: Use .Site.RegularPages instead of .Site.Pages
Hugo 0.18 changes the pages returned by .Site.Pages, so we need to
use .Site.RegularPages in order to test the type.

See: https://github.com/spf13/hugo/releases/tag/v0.18
See: https://gohugo.io/templates/variables#site-variables
2016-12-25 17:56:24 +02:00
61201274fb
layouts/_default/single.html: Allow disabling of comments
To disable comments for a single page, set "comments = false" in
its frontmatter.
2016-12-24 17:18:03 +02:00