Модуль:CategoryMenu: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
-- Функция для рендеринга категории | |||
function p.renderCategory(paragraphs, contents, categoryName, categoryIndex) | function p.renderCategory(paragraphs, contents, categoryName, categoryIndex) | ||
local html = mw.html.create() | local html = mw.html.create() | ||
Строка 15: | Строка 16: | ||
for i, paragraph in ipairs(paragraphs) do | for i, paragraph in ipairs(paragraphs) do | ||
categoryMenu:tag('div') | if paragraph then | ||
categoryMenu:tag('div') | |||
:addClass('category' .. categoryIndex .. '-paragraph' .. i) | |||
:wikitext(paragraph) | |||
end | |||
end | end | ||
Строка 24: | Строка 27: | ||
for i, contentText in ipairs(contents) do | for i, contentText in ipairs(contents) do | ||
content:tag('div') | if contentText then | ||
content:tag('div') | |||
:addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content') | |||
:wikitext(contentText) | |||
end | |||
end | end | ||
Строка 32: | Строка 37: | ||
end | end | ||
-- Главная функция, которая вызывается в шаблоне | |||
function p.main(frame) | function p.main(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
Строка 59: | Строка 65: | ||
for j = 1, 3 do | for j = 1, 3 do | ||
table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j]) | table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j] or '') | ||
table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content']) | table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'] or '') | ||
end | end | ||
Версия от 19:26, 19 сентября 2024
Для документации этого модуля может быть создана страница Модуль:CategoryMenu/doc
local p = {} -- Функция для рендеринга категории function p.renderCategory(paragraphs, contents, categoryName, categoryIndex) local html = mw.html.create() -- Генерация названия категории html:tag('div') :addClass('category' .. categoryIndex) :wikitext(categoryName) -- Меню local menu = html:tag('div'):addClass('menu-container') local categoryMenu = menu:tag('div'):addClass('menu category' .. categoryIndex .. '-menu') for i, paragraph in ipairs(paragraphs) do if paragraph then categoryMenu:tag('div') :addClass('category' .. categoryIndex .. '-paragraph' .. i) :wikitext(paragraph) end end -- Контент local content = html:tag('div'):addClass('content') for i, contentText in ipairs(contents) do if contentText then content:tag('div') :addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content') :wikitext(contentText) end end return tostring(html) end -- Главная функция, которая вызывается в шаблоне function p.main(frame) local args = frame:getParent().args local html = mw.html.create() -- Генерация списка категорий local categories = html:tag('div'):addClass('categories') for i = 1, 2 do local categoryName = args['category' .. i] if categoryName then categories:tag('div') :addClass('category' .. i) :wikitext(categoryName) end end -- Основной контейнер local mainContainer = html:tag('div'):addClass('main-container') -- Генерация контента для каждой категории for i = 1, 2 do local categoryName = args['category' .. i] if categoryName then local paragraphs = {} local contents = {} for j = 1, 3 do table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j] or '') table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'] or '') end mainContainer:wikitext(p.renderCategory(paragraphs, contents, categoryName, i)) end end return tostring(html) end return p