Update post listing tags to use created field throughout

Tag names changed from posts-date-*/posts-datetime-* to posts-created-*.
Renderer updated to filter, sort, group, and display using the created
field from search.json. Page meta display also updated to drop date/datetime
fallbacks. Samplesite posts and pages updated to match.

https://claude.ai/code/session_013A4egzphocyto9bvZ76dxf
This commit is contained in:
Claude 2026-05-09 13:41:00 +00:00
parent a6eb3119e0
commit 5e4612c01d
No known key found for this signature in database
11 changed files with 29 additions and 44 deletions

View file

@ -148,13 +148,13 @@ Embed post lists in pages using fenced blocks:
````markdown
```mdcms
posts-datetime-reversechronological
posts-created-reversechronological
limit: 10
paginate: yes
```
````
Reliable tags (others are known-broken): `posts-datetime-chronological-byyearmonth`, `posts-datetime-reversechronological`. Use `created` frontmatter (format: `YYYY-MM-DD HH:MM`) for posts.
Reliable tags (others are known-broken): `posts-created-chronological-byyearmonth`, `posts-created-reversechronological`. Use `created` frontmatter (format: `YYYY-MM-DD HH:MM`) for posts.
## Release workflow

View file

@ -1369,14 +1369,14 @@ function fmtDatetime(dtStr) {
function parsePostTagName(name) {
var m = name.match(
/^posts-(date|datetime)-(chronological|reversechronological)(?:-(byyear|byyearmonth|lastyear|lastmonth))?$/
/^posts-created-(chronological|reversechronological)(?:-(byyear|byyearmonth|lastyear|lastmonth))?$/
);
if (!m) return null;
return { field: m[1], order: m[2], modifier: m[3] || null };
return { order: m[1], modifier: m[2] || null };
}
function getPostEntries(parsed, options) {
const { field, order, modifier } = parsed;
const { order, modifier } = parsed;
// Start with posts from search index
let posts = (searchIndex || []).filter(function(e) {
@ -1389,11 +1389,7 @@ function fmtDatetime(dtStr) {
}
// Field filter
if (field === 'datetime') {
posts = posts.filter(function(e) { return !!e.datetime; });
} else {
posts = posts.filter(function(e) { return !!e.date; });
}
posts = posts.filter(function(e) { return !!e.created; });
// Time-window filter
if (modifier === 'lastyear' || modifier === 'lastmonth') {
@ -1402,15 +1398,13 @@ function fmtDatetime(dtStr) {
if (modifier === 'lastyear') cutoff.setDate(cutoff.getDate() - 365);
else cutoff.setDate(cutoff.getDate() - 30);
posts = posts.filter(function(e) {
var raw = field === 'datetime' ? e.datetime.replace(' ', 'T') : e.date;
return new Date(raw) >= cutoff;
return new Date(e.created.replace(' ', 'T')) >= cutoff;
});
}
// Sort
var sortKey = field === 'datetime' ? 'datetime' : 'date';
posts.sort(function(a, b) {
var da = a[sortKey] || '', db = b[sortKey] || '';
var da = a.created || '', db = b.created || '';
return order === 'chronological' ? da.localeCompare(db) : db.localeCompare(da);
});
@ -1523,7 +1517,6 @@ function fmtDatetime(dtStr) {
var opts = tag.options;
var posts = getPostEntries(parsed, opts);
var field = parsed.field;
var modifier = parsed.modifier;
var paginate = opts.paginate || 'no';
var limitVal = opts.limit || 'all';
@ -1532,7 +1525,7 @@ function fmtDatetime(dtStr) {
// Format each entry
var formatted = posts.map(function(p) {
return {
display: field === 'datetime' ? fmtDatetime(p.datetime) : fmtDate(p.date),
display: fmtDatetime(p.created),
title: p.title,
file: p.file
};
@ -1565,12 +1558,10 @@ function fmtDatetime(dtStr) {
// Grouped by year (or year+month)
function getYear(p) {
var d = field === 'datetime' ? p.datetime : p.date;
return d ? d.substring(0, 4) : 'Unknown';
return p.created ? p.created.substring(0, 4) : 'Unknown';
}
function getYearMonth(p) {
var d = field === 'datetime' ? p.datetime : p.date;
return d ? d.substring(0, 7) : 'Unknown';
return p.created ? p.created.substring(0, 7) : 'Unknown';
}
function monthLabel(ym) {
var m = parseInt(ym.substring(5, 7), 10);
@ -2189,12 +2180,12 @@ function fmtDatetime(dtStr) {
hydrateMdcmsTags();
const firstH = contentEl.querySelector('.md-content h1, .md-content h2');
if (firstH && (meta.author || meta.created || meta.date || meta.datetime)) {
if (firstH && (meta.author || meta.created)) {
const metaEl = document.createElement('div');
metaEl.className = 'page-meta';
let metaText = '';
if (meta.author) metaText += meta.author;
const displayDate = meta.datetime || meta.date || meta.created;
const displayDate = meta.created;
if (displayDate) {
if (metaText) metaText += ' | ';
metaText += 'Published ' + formatDate(displayDate);

View file

@ -18,7 +18,7 @@ If you want to test `MD-CMS` you can grab `samplesite` from the repo and place t
## Reverse chronological (newest first)
```mdcms
posts-date-reversechronological
posts-created-reversechronological
limit: 3
paginate: no
```
@ -26,25 +26,25 @@ paginate: no
## Chronological (oldest first)
```mdcms
posts-date-chronological
posts-created-chronological
limit: all
paginate: none
```
## By year (date, reverse chrono)
## By year (reverse chrono)
```mdcms
posts-date-reversechronological-byyear
posts-created-reversechronological-byyear
limit: all
defaultyear: current
selectyear: yes
paginate: none
```
## By year+month (datetime, chrono)
## By year+month (chrono)
```mdcms
posts-datetime-chronological-byyearmonth
posts-created-chronological-byyearmonth
limit: all
defaultyear: 2024
selectyear: yes
@ -53,7 +53,7 @@ selectyear: yes
## Last 30 days
```mdcms
posts-date-reversechronological-lastmonth
posts-created-reversechronological-lastmonth
limit: all
paginate: none
```
@ -61,7 +61,7 @@ paginate: none
## Paginated (2 per page)
```mdcms
posts-datetime-reversechronological
posts-created-reversechronological
limit: 2
paginate: yes
```

View file

@ -11,7 +11,7 @@ Stay up to date with announcements, product updates, and industry insights from
## All Posts
```mdcms
posts-date-reversechronological-byyear
posts-created-reversechronological-byyear
limit: all
defaultyear: current
selectyear: yes

View file

@ -11,7 +11,7 @@ Bli oppdatert med kunngjøringer, produktoppdateringer og bransjeinnsikter fra A
## Alle innlegg
```mdcms
posts-date-reversechronological-byyear
posts-created-reversechronological-byyear
limit: all
defaultyear: current
selectyear: yes

View file

@ -1,7 +1,6 @@
---
title: Q4 2022 Performance Report
date: 2022-11-15
datetime: 2022-11-15 09:00
created: 2022-11-15 09:00
author: Sarah Chen
---

View file

@ -1,7 +1,6 @@
---
title: Introducing Advanced Analytics Dashboard
date: 2023-03-22
datetime: 2023-03-22 14:30
created: 2023-03-22 14:30
author: David Okonkwo
---

View file

@ -1,7 +1,6 @@
---
title: Security Update - November 2023
date: 2023-11-10
datetime: 2023-11-10 11:45
created: 2023-11-10 11:45
author: Security Team
---

View file

@ -1,7 +1,6 @@
---
title: 2024 Product Roadmap
date: 2024-01-30
datetime: 2024-01-30 10:00
created: 2024-01-30 10:00
author: David Okonkwo
---

View file

@ -1,7 +1,6 @@
---
title: Q2 2024 Customer Success Stories
date: 2024-07-08
datetime: 2024-07-08 15:20
created: 2024-07-08 15:20
author: Maria Garcia
---

View file

@ -1,7 +1,6 @@
---
title: Version 9.0 Released — A New Era
date: 2026-04-10
datetime: 2026-04-10 13:00
created: 2026-04-10 13:00
author: Sarah Chen
---