Шаблон:НавигацияМодуль: различия между версиями
Внешний вид
Admin (обсуждение | вклад) Новая страница: «local p = {} function p.navmenu(frame) local args = frame:getParent().args local currentTitle = mw.title.getCurrentTitle() -- Собираем все категории local categories = {} for key, value in pairs(args) do if string.match(key, '^category%d+$') then local num = string.match(key, 'category(%d+)') categories[tonumber(num)] = { name = value, subitems...» |
Admin (обсуждение | вклад) Нет описания правки |
||
Строка 5: | Строка 5: | ||
local currentTitle = mw.title.getCurrentTitle() | local currentTitle = mw.title.getCurrentTitle() | ||
local categories = {} | local categories = {} | ||
Строка 18: | Строка 17: | ||
end | end | ||
for key, value in pairs(args) do | for key, value in pairs(args) do | ||
if string.match(key, '^subitems%d+$') then | if string.match(key, '^subitems%d+$') then | ||
Строка 33: | Строка 31: | ||
end | end | ||
local sortedCategories = {} | local sortedCategories = {} | ||
for num in pairs(categories) do | for num in pairs(categories) do | ||
Строка 40: | Строка 37: | ||
table.sort(sortedCategories) | table.sort(sortedCategories) | ||
local html = {} | local html = {} | ||
table.insert(html, '<nav class="wiki-nav-menu">') | table.insert(html, '<nav class="wiki-nav-menu">') | ||
Строка 46: | Строка 42: | ||
table.insert(html, '<ul class="nav-main-list">') | table.insert(html, '<ul class="nav-main-list">') | ||
for _, num in ipairs(sortedCategories) do | for _, num in ipairs(sortedCategories) do | ||
local category = categories[num] | local category = categories[num] | ||
Строка 52: | Строка 47: | ||
table.insert(html, '<li class="nav-category">') | table.insert(html, '<li class="nav-category">') | ||
if string.find(category.name, '&') then | if string.find(category.name, '&') then | ||
local parts = mw.text.split(category.name, '&') | local parts = mw.text.split(category.name, '&') | ||
Строка 64: | Строка 58: | ||
end | end | ||
if #category.subitems > 0 then | if #category.subitems > 0 then | ||
table.insert(html, '<ul class="nav-sub-list">') | table.insert(html, '<ul class="nav-sub-list">') |
Текущая версия от 07:26, 20 октября 2025
local p = {}
function p.navmenu(frame)
local args = frame:getParent().args local currentTitle = mw.title.getCurrentTitle() local categories = {} for key, value in pairs(args) do if string.match(key, '^category%d+$') then local num = string.match(key, 'category(%d+)') categories[tonumber(num)] = { name = value, subitems = {} } end end for key, value in pairs(args) do if string.match(key, '^subitems%d+$') then local num = string.match(key, 'subitems(%d+)') num = tonumber(num) if categories[num] then -- Разделяем подпункты по точке с запятой local subitems = mw.text.split(value, ';') for _, item in ipairs(subitems) do table.insert(categories[num].subitems, mw.text.trim(item)) end end end end local sortedCategories = {} for num in pairs(categories) do table.insert(sortedCategories, num) end table.sort(sortedCategories) local html = {} table.insert(html, '<nav class="wiki-nav-menu">')
table.insert(html, '
') table.insert(html, '
')
table.insert(html, '</nav>') return table.concat(html, '\n')
end
return p