وحدة:Unsubst/ملعب
هذه صفحة ملعب الوحدة لصفحة وحدة:Unsubst (فرق). |
هذه الوحدة مستخدمة في عدد كبير من الصفحات (+969179) . لتفادي خلق بلبلة على نطاق واسع من الصفحات وزيادة الأعباء على الخوادم، يجب تجربة أي تعديل في هذه الصفحات الفرعية /ملعب أو /تجربة أو في ملعبك. بعدها يمكنك اضافة التعديلات دفعة واحدة، ورجاءً، لا تنسَ مناقشة أمر التعديلات أوّلًا قبل القيام بها. |
هذه الوحدة مساعدة لتسهيل استبدال القوالب، أو منع نسخها.
قوالب الصيانة، مثل {{بحاجة لمصدر}} أو {{مصادر أكثر}}، وغيرها من قوالب المعلومات، التي لا ينبغي أبدا أن تكون منسوخة. ولتجنب نسخها، نستخدم هذه الوحدة.
الاستخدام
لعرض نصوص ويكي WikiText عندما لا يجب نسخها، يجب أن تعطى باسم "$B".
جميع المعلمات الأخرى سيتم نسخها بقيمها كما هي عبر تمريرها في استدعاء الوحدة، ويمكن تحديد قيم افتراضية لبعض الوسائط، حيث يمكن استخدام "__DATE__" كقيمة افتراضية في أحد الوسائط، وفي هذه الحالة عند نسخ القالب، سيتم وضع قيمة الوسيط "الشهر السنة" مثل "أكتوبر 2016".
بعض القوالب تحتوي على <noinclude> ولكن لا يوجد </noinclude> في نهاية القالب، وفي مثل هذه الحالة </noinclude> يجب أن تضاف الوسوم المفقودة قبل نهاية }}
وإلا فهي ستظهر مع نتيجة نسخ القالب.
لتحويل قالب إلى نفس القالب، يستخدم نفس الوسائط، بمعنى آخر لمنع نسخ النص البرمجي له، استخدم:
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=
النص البرمجي للقالب
}}
متى لا تعمل هذه الوحدة؟
من الممكن أن يؤدي إضافة الوحدة إلى تعطيل بعض القوالب أو إخفاء ظهورها أو إخفاء ظهور جزء من القالب، وذلك في حالة كون القالب جدول ويكي أو يحتوي على نصوص الويكي الخاصة بالجداول، مثل:
{| |- |}
أو بعض منها منفردة:
{|
|}
|-
مثال
التاريخ: __DATE__
على سبيل المثال، لنفترض أن قالب:مثال يحتوي على التعليمات البرمجية التالية:
{{ {{{|safesubst:}}}#invoke:Unsubst||foo=bar |تاريخ=__DATE__ |$B=
[ ... Template code goes here ... ]
}}
النص البرمجي | النتيجة |
---|---|
{{subst:مثال}} | {{مثال|foo=bar|تاريخ=نوفمبر 2024}} |
{{subst:مثال|تج=X}} | {{مثال|تج=X|تاريخ=نوفمبر 2024}} |
{{subst:مثال|baz=X}} | {{مثال|foo=bar|baz=X|تاريخ=نوفمبر 2024}} |
{{subst:مثال|تاريخ=يناير 2001}} | {{مثال|foo=bar|تاريخ=يناير 2001}} |
local p = {}
local specialParams = {
['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates
['$B'] = 'template content',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' )
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Build an equivalent template invocation
-- First, find the title to use
local titleobj = mw.title.new(frame:getParent():getTitle())
local title
if titleobj.namespace == 10 then -- NS_TEMPLATE
title = titleobj.text
elseif titleobj.namespace == 0 then -- NS_MAIN
title = ':' .. titleobj.text
else
title = titleobj.prefixedText
end
-- Build the invocation body with numbered args first, then named
local ret = '{{' .. title
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v .. '\n'
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v.. '\n'
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B']
end
end
p['get'] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' )
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Build an equivalent template invocation
-- First, find the title to use
local titleobj = mw.title.new(frame:getParent():getTitle())
local title
if titleobj.namespace == 10 then -- NS_TEMPLATE
title = titleobj.text
elseif titleobj.namespace == 0 then -- NS_MAIN
title = ':' .. titleobj.text
else
title = titleobj.prefixedText
end
-- Build the invocation body with numbered args first, then named
local ret = '{{' .. title
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B']
end
end
return p