АВТОМАТИЧЕСКИ ДОБАВЛЯЕМОЕ ВРЕМЯ
I. Создан файл рядом с постами
blog_src/blog/posts/posts.11tydata.js
Как это работает теперь:
- Создал файл поста → закоммитил.
- Eleventy:
- берёт дату первого коммита файла,
- кладёт её в
publishedAt.
- Шаблон:
- показывает
publishedAt, - если вдруг его нет — использует
date.
- показывает
Код файла posts.11tydata.js:
const { execSync } = require("child_process");
const cache = new Map();
Здесь git log … — это shell-команда, передаваемая в execSync.
function getFirstCommitISO(filePath) { if (cache.has(filePath)) return cache.get(filePath);
let value = null; try { const out = execSync( git log --follow --reverse --format=%aI -- "${filePath}", { stdio: ["ignore", "pipe", "ignore"] } ).toString().trim();
if (out) value = out.split("\n")[0].trim(); } catch { value = null; }
cache.set(filePath, value); return value; }
module.exports = { eleventyComputed: { publishedAt: (data) => getFirstCommitISO(data.page.inputPath) || data.publishedAt || null, }, };
II. В layout-post.njk заменён вывод времени
Используется следующая разметка:
{% set pub = publishedAt or date %}
После правки — порядок действий
- Сохранить файл.
- Закоммитить и запушить (иначе
publishedAtне появится).
Команды:
git add blog_src/blog/posts/2026-02-07-time.md git commit -m "Add post about automatic publish time" git push