Skip to content

Commit

Permalink
Eleventy Base Blog
Browse files Browse the repository at this point in the history
Initial commit.

Initial commit

Renames url filter to `url`

Instructions.

Add link to eleventy

Implementation Notes

 Reorder docs

Use <link> to refer to the Atom feed

start of eleventy-base-blog that pairs with 0.2.8

Fixes #3

Changes eleventy pkg min

Adds a syntax highlighter example to templates for #3

Metadata edit to docs

Trying out that autodeploy

Logo, what logo

Try again.

One more.

Trying to run eleventy on commit

Now we’re trying to get it to run eleventy.

Switch to plain syntax

Switch to npx

Try to run from node_modules.

New tries on the local install

Try a `before_script`

Deployyyyy

Use script

Add subdir for gh-pages

Fix for subdir links.

Build status and demo links to readme

Remove home from nav

Try prismjs highlighter

Upgrades to 0.2.9 for new url filter.

Upgrades to eleventy v0.2.10

Fixes #5

Fixes #4, point feed links directly to file to avoid web server specific stuff.

Bump to 2.0

Adds an .nvmrc for netlify deploys.

Move from atom.xml to feed.xml for tech agnostic-ish filename.

Change default config to use pathPrefix: "/" and then use `--pathprefix="/eleventy-base-blog/` for GitHub deploy command. Requires Eleventy v0.2.11

v3.0.0

Netlify defaults.

Adds Netlify stuff to the readme.

Add link back to repo from demo pages.

Moves warning message to _includes/base.njk, adds a home link to posts

Emoji was bad.

Refactors Liquid syntax highlighters to add line highlights.

Usage (ranges are space separated):

{% highlight js 1,4-6 %}
One range
Adds `highlight-line-active` to lines 1,4,5,6

{% highlight js 3-4 -1 %}
Two ranges (add/remove), remove is N/A
Adds `highlight-line-add` to lines 3,4

{% highlight js -1 3-4 %}
Two ranges (add/remove), add is N/A
Adds `highlight-line-remove` to lines 3,4

{% highlight js 3-4 5,8-10 %}
Two ranges, both are used
Adds `highlight-line-add` to lines 3-4
Adds `highlight-line-remove` to lines 5,8,9,10

Fixes #6

v3.0.1

superfluous callback

Fixes urls in feed.

Try the plain highlighter

Switch to debug for netlify deploy

Separate files for syntax highlighters

Ugh, case sensitivity filename issue on Mac OS

Show off the syntax line highlights

Adds editorconfig for my own sanity.

Move all src JS into external plugins installed through NPM:
@11ty/eleventy-plugin-rss
@11ty/eleventy-plugin-syntaxhighlight

Updated license name

simplified npm script names

v4.0.0

Updates for 0.2.14

Dependency updates

v4.0.1

Use new markdown syntax highlighter b/c it’s cool, v4.0.2

adding img dir to align with default eleventy.js settings and avoid error

Update deps

Adds tag pages example

Use url filter for proper urls on github pages

_includes/base.njk —> _includes/layouts/base.njk

Updated the file path of `base.njk`

Adds markdown-it-anchor plugin

Upgrades to 0.4.0 and adds tag pages

Standardize on content and not templateContent (per docs)

Simplify collection filtering using `startsWith`

Adds 404 page.

Adds a /tags/ to list all valid tags

Add `reversed` attribute to posts list

