Дополнительные действия
DarkMuse (обсуждение | вклад) Нет описания правки |
DarkMuse (обсуждение | вклад) Нет описания правки |
||
| Строка 12: | Строка 12: | ||
elseif key:match("^note_%d+_%d+$") and value ~= "" then | elseif key:match("^note_%d+_%d+$") and value ~= "" then | ||
-- Вложенные заметки (note_1_1, note_1_2 и т.д.) | -- Вложенные заметки (note_1_1, note_1_2 и т.д.) | ||
local mainKey = key:match("^(note_%d+)_") | local mainKey = key:match("^(note_%d+)_") -- Захватываем только основную часть, например, note_1 | ||
if notes[mainKey] then | if notes[mainKey] then | ||
table.insert(notes[mainKey].subNotes, value) | table.insert(notes[mainKey].subNotes, value) | ||
else | |||
-- Добавим отладочный вывод для проверки | |||
mw.log('Main key not found for', key, 'expected', mainKey) | |||
end | end | ||
end | end | ||
| Строка 25: | Строка 28: | ||
-- Формируем список примечаний | -- Формируем список примечаний | ||
local result = '' | local result = '<ul>' | ||
for key, note in pairs(notes) do | for key, note in pairs(notes) do | ||
result = result .. '<li>' .. note.value | result = result .. '<li>' .. note.value | ||
| Строка 38: | Строка 41: | ||
result = result .. '</li>' | result = result .. '</li>' | ||
end | end | ||
result = result .. '' | result = result .. '</ul>' | ||
return result | return result | ||
Версия от 13:38, 28 сентября 2024
Описание
Модуль RenderSubnotes используется для рендеринга примечаний и действий с изображениями в карточках героев или других информационных блоках. Этот модуль предоставляет две основные функции: renderNotes для отображения примечаний и renderItemsAction для рендеринга действий с изображениями.
Использование
Функция renderNotes
Функция renderNotes используется для отображения примечаний, где примечания могут быть как основными, так и вложенными. Основные примечания задаются параметрами вида note_1, note_2 и так далее. Вложенные примечания задаются параметрами вида note_1_1, note_1_2 и так далее.
Пример использования:
{{#invoke:RenderSubnotes|renderNotes
| note_1 = Примечание 1
| note_1_1 = Подпримечание 1.1
| note_1_2 = Подпримечание 1.2
| note_2 = Примечание 2
}}
Функция renderItemsAction
Функция renderItemsAction используется для отображения действий с изображениями. Описание действия задается параметром вида itemsActionDescr_1, а изображение – параметром itemsActionImage_1_1, где числа после символа подчеркивания должны совпадать для правильной привязки изображения к действию.
Пример использования:
{{#invoke:RenderSubnotes|renderItemsAction
| itemsActionDescr_1 = Описание действия 1
| itemsActionImage_1_1 = action_image_1.png
| itemsActionImage_1_2 = action_image_2.png
| itemsActionDescr_2 = Описание действия 2
| itemsActionImage_2_1 = action_image_3.png
}}
Параметры
Параметры для renderNotes
note_X– основное примечание, гдеX– порядковый номер.note_X_Y– вложенное примечание, гдеX– номер основного примечания, аY– номер вложенного примечания.
Параметры для renderItemsAction
itemsActionDescr_X– описание действия, гдеX– порядковый номер.itemsActionImage_X_Y– изображение для действия, гдеX– номер действия, аY– номер изображения для данного действия.
Примечания
- Основные примечания могут иметь несколько уровней вложенности.
- Изображения для действий должны быть привязаны к правильным действиям с помощью одинаковых порядковых номеров в параметрах.
local p = {}
function p.renderNotes(frame)
local parent = frame:getParent() -- Получаем все параметры родительского шаблона
local notes = {}
-- Проходим по всем параметрам родительского шаблона
for key, value in pairs(parent.args) do
if key:match("^note_%d+$") and value ~= "" then
-- Основные заметки (note_1, note_2 и т.д.)
notes[key] = {value = value, subNotes = {}}
elseif key:match("^note_%d+_%d+$") and value ~= "" then
-- Вложенные заметки (note_1_1, note_1_2 и т.д.)
local mainKey = key:match("^(note_%d+)_") -- Захватываем только основную часть, например, note_1
if notes[mainKey] then
table.insert(notes[mainKey].subNotes, value)
else
-- Добавим отладочный вывод для проверки
mw.log('Main key not found for', key, 'expected', mainKey)
end
end
end
-- Если нет примечаний, выводим сообщение
if next(notes) == nil then
return "Примечаний нет."
end
-- Формируем список примечаний
local result = '<ul>'
for key, note in pairs(notes) do
result = result .. '<li>' .. note.value
if #note.subNotes > 0 then
-- Вложенные заметки
result = result .. '<ul>'
for _, subNote in ipairs(note.subNotes) do
result = result .. '<li>' .. subNote .. '</li>'
end
result = result .. '</ul>'
end
result = result .. '</li>'
end
result = result .. '</ul>'
return result
end
return p