Шаблон:Вкладки
ПримерРезультатСтарый код шаблонаНовый кодГде использоватьКак улучшитьОграничения
{{Вкладки |Лор| * [[Антисеттинг]] * [[Магия]] |Роли| * Злодей британец * Конченный идиот * Пубертатная язва |Актёры| * Трус * Балбес * Бывалый }}
ЛорРолиАктёры
<div style="text-align:left;border-bottom:1px solid #aaaaaa;margin-top:10px"><p> {{#if:{{{1|}}}|<span class="tab_click tab_active" id="tab_id_{{{1}}}">{{{1}}}</span>}}{{#if:{{{3|}}}|<span class="tab_click" id="tab_id_{{{3}}}">{{{3}}}</span>}}{{#if:{{{5|}}}|<span class="tab_click" id="tab_id_{{{5}}}">{{{5}}}</span>}}{{#if:{{{7|}}}|<span class="tab_click" id="tab_id_{{{7}}}">{{{7}}}</span>}}{{#if:{{{9|}}}|<span class="tab_click" id="tab_id_{{{9}}}">{{{9}}}</span>}}{{#if:{{{11|}}}|<span class="tab_click" id="tab_id_{{{11}}}">{{{11}}}</span>}}</p></div> <div> {{#if:{{{2|}}}|<div id="tab_id_{{{1}}}"> {{{2}}} </div> }} {{#if:{{{4|}}}|<div id="tab_id_{{{3}}}" style="display: none;"> {{{4}}} </div> }} {{#if:{{{6|}}}|<div id="tab_id_{{{5}}}" style="display: none;"> {{{6}}} </div> }} {{#if:{{{8|}}}|<div id="tab_id_{{{7}}}" style="display: none;"> {{{8}}} </div> }} {{#if:{{{10|}}}|<div id="tab_id_{{{9}}}" style="display: none;"> {{{10}}} </div> }} {{#if:{{{12|}}}|<div id="tab_id_{{{11}}}" style="display: none;"> {{{12}}} </div> }} </div>
local p = {}
p.sortlist = function (frame) local args = require('Module:Arguments').getArgs(frame)
local otstup= ' • ' local list_end= ' … '
if args['отступ'] ~= nil then otstup=args['отступ'] end
local res_t = {} local res=""
for i in ipairs(args) do table.insert (res_t, args[i]) end
table.sort ( res_t, function (a, b) return a < b end )
for i in ipairs(res_t) do res=res..res_t[i]..otstup end
return res..list_end end
p.vkladki= function ( frame )
local args = require('Module:Arguments').getArgs(frame, {
trim = false,
removeBlanks = false})
if args[1] == nil then return 'Нет заголовка, видимо Шаблон:Вкладки вызван без параметров' end if args[2] == nil then return 'Нет текста вкладки, видимо Шаблон:Вкладки вызван без 2-го параметра' end
local h='' local b='
h=h..''..args[1]..''
b=b..'local i=3
while true do if args[i] == nil then break end h=h..''..args[i]..'' i=i+2 end
h=h..'i=4
while true do if args[i] == nil then break end
b=b..'i=i+2 end
b=b..'return h..b
end
-- Создать строку в таблице
-- ktable это таблица ключей
-- row это таблица переданных значений
-- empty это элемент, который подставляется в строку, если не было переданного значения
function create_row ( ktable, row, empty )
local row_str=""
for j in ipairs(ktable) do if row[ktable[j]] ~= nil then
row_str=row_str..''..row[ktable[j]]..''else
row_str=row_str..''..empty..''end end return row_str end
-- Сгенерировать таблицу с использованием ключей -- p.tablekey = function ( frame ) local args = require('Module:Arguments').getArgs(frame) if args["ключи"] == nil then -- обязательный параметр return "Не заданы ключи для таблицы" end
local result="" if args["атрибуты"] ~= nil then
result="" else result="i=i+1 end end
while true do if args[i] == nil then if next(row) == nil then break end -- если пусто, то уходим
result=result..''..create_row( keys, row, empty )..'' -- на случай, если что-то осталось break end if args[i]=="конец строки" then result=result..''..create_row( keys, row, empty )..'' i=i+1 row={} else row[args[i]]=args[i+1] i=i+2 end end return result..''..args[i]..' |
---|
end
--Ниже будет код для дам, кавалеров и полотен дня.
p.museum = function ( frame ) local args = require('Module:Arguments').getArgs(frame, { trim = false, removeBlanks = false})
local output
if args["описание"] == nil then return 'Не задан параметр 1, прочитайте документацию шаблона на его странице' end if args["картинка"] == nil then return 'Не задан параметр 2, прочитайте документацию шаблона на его странице' end
output = args["описание"]..'
'..'[[Файл:'..args["картинка"]..'|center|500px]]'
if args["show"] ~= nil and args["hide"] ~= nil then local text= '123123123123123' --TL:DR разобраться как впихнуть спойлер, или придумать аналог.
print(frame:callParserFunction( '#spoiler', { show='test', hide='test2', text} ))
local i=1
while true do if args[i] == nil then break end output=output..args[i]..'[[Файл:'..args[i+1]..'|center|750px]]' i=i+2 end output=output..'}}' end
return output
end
return p
Везде, где много тропов, которые можно разбить по разделам
Переписать на Lua, для масштабируемости. Сейчас максимум 6 вкладок.Сделано!- Найти и применить запретное колдунство для редактуры внутри вкладок.
Вкладки не должны повторяться внутри шаблона, что логично. Рекурсия допустима.