Without CSS, the last post will be number 1. In browsers other than IE and Edge (where it's currently under consideration), the `reversed` attribute will match the effect of the CSS counter. I like putting the attribute first so it's clear that it's a particular kind of "ordered list: reversed."

Set default text and background colours

Some elements in the design have text colour without background colour. Setting a global background colour should be enough with current text colours.

I wonder however if `var(--white)` is really necessary, instead of `white`.

Typo

gray != grey

Workaround for #15

Use Set instead of object in `getTagList`

Update getTagList.js

Fix set usage

Fix #18.

Fix a typo

Add archives page

Blogs commonly only display the latest `n` blog posts on the home page, while showing the full list on a separate archive page. This change implements that.

Add sitemap.xml

Add code snippet with 2 consecutive new lines

This demonstrates the issue that 11ty/eleventy-plugin-syntaxhighlight#5 fixes, and could serve as kind of a regression test for the fix. :)

Use <time> where applicable

Whitespace

Adds liquid templates to templateFormats

Whitespace, adds fourth sample post

Refactored latest posts and with a correct sort. Uses dates on posts rather than file creation dates (unreliable).

Upgrades dependencies to latest.

Fix href on github pages

Same URL pattern for relative paths that I have seen elsewhere

Using deep data merge (post tag is inherited from posts/posts.json) and updates to use 0.7.0.

Bump version

Add link to quick tip in 404 page. Also a link to home.

Eleventy v0.7.1

Adds 11ty/eleventy#386 to default eleventy-base-blog config

readme update to include how to host using local webserver for development purposes

xml date fix

Updates dependencies.

Use new eleventyExcludeFromCollections feature in 0.8.0: https://www.11ty.io/docs/collections/#option%3A-exclude-content-from-collections

Updates to 0.8.1

Updates Eleventy dependency.

Create FUNDING.yml

Dependency update

Updates to Eleventy 0.9.0

Updates syntaxhighlight plugin

Remove npx from package.json

Use `eleventy-navigation` plugin for navigation menu

Navigation plugin needs to work with pathprefix (update dep)

Switches to use more obvious markup menu template for eleventy-navigation

v5.0.1

use tagList with full filter instead of just excluding posts

run browsersync in ghost mode

The average user probably does not want every reader's scroll position synced to every other reader.

Builds feed URL from site URL to reduce replication

Add ZEIT Now one-click deployment

A bit less redundant editorial :)

Extra colon

Fix #47

Rename the variable for #47

Upgrade dep

Rogue markdown!

Nicer browsersync defaults.

v5.0.2

Nicer font

Taken from: https://bitsofco.de/the-new-system-font-stack/

system-ui font

Update to v0.10.0

Updates to 0.11.0

Bump nvmrc to 10 for netlify

I tried deploying a site based on the starter to netlify and it failed due to a node mismatch. This got the build to work.

Name update post rebranding

Update TLD

Reverse order of posts in feed
* Allows feed readers to make sure they get the latest post, even of parsing is limited.

Use eleventyComputed instead of renderData

Avoid name clash with `tag` in HTML syntax highlighting

Avoid name clash with `tag` in HTML syntax highlighting

Avoid name clash with `tag` in HTML syntax highlighting

bump eleventy navigation to 0.1.5

Updates navigation dependency.

Add jsonfeed to metadata

Add filter for HTML content

Add jsonfeed template

Add jsonfeed to base template

use JSON.stringify for content

Reuse feed backs from metadata file and adds comments about it.

Reuse the `url` filter to work with path prefixes.

Clean up the JSON code a bit (don’t need that extra filter)

Add 'remix on glitch' link to readme

Working port of this project on glitch.com

I don’t think `category` is used here.

Get rid of the _11ty folder—we don’t need it.

Adds next and previous post links.

Fixes #70

The pathPrefix url filter isn’t needed here for permalinks. Otherewise the files generate to a special folder. We want the directory output to look the same, not with hardcoded pathprefix directories.

Use a newer Node

Upgrade node version in travis config

Update eleventy

Update deps.

Serve 404 page with status code 404, not 200

Signed-off-by: Anders Kaseorg <andersk@mit.edu>

Add "language" value to update jsonfeed to v1.1

Add language field/bump version to 1.1

Change to more generic two letter code

Read more: https://jsonfeed.org/version/1.1

changed perms of _data/metadata.json

Fixes #62.

Fixes #63.

Missed one for #63.

Change those ugly red tags.

Tweaks to posts list css.

Support spaces in tags in base blog.

Update Eleventy version.

Align tags

Update markdown deps (major bump!)

Update RSS plugin

Add missing colon to `json.njk`

Fixes malformed JSON feed output

Update readme instructions for css and images

The instructions should be changed to properly reflect the way css and
images are handled in the configuration.

At the moment the instructions reference css and png files being
handled via templateFormats, but in reality they're configured to be
located in special css and img directories and handled via
addPassthroughCopy().

fix: add `tr` element for valid markup

Signed-off-by: Jens Oliver Meiert <jens@meiert.com>

fix: convert URLs in post content

Signed-off-by: Jens Oliver Meiert <jens@meiert.com>

We don’t need to manage this tags list in two places.

Restore the 4 hundos

Additional safety for head check

Only for non-empty collections.

Updates deps, including new major version of markdown-it-anchor.

Restore old luxon to keep Node compat levels.

Update to Eleventy 1.0

Removes Travis CI configuration file.

Upgrade syntax highlighter to 4.0 and update example to use diff syntax

Remove alias

Switch devDeps to deps

Clean up the commands

Missed a diff syntax example

