Вікікнігі
bewikibooks
https://be.wikibooks.org/wiki/%D0%93%D0%B0%D0%BB%D0%BE%D1%9E%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D0%B0%D1%80%D0%BE%D0%BD%D0%BA%D0%B0
MediaWiki 1.47.0-wmf.5
first-letter
Мультымедыя
Адмысловае
Размовы
Удзельнік
Размовы з удзельнікам
Вікікнігі
Размовы пра Вікікнігі
Файл
Размовы пра файл
MediaWiki
Размовы пра MediaWiki
Шаблон
Размовы пра шаблон
Даведка
Размовы пра даведку
Катэгорыя
Размовы пра катэгорыю
TimedText
TimedText talk
Модуль
Размовы пра модуль
Event
Event talk
Модуль:Infobox
828
3415
8065
2026-06-05T15:54:54Z
Jarash
1066
Новая старонка: «local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s',...»
8065
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- пачатак пераносу стыляў шаблонаў ды катэгорый унутр радкоў табліцы
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- канец пераносу стыляў шаблонаў ды катэгорый унутр радкоў табліцы
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- наступныя два радкі дадаюць перанос на новы радок напрыканцы спісаў для парсера PHP
-- [[en:Special:Diff/849054481]]
-- выдаліць, калі будзе выпраўлена [[:phab:T191516]] або калі памылка будзе выпраўленая.
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Чысціць пустыя табліцы
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Вяртае злучэнне значэнняў двух табліц, як паслядоўнасць.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Вяртае табліцу, якая ўтрымлівае лікі аргументаў, якія існуюць
-- для пэўнага прэфікса. Напрыклад, калі прэфікс быў 'data', і існуюць
-- 'data1', 'data2', і 'data5', ён павінен выдаваць {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Дадае радок да інфармацыйнай карткі, аб з загалоўкам ячэйкі, або
-- з камбінацыяй подпісу/дадзеных ячэйкі.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Катэгорыя:Старонкі, якія выкарыстоўваюць шаблоны інфармацыйных карткак з ячэйкамі дадзеных, якія ігнаруюцца]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- Калі аўтаматычныя загалоўкі ўключаныя, праводзіцца папярэдняя апрацоўка радкоў
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Атрымлівае аб’яднанне загалоўка і лікаў аргументаў дадзеных,
-- і выводзіць іх усіх па парадку
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Модуль:Navbar')._navbar{
args.name,
mini = 1,
})
end
-- Катэгорыі з радкоў, якія ў астатніх выпадках пустыя, збіраюцца ў empty_row_categories.
-- Гэтая функцыя дадае іх да вываду з модуля. Гэта не выклікана
-- args.decat , таму што гэты модуль не павінен прадухіляць катэгорыі, не звязаныя з модулем,
-- ад выкліку.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Выклікаць катэгорыі адсочвання. args.decat == адключае катэгорыі адсочвання.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Катэгорыя:Старонкі, якія выкарыстоўваюць убудаваныя шаблоны інфармацыйных картак з параметрам title]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Катэгорыя:Старонкі, якія выкарыстоўваюць убудаваныя шаблоны інфармацыйных картак без радкоў дадзеных]]')
end
end
--[=[
Загружае стылі шаблонаў для інфармацыйнай карткі.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- Глядзіце апісанне функцыі
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base найлепшы высілак, каб захаваць стары парадак Common.css.
-- гэты парадак не гарантыя, таму што патрэбныя шэрагі, якія выклікаюць
-- кожны клас, могуць не быць на пэўнай старонцы
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- агульныя функцыі паміж даччынным і не даччынным выпадкамі
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Вызначыць агульнае размяшчэнне інфармацыйнай карткі, з асаблівымі наладкамі, калі
-- інфармацыйная картка выкарыстоўваецца ў выглядзе 'даччыннай' унутры іншай інфармацыйнай карткі.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- Калі аргумент існуе і не пусты, дадаць яго да табліцы аргументаў.
-- Пустыя аргументы разглядаюцца як пустое значэнне, каб адпавядаць паводзінам ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Прысвоіць параметры з дадзенымі прэфіксамі табліцы args, каб атрымалася як пазначана у
-- паслядоўнасці памераў крокаў. Гэта прадухіліць крыніцы і інш. ад
-- паказу ў няправільным парадку. prefixTable павінна быць масівам, які ўтрымлівае
-- табліцы, кожная з якіх мае два магчымых поля, радок "prefix" ды
-- табліцу "depend". Функцыя заўсёды апрацоўвае параметры, якія ўтрымліваюць радок
-- "prefix", але апрацоўвае толькі тыя параметры ў табліцы "depend", калі маецца параметр prefix
-- і ён не пусты.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Выяўлена значэнне не табліцы для табліцы prefix", 2)
end
if type(step) ~= 'number' then
error("Выяўлена няправільна значэнне кроку", 2)
end
-- Узяць аргументы без суфікса number і праверыць на памылковы ўвод.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Выяўлены няправільны ўвод у табліцу preprocessArgs prefix', 2)
end
preprocessSingleArg(v.prefix)
-- Толькі апрацоўваць параметр depend, калі параметр prefix наяўны і
-- не пусты.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Выяўлена няправільнае значэнне параметра "depend" у preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Узяць аргументы з суфіксамі number.
local a = 1 -- Пераменная лічыльніка.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Зрабіць яшчэ адзін цыкл, калі якія-небудзь аргументы знойдзеныя, нават пустыя.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Апрацаваць табліцу depend, калі ёсць аргумент prefix
-- і ён не пусты, ці мы апрацоўваем "prefix1" і "prefix" маецца
-- і не пустое, і калі маецца табліца depend.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Апрацаваць параметры дадзеныя data у тым самым парадку, як гэта рабіў стары {{infobox}}, так што
-- гэтыя спасылкі і інш. будуць паказвацца там, дзе і трэба. Параметры, якія
-- залежаць ад іншага параметра, апрацоўваюцца толькі калі гэты параметр наяўны,
-- каб пазбегнуць фантомныя спасылкі, якія паказваюцца ў спісах крыніц артыкула.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- розныя паводзіны для курсіву, калі пуста ці адутнічае
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- Калі выклікаецца праз #invoke, выкарыстоўваць аргументы, якія перадаюцца шаблону, які выкарыстоўвае модуль.
-- У адваротным выпадку, для мэтаў тэсціравання; лічыць, што аргументы перадаюцца напрамую.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- Для выкліку праз #invoke унутры шаблона
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
h6gj1z5zzmgzrx5aq8io3lfhxht352r
Шаблон:Infobox/styles.css
10
3416
8066
2026-06-05T18:53:13Z
Jarash
1066
Новая старонка: «.infobox { border: 1px solid #a2a9b1; color: black; padding: 0.2em; font-size: 88%; line-height: 1.5em; border-spacing: 3px; } @media screen { .infobox { background-color: #f8f9fa; } } @media (max-width: 640px) { .infobox { width: 100%; } .infobox .nowrap { white-space: normal; } } @media (min-width: 640px) { .infobox { /* @noflip */ margin: 0.5em 0 0.5em 1em; /* @noflip */ float: right; /* @noflip */ clear: right;...»
8066
sanitized-css
text/css
.infobox {
border: 1px solid #a2a9b1;
color: black;
padding: 0.2em;
font-size: 88%;
line-height: 1.5em;
border-spacing: 3px;
}
@media screen {
.infobox {
background-color: #f8f9fa;
}
}
@media (max-width: 640px) {
.infobox {
width: 100%;
}
.infobox .nowrap {
white-space: normal;
}
}
@media (min-width: 640px) {
.infobox {
/* @noflip */
margin: 0.5em 0 0.5em 1em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
width: 22em;
}
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Выдаліце .infobox , калі селектары элементаў вышэй выдаленыя */
.infobox .infobox-above,
.infobox .infobox-title,
/* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Выдаліце селектар элемента, калі кожны .infobox выкарыстоўвае стандартны модуль/шаблоны */
.infobox caption {
padding: 0.2em;
}
/* Выдаліце .infobox , калі селектары элемента вышэй выдаленыя */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Выдаліце .infobox , калі селектары элемента вышэй выдаленыя */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
n3s4ypeownjckhjyo1vatkrvzi169ev
Шаблон:Template other
10
3417
8067
2026-06-05T19:02:58Z
Jarash
1066
Новая старонка: «{{#switch: <!--Калі адсутнічае ці пусты параметр "demospace", тады вызначаецца прастора назваў--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Выкарыстоўваць "demospace" малымі літарамі--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--Канец switch--><noinclude...»
8067
wikitext
text/x-wiki
{{#switch:
<!--Калі адсутнічае ці пусты параметр "demospace", тады вызначаецца прастора назваў-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Выкарыстоўваць "demospace" малымі літарамі-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--Канец switch--><noinclude>
{{Doc}}
<!-- Дадавайце катэгорыі на падстаронку /doc, а не сюды! -->
</noinclude>
jkvj0w0utk68yca9at65p2z9geec8lr
Ісландская кухня
0
3418
8068
2026-06-05T20:27:35Z
Jarash
1066
Новая старонка: «'''Ісландская кухня''' (Þorramatur) — традыцыйная ісландская ежа, якая гатуецца пераважна з мяса ды марскіх прадуктаў традыцыйна прыгатаваных, нарэзаных на слаі ці кавалкі і пададзеных з rúgbrauð (цвёрды і цёмны жытні хлеб), маслам ды brennivín (ісландская акавіта). Þ...»
8068
wikitext
text/x-wiki
'''Ісландская кухня''' (Þorramatur) — традыцыйная ісландская ежа, якая гатуецца пераважна з мяса ды марскіх прадуктаў традыцыйна прыгатаваных, нарэзаных на слаі ці кавалкі і пададзеных з rúgbrauð (цвёрды і цёмны жытні хлеб), маслам ды brennivín (ісландская акавіта). Þorramatur спажываецца падчас старажытнага поўночанага месяца þorri (Thorri), ад студзеня да лютага, асабліва падчас паста Þorrablót (Thorrablot) сярэдзіне зімы ў гонар старажытнай культуры. Такім чынам, злучаная традыцыяй фестываляў Þorrablót, Ісландская кухня найчасцей падаецца ў буфетах.
== Стравы ==
Ісландская кухня складаецца з шматлікіх страў, сярод якіх
* '''Хакарль''', тушаная грынландская акула
* '''Свід''', вараная галава авечкі, часам вытрымліваецца ў малочнай кіслаце
* '''Стокфіск''', сушаная рыба (звычайна трэска ці пікша), падаецца з маслам
* '''Хангік’ёт''', (hung meat), капочонае і варанае мяса баранчыка ці авечкі
[[en:Cookbook:Cuisine of Iceland]]
[[ka:კულინარული წიგნი:ისლანდიური სამზარეულო]]
bwgp4bc0uge3rfyqxk0wmm4fiqpujxj