Шаблон:НавигацияМодуль: различия между версиями
Внешний вид
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...» |
(нет различий)
|
Версия от 07:23, 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)
-- Начинаем формировать HTML
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