Update to 1.0.1

Adds `<meta name="generator">` to eleventy-base-blog

Update deps

Update the Node default

Add link to deployment docs

Copy tweaks

Use `metadata.language` for the `lang` attribute

It's already `en` by default.

Replace tag with eleventyNavigation in navigation instructions

Top level navigation has been updated in 11ty/eleventy-base-blog@c9018fa to use `eleventyNavigation` instead of the `nav` tag. We have to update the readme file to also account for this change.

Removes `nav` from filtered tag list for #100

Fix usage of `level` in the options object for `markdown-it-anchor`

Update README.md

Add `@11ty/` prefix to <kbd>eleventy</kbd> commands. (Per: https://www.11ty.dev/docs/usage/)

FIxes #120

Introduce dark mode and add fonts to base variables

update warning color too

Update index.css

Some variable cleanup and color changes

Update dependencies

Fixes 11ty/eleventy-base-blog#94

Switch to use 1.0+ slugify filter instead

Fixes 11ty/eleventy-base-blog#91

Fixes 11ty/eleventy-base-blog#87

Fix 11ty/eleventy-base-blog#86

Eleventy Base Blog 7.0
  • Loading branch information
zachleat authored and bennypowers committed Jul 18, 2022
0 parents commit c1ceda6
Show file tree
Hide file tree
Showing 36 changed files with 1,071 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
134 changes: 134 additions & 0 deletions .eleventy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
const fs = require("fs");

const { DateTime } = require("luxon");
const markdownIt = require("markdown-it");
const markdownItAnchor = require("markdown-it-anchor");

const pluginRss = require("@11ty/eleventy-plugin-rss");
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const pluginNavigation = require("@11ty/eleventy-navigation");

module.exports = function(eleventyConfig) {
// Copy the `img` and `css` folders to the output
eleventyConfig.addPassthroughCopy("img");
eleventyConfig.addPassthroughCopy("css");

// Add plugins
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(pluginSyntaxHighlight);
eleventyConfig.addPlugin(pluginNavigation);

eleventyConfig.addFilter("readableDate", dateObj => {
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat("dd LLL yyyy");
});

// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
eleventyConfig.addFilter('htmlDateString', (dateObj) => {
return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd');
});

// Get the first `n` elements of a collection.
eleventyConfig.addFilter("head", (array, n) => {
if(!Array.isArray(array) || array.length === 0) {
return [];
}
if( n < 0 ) {
return array.slice(n);
}

return array.slice(0, n);
});

// Return the smallest number argument
eleventyConfig.addFilter("min", (...numbers) => {
return Math.min.apply(null, numbers);
});

function filterTagList(tags) {
return (tags || []).filter(tag => ["all", "nav", "post", "posts"].indexOf(tag) === -1);
}

eleventyConfig.addFilter("filterTagList", filterTagList)

// Create an array of all tags
eleventyConfig.addCollection("tagList", function(collection) {
let tagSet = new Set();
collection.getAll().forEach(item => {
(item.data.tags || []).forEach(tag => tagSet.add(tag));
});

return filterTagList([...tagSet]);
});

// Customize Markdown library and settings:
let markdownLibrary = markdownIt({
html: true,
linkify: true
}).use(markdownItAnchor, {
permalink: markdownItAnchor.permalink.ariaHidden({
placement: "after",
class: "direct-link",
symbol: "#"
}),
level: [1,2,3,4],
slugify: eleventyConfig.getFilter("slugify")
});
eleventyConfig.setLibrary("md", markdownLibrary);

// Override Browsersync defaults (used only with --serve)
eleventyConfig.setBrowserSyncConfig({
callbacks: {
ready: function(err, browserSync) {
const content_404 = fs.readFileSync('_site/404.html');

browserSync.addMiddleware("*", (req, res) => {
// Provides the 404 content without redirect.
res.writeHead(404, {"Content-Type": "text/html; charset=UTF-8"});
res.write(content_404);
res.end();
});
},
},
ui: false,
ghostMode: false
});

return {
// Control which files Eleventy will process
// e.g.: *.md, *.njk, *.html, *.liquid
templateFormats: [
"md",
"njk",
"html",
"liquid"
],

// Pre-process *.md files with: (default: `liquid`)
markdownTemplateEngine: "njk",

// Pre-process *.html files with: (default: `liquid`)
htmlTemplateEngine: "njk",

// -----------------------------------------------------------------
// If your site deploys to a subdirectory, change `pathPrefix`.
// Don’t worry about leading and trailing slashes, we normalize these.

// If you don’t have a subdirectory, use "" or "/" (they do the same thing)
// This is only used for link URLs (it does not affect your file structure)
// Best paired with the `url` filter: https://www.11ty.dev/docs/filters/url/

// You can also pass this in on the command line using `--pathprefix`

// Optional (default is shown)
pathPrefix: "/",
// -----------------------------------------------------------------

// These are all optional (defaults are shown):
dir: {
input: ".",
includes: "_includes",
data: "_data",
output: "_site"
}
};
};
1 change: 1 addition & 0 deletions .eleventyignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
README.md
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# These are supported funding model platforms
open_collective: 11ty
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_site/
node_modules/
package-lock.json
Empty file added .nojekyll
Empty file.
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
16
17 changes: 17 additions & 0 deletions 404.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
layout: layouts/home.njk
permalink: 404.html
eleventyExcludeFromCollections: true
---
# Content not found.

Go <a href="{{ '/' | url }}">home</a>.

{#
Read more: https://www.11ty.dev/docs/quicktips/not-found/

This will work for both GitHub pages and Netlify:

* https://help.github.com/articles/creating-a-custom-404-page-for-your-github-pages-site/
* https://www.netlify.com/docs/redirects/#custom-404
#}
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2018 Zach Leatherman @zachleat

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
83 changes: 83 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# eleventy-base-blog

A starter repository showing how to build a blog with the [Eleventy](https://github.com/11ty/eleventy) static site generator.

[![Build Status](https://travis-ci.org/11ty/eleventy-base-blog.svg?branch=master)](https://travis-ci.org/11ty/eleventy-base-blog)

## Demos

- [Netlify](https://eleventy-base-blog.netlify.com/)
- [GitHub Pages](https://11ty.github.io/eleventy-base-blog/)
- [Remix on Glitch](https://glitch.com/~11ty-eleventy-base-blog)

## Deploy this to your own site

Deploy this Eleventy site in just a few clicks on these services:

* [Get your own Eleventy web site on Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/11ty/eleventy-base-blog)
* [Get your own Eleventy web site on Vercel](https://vercel.com/import/project?template=11ty%2Feleventy-base-blog)

Or, read more about [Deploying an Eleventy project](https://www.11ty.dev/docs/deployment/).

## Getting Started

### 1. Clone this Repository

```
git clone https://github.com/11ty/eleventy-base-blog.git my-blog-name
```

### 2. Navigate to the directory

```
cd my-blog-name
```

Specifically have a look at `.eleventy.js` to see if you want to configure any Eleventy options differently.

### 3. Install dependencies

```
npm install
```

### 4. Edit \_data/metadata.json

### 5. Run Eleventy

```
npx @11ty/eleventy
```

Or build and host locally for local development

```
npx @11ty/eleventy --serve
```

Or build automatically when a template changes:

```
npx @11ty/eleventy --watch
```

Or in debug mode:

```
DEBUG=* npx @11ty/eleventy
```

### Implementation Notes

- `about/index.md` shows how to add a content page.
- `posts/` has the blog posts but really they can live in any directory. They need only the `post` tag to be added to this collection.
- Use the `eleventyNavigation` key in your front matter to add a template to the top level site navigation. For example, this is in use on `index.njk` and `about/index.md`.
- Content can be any template format (blog posts needn’t be markdown, for example). Configure your supported templates in `.eleventy.js` -> `templateFormats`.
- The `css` and `img` directories in the input directory will be copied to the output folder (via `addPassthroughCopy()` in the `.eleventy.js` file).
- The blog post feed template is in `feed/feed.njk`. This is also a good example of using a global data files in that it uses `_data/metadata.json`.
- This example uses three layouts:
- `_includes/layouts/base.njk`: the top level HTML structure
- `_includes/layouts/home.njk`: the home page template (wrapped into `base.njk`)
- `_includes/layouts/post.njk`: the blog post template (wrapped into `base.njk`)
- `_includes/postlist.njk` is a Nunjucks include and is a reusable component used to display a list of all the posts. `index.njk` has an example of how to use it.

21 changes: 21 additions & 0 deletions _data/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"title": "Your Blog Name",
"url": "https://example.com/",
"language": "en",
"description": "I am writing about my experiences as a naval navel-gazer.",
"feed": {
"subtitle": "I am writing about my experiences as a naval navel-gazer.",
"filename": "feed.xml",
"path": "/feed/feed.xml",
"id": "https://example.com/"
},
"jsonfeed": {
"path": "/feed/feed.json",
"url": "https://example.com/feed/feed.json"
},
"author": {
"name": "Your Name Here",
"email": "youremailaddress@example.com",
"url": "https://example.com/about-me/"
}
}
48 changes: 48 additions & 0 deletions _includes/layouts/base.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<!doctype html>
<html lang="{{ metadata.language }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title or metadata.title }}</title>
<meta name="description" content="{{ description or metadata.description }}">
<meta name="generator" content="{{ eleventy.generator }}">

<link rel="stylesheet" href="{{ '/css/index.css' | url }}">
<link rel="stylesheet" href="{{ '/css/prism-base16-monokai.dark.css' | url }}">
<link rel="stylesheet" href="{{ '/css/prism-diff.css' | url }}">
<link rel="alternate" href="{{ metadata.feed.path | url }}" type="application/atom+xml" title="{{ metadata.title }}">
<link rel="alternate" href="{{ metadata.jsonfeed.path | url }}" type="application/json" title="{{ metadata.title }}">
</head>
<body>
<header>
<h1 class="home"><a href="{{ '/' | url }}">{{ metadata.title }}</a></h1>

{#- Read more about `eleventy-navigation` at https://www.11ty.dev/docs/plugins/navigation/ #}
<ul class="nav">
{%- for entry in collections.all | eleventyNavigation %}
<li class="nav-item{% if entry.url == page.url %} nav-item-active{% endif %}"><a href="{{ entry.url | url }}">{{ entry.title }}</a></li>
{%- endfor %}
</ul>
</header>

<main{% if templateClass %} class="{{ templateClass }}"{% endif %}>

<!-- Delete this message -->
<div class="infobox">
<ol>
<li>Edit the <code>_data/metadata.json</code> with your blog’s information.</li>
<li>(Optional) Edit <code>.eleventy.js</code> with your <a href="https://www.11ty.dev/docs/config/">configuration preferences</a>.</li>
<li>Delete this message from <code>_includes/layouts/base.njk</code>.</li>
</ol>
<p><em>This is an <a href="https://www.11ty.dev/">Eleventy project</a> created from the <a href="https://github.com/11ty/eleventy-base-blog"><code>eleventy-base-blog</code> repo</a>.</em></p>
</div>
<!-- Stop deleting -->

{{ content | safe }}
</main>

<footer></footer>

<!-- Current page: {{ page.url | url }} -->
</body>
</html>
5 changes: 5 additions & 0 deletions _includes/layouts/home.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
layout: layouts/base.njk
templateClass: tmpl-home
---
{{ content | safe }}
25 changes: 25 additions & 0 deletions _includes/layouts/post.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
layout: layouts/base.njk
templateClass: tmpl-post
---
<h1>{{ title }}</h1>

<time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time>
{%- for tag in tags | filterTagList %}
{%- set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
<a href="{{ tagUrl | url }}" class="post-tag">{{ tag }}</a>
{%- endfor %}

{{ content | safe }}

{%- if collections.posts %}
{%- set nextPost = collections.posts | getNextCollectionItem(page) %}
{%- set previousPost = collections.posts | getPreviousCollectionItem(page) %}
{%- if nextPost or previousPost %}
<hr>
<ul>
{%- if nextPost %}<li>Next: <a href="{{ nextPost.url | url }}">{{ nextPost.data.title }}</a></li>{% endif %}
{%- if previousPost %}<li>Previous: <a href="{{ previousPost.url | url }}">{{ previousPost.data.title }}</a></li>{% endif %}
</ul>
{%- endif %}
{%- endif %}
12 changes: 12 additions & 0 deletions _includes/postslist.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<ol reversed class="postlist" style="counter-reset: start-from {{ (postslistCounter or postslist.length) + 1 }}">
{% for post in postslist | reverse %}
<li class="postlist-item{% if post.url == url %} postlist-item-active{% endif %}">
<a href="{{ post.url | url }}" class="postlist-link">{% if post.data.title %}{{ post.data.title }}{% else %}<code>{{ post.url }}</code>{% endif %}</a>
<time class="postlist-date" datetime="{{ post.date | htmlDateString }}">{{ post.date | readableDate }}</time>
{% for tag in post.data.tags | filterTagList %}
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
<a href="{{ tagUrl | url }}" class="post-tag">{{ tag }}</a>
{% endfor %}
</li>
{% endfor %}
</ol>
Loading

0 comments on commit c1ceda6

Please sign in to comment.