From 1d2b0b4629d8c274b0a0ea0224bfa002e053987d Mon Sep 17 00:00:00 2001 From: Ben Aultowski Date: Sat, 27 Dec 2025 01:31:07 -0500 Subject: [PATCH] Fixed bug in edit-on.njk, hopefully. Initial pass at mixes. --- eleventy.config.js | 3 +- src/_config/collections.js | 29 ++++++++++++++++++- src/_includes/partials/card-mix-track.njk | 14 +++++++++ src/_includes/partials/edit-on.njk | 2 +- src/_layouts/mix.njk | 20 +++++++++++++ src/common/_redirects.njk | 7 ++++- .../mixes/tomorrowsbacon/01-track-one.md | 12 ++++++++ .../projects/mixes/tomorrowsbacon/index.md | 7 +++++ 8 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/_includes/partials/card-mix-track.njk create mode 100644 src/_layouts/mix.njk create mode 100644 src/pages/projects/mixes/tomorrowsbacon/01-track-one.md create mode 100644 src/pages/projects/mixes/tomorrowsbacon/index.md diff --git a/eleventy.config.js b/eleventy.config.js index b6d5e7f..34dc380 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -15,7 +15,7 @@ dotenv.config(); import yaml from 'js-yaml'; // config import -import {getAllPosts, showInSitemap, tagList} from './src/_config/collections.js'; +import {getAllPosts, showInSitemap, tagList, goPages} from './src/_config/collections.js'; import events from './src/_config/events.js'; import filters from './src/_config/filters.js'; import plugins from './src/_config/plugins.js'; @@ -42,6 +42,7 @@ export default async function (eleventyConfig) { eleventyConfig.addCollection('allPosts', getAllPosts); eleventyConfig.addCollection('showInSitemap', showInSitemap); eleventyConfig.addCollection('tagList', tagList); + eleventyConfig.addCollection('goPages', goPages); // --------------------- Plugins eleventyConfig.addPlugin(plugins.htmlConfig); diff --git a/src/_config/collections.js b/src/_config/collections.js index a95b365..e83af3b 100644 --- a/src/_config/collections.js +++ b/src/_config/collections.js @@ -13,7 +13,34 @@ export const tagList = collection => { const tagsSet = new Set(); collection.getAll().forEach(item => { if (!item.data.tags) return; - item.data.tags.filter(tag => !['posts', 'docs', 'all'].includes(tag)).forEach(tag => tagsSet.add(tag)); + item.data.tags.filter(tag => !['posts', 'docs', 'all', 'mix', 'project'].includes(tag)).forEach(tag => tagsSet.add(tag)); }); return Array.from(tagsSet).sort(); }; + +/** goPage URLs. these are defined within a page's Markdown frontmatter as 'go:', and are output as _redirects. the webserver can read this file and redirect users who navigate directly to URL defined in this collection, they will be redirected to the page. **/ +export const goPages = collectionApi => { + return collectionApi.getAll().filter(p => p.data.go); +}; + +/** All tracks, grouped by project and sorted */ +export const tracksByProject = collectionApi => { + const tracks = {}; + // Get all pages that have a track_number + collectionApi.getAll() + .filter(item => item.data.track_number !== undefined) + .forEach(item => { + const project = item.data.project; + if (!tracks[project]) { + tracks[project] = []; + } + tracks[project].push(item); + }); + + // Sort tracks within each project + for (const project in tracks) { + tracks[project].sort((a, b) => a.data.track_number - b.data.track_number); + } + + return tracks; +}; \ No newline at end of file diff --git a/src/_includes/partials/card-mix-track.njk b/src/_includes/partials/card-mix-track.njk new file mode 100644 index 0000000..8eb2c90 --- /dev/null +++ b/src/_includes/partials/card-mix-track.njk @@ -0,0 +1,14 @@ +{% set headingLevel = headingLevel | default("h2") %} +{% set definedDate = definedDate | default(item.date) %} + + + <{{ headingLevel }} slot="headline" class="text-step-2"> + {{ item.data.title }} + + {%- if item.data.draft -%}draft{%- endif %} {% include "partials/date.njk" %} +
{{ item.data.description | markdownFormat | safe }}
+
+ +{% css "local" %} + {% include "css/custom-card.css" %} +{% endcss %} diff --git a/src/_includes/partials/edit-on.njk b/src/_includes/partials/edit-on.njk index 9c3be7d..c1ff878 100644 --- a/src/_includes/partials/edit-on.njk +++ b/src/_includes/partials/edit-on.njk @@ -2,7 +2,7 @@

{{ meta[page.lang].blog.githubEdit }} - {{ meta.viewRepo.infoText }}.

diff --git a/src/_layouts/mix.njk b/src/_layouts/mix.njk new file mode 100644 index 0000000..0d37a49 --- /dev/null +++ b/src/_layouts/mix.njk @@ -0,0 +1,20 @@ +--- +layout: base +--- + +
+
+

{{ title }}

+ {{ content | safe }} + +

Tracks

+
+ + {% set projectTracks = collections.tracksByProject[project] %} + {% for track in projectTracks %} + {% include "partials/card-mix-track.njk" %} + {% endfor %} + +
+
+
diff --git a/src/common/_redirects.njk b/src/common/_redirects.njk index b4ac56b..e5cd130 100644 --- a/src/common/_redirects.njk +++ b/src/common/_redirects.njk @@ -9,4 +9,9 @@ excludeFromSitemap: true {{ oldUrl }} {{ page.url }} {%- endfor %} {%- endif -%} -{%- endfor -%} \ No newline at end of file +{%- endfor -%} + + +{% for page in collections.goPages %} +/go/{{ page.data.go }} {{ page.url }} +{% endfor %} \ No newline at end of file diff --git a/src/pages/projects/mixes/tomorrowsbacon/01-track-one.md b/src/pages/projects/mixes/tomorrowsbacon/01-track-one.md new file mode 100644 index 0000000..903b471 --- /dev/null +++ b/src/pages/projects/mixes/tomorrowsbacon/01-track-one.md @@ -0,0 +1,12 @@ +--- +title: "Greenpeace" +artist: "James" +date: 2001-01-01 +project: TomorrowsBacon +track_number: 1 +--- +## Notes +Notes go here. + +## Lyrics +Lyrics go here. \ No newline at end of file diff --git a/src/pages/projects/mixes/tomorrowsbacon/index.md b/src/pages/projects/mixes/tomorrowsbacon/index.md new file mode 100644 index 0000000..448ce23 --- /dev/null +++ b/src/pages/projects/mixes/tomorrowsbacon/index.md @@ -0,0 +1,7 @@ +--- +layout: mix +title: "Tomorrow's Bacon" +project: TomorrowsBacon +permalink: /mixes/tomorrowsbacon/index.html +--- +Nothing goes here. \ No newline at end of file