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:


-- -----------------------------------------------------------------------
-- -----------------------------------------------------------------------
-- Hilfsfunktion: Datum YYYY-MM-DD → lesbares deutsches Datum
-- 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]]',
' &rsaquo; ',
'[[' .. archivJahr  .. '|' .. y .. ']]',
' &rsaquo; ',
'[[' .. archivMonat .. '|' .. monatLabel .. ']]',
' &rsaquo; ',
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 (Magic Words brauchen keinen callParserFunction)
-- 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


-- Argumente für #seo: Index 1 = leerer unnamed param (Pflicht), rest named
local seoArgs = { [1] = '' }
local seoArgs = { [1] = '' }
seoArgs['title']          = pageName .. ' - ' .. siteName
seoArgs['title']          = pageName .. ' - ' .. siteName