Modul:NewsArtikel: Unterschied zwischen den Versionen
schlüssel-Trennzeichen: | → , (Pipe ist MediaWiki-Parametertrennzeichen) (via update-page on MediaWiki MCP Server) |
Brotkrümelnavigation hinzugefügt: News > YYYY > Monat YYYY > Artikelname (auto aus datum) (via update-page on MediaWiki MCP Server) |
||
| Zeile 9: | Zeile 9: | ||
-- ----------------------------------------------------------------------- | -- ----------------------------------------------------------------------- | ||
-- | -- Monatsnamen (DE) | ||
-- ----------------------------------------------------------------------- | -- ----------------------------------------------------------------------- | ||
local monate = { | local monate = { | ||
| Zeile 16: | Zeile 16: | ||
} | } | ||
-- ----------------------------------------------------------------------- | |||
-- Hilfsfunktion: Datum YYYY-MM-DD → lesbares deutsches Datum | |||
-- ----------------------------------------------------------------------- | |||
local function formatDatum(datum) | local function formatDatum(datum) | ||
if not datum or datum == '' then return '' end | if not datum or datum == '' then return '' end | ||
| Zeile 23: | Zeile 26: | ||
local mname = monate[mi] or m | local mname = monate[mi] or m | ||
return string.format('%d. %s %s', tonumber(d), mname, y) | return string.format('%d. %s %s', tonumber(d), mname, y) | ||
end | |||
-- ----------------------------------------------------------------------- | |||
-- Brotkrümelnavigation: News > YYYY > Monat YYYY > Artikelname | |||
-- ----------------------------------------------------------------------- | |||
local function breadcrumb(datum, pageName) | |||
if not datum or datum == '' then return '' end | |||
local y, m = datum:match('^(%d%d%d%d)%-(%d%d)') | |||
if not y then return '' end | |||
local mi = tonumber(m) | |||
local mname = monate[mi] or m | |||
local monatLabel = mname .. ' ' .. y | |||
-- Archivpfad: News:Archiv/2023/01 | |||
local archivMonat = string.format('News:Archiv/%s/%s', y, m) | |||
local archivJahr = 'News:Archiv/' .. y | |||
local parts = { | |||
'<span class="isin-breadcrumb" style="font-size:85%;color:#555;display:block;margin-bottom:0.4em;">', | |||
'[[News:|News]]', | |||
' › ', | |||
'[[' .. archivJahr .. '|' .. y .. ']]', | |||
' › ', | |||
'[[' .. archivMonat .. '|' .. monatLabel .. ']]', | |||
' › ', | |||
pageName, | |||
'</span>', | |||
} | |||
return table.concat(parts, '') | |||
end | end | ||
| Zeile 91: | Zeile 123: | ||
local siteName = mw.site.siteName | local siteName = mw.site.siteName | ||
-- Revisionsdatum via preprocess | -- Revisionsdatum via preprocess | ||
local revDate = pframe:preprocess('{{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}') | local revDate = pframe:preprocess('{{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}') | ||
| Zeile 98: | Zeile 130: | ||
local out = {} | local out = {} | ||
-- 0. Brotkrümelnavigation (immer, wenn datum vorhanden) | |||
local bc = breadcrumb(datum, pageName) | |||
if bc ~= '' then | |||
table.insert(out, bc) | |||
end | |||
-- 1. Status-Banner + Kategorien | -- 1. Status-Banner + Kategorien | ||
| Zeile 133: | Zeile 171: | ||
end | end | ||
local seoArgs = { [1] = '' } | local seoArgs = { [1] = '' } | ||
seoArgs['title'] = pageName .. ' - ' .. siteName | seoArgs['title'] = pageName .. ' - ' .. siteName | ||