stringtranslate.com

راهنما: الگو

الگو یک صفحه ویکی پدیا است که برای گنجاندن در صفحات دیگر ایجاد شده است. الگوها معمولاً حاوی مطالب تکراری هستند که ممکن است لازم باشد در تعداد بیشتری از مقالات یا صفحات نمایش داده شوند. آنها معمولاً برای پیام‌های دیگ بخار ، هشدارها یا اطلاعیه‌های استاندارد، جعبه اطلاعات ، جعبه‌های ناوبری و اهداف مشابه استفاده می‌شوند. الگوها می توانند پارامترهایی داشته باشند به طوری که یک صفحه متن متفاوتی را در چندین صفحه که شامل آن می شود تولید کند.

متداول ترین روش گنجاندن، انتقال نامیده می شود ، که در آن منبع ویکی صفحه هدف حاوی ارجاع به الگو با استفاده از نحو است. روش دیگر جایگزینی است ، که در آن محتوای قالب در منبع ویکی صفحه هدف، فقط یک بار، زمانی که ذخیره می‌شود، کپی می‌شود.{{Template name}}

راهنما: راهنمای سریع الگوها، معرفی مختصری از موضوع را ارائه می دهد. کمک های بیشتری از مدیاویکی و ویکی مدیا در mw:Help:Templates، m:Help:Template و m:Help:Advanced templates وجود دارد.

توضیحات کلی

یک نمای کلی از نحوه کار قالب ها (ویدیوی 8 دقیقه ای)

بیشتر الگوها در فضای نام الگو قرار دارند، به این معنی که عنوان‌هایی به شکل «الگو: XXXX » دارند . با این حال، امکان انتقال و جایگزینی از هر فضای نامی، [a] وجود دارد و بنابراین برخی از صفحات الگو در فضاهای نام دیگر، مانند فضای نام کاربری ، قرار می گیرند . صفحات الگو دارای صفحات بحث مرتبط هستند .

الگوها می توانند حاوی هر متن ویکی دلخواه ، از جمله تماس با سایر الگوها باشند. برخی از توانایی های برنامه نویسی وجود دارد: مقادیر قابل تنظیم (از طریق پارامترها). محاسبه و انشعاب (با استفاده از توابع تجزیه کننده )؛ و دسترسی به متغیرهای خاص ویکی ( کلمات جادویی )، مانند تاریخ، زمان، و نام صفحات. آنها همچنین ممکن است دارای نشانه گذاری برای تعریف بخش های خاصی از صفحه باشند که باید گنجانده شوند، در حالی که سایر قسمت ها نیستند. این بدان معناست که وقتی خود صفحه الگو را نمایش می دهید، ممکن است بیشتر از زمانی که صفحه ای را نمایش می دهید که شامل آن است (مثلاً می تواند حاوی اسناد، دسته بندی ها و غیره برای الگو باشد) را مشاهده کنید.

برای فراخوانی یک الگو (باعث تبدیل یا جایگزینی آن در صفحه)، یک صفحه حاوی ویکی‌تکست در دو پرانتز است. برای مثال، ویکی‌تکست الگوی {{ در حال ساخت }}{{under construction}} را فراخوانی می‌کند . گاهی اوقات تماس شامل پارامترهایی می شود و به نظر می رسد . توجه داشته باشید که فراخوانی الگو تنها چیزی نیست که از پرانتزهای دوتایی در ویکی‌تکست استفاده می‌شود.{{under construction|comment=This is a comment}}

توجه داشته باشید که در حالی که الگوها روش معمول انتقال و جایگزینی در ویکی‌پدیا هستند، اما تنها راه نیستند.

با استفاده از قالب ها

ژنرال

استفاده از یک الگو بسیار شبیه فراخوانی یک تابع در یک زبان برنامه نویسی است – آن را فراخوانی کنید و مقداری را برمی گرداند. برای یک الگو، مقدار بازگشتی، گسترش الگو نامیده می شود و به عنوان بخشی از منبع صفحه فراخوانی در نظر گرفته می شود. مانند توابع، برخی از الگوها پارامترهایی را می پذیرند که بر خروجی تأثیر می گذارد.

فراخوانی یک الگو باعث می شود که در صفحه ای که آن را فراخوانی می کند (که به عنوان صفحه هدف شناخته می شود ) منتقل یا جایگزین شود.

جابجایی یک الگو به این معنی است که وقتی مدیاویکی صفحه را نمایش می‌دهد، با الگو به‌گونه‌ای رفتار می‌کند که گویی در منبع ویکی صفحه است، در حالی که جایگزین کردن به این معناست که مدیاویکی این کار را زمانی که صفحه را ذخیره می‌کند انجام می‌دهد (یعنی محتوای الگو به عنوان بخشی از آن ذخیره می‌شود. صفحه هدف و ویرایشگرهای بعدی نمی توانند بگویند که از طریق یک الگو به آنجا رسیده است).

برای تبدیل یک الگو به یک صفحه، منبع صفحه را در محلی که الگو قرار است ظاهر شود، قرار دهید. حرف اول هر کلمه از عنوان ممکن است به طور معادل کوچک یا بزرگ باشد.{{Template name}}

برای جایگزینی یک الگو در یک صفحه، به جای آن استفاده کنید.{{subst:Template name}}

این ویکی‌تکست فراخوانی الگو نامیده می‌شود .

در MediaWiki ، نرم‌افزار ویکی که ویکی‌پدیا از آن استفاده می‌کند، متغیرها از الگوها متمایز هستند، اما هر دو با پرانتزهای {{ }} دوگانه شناسایی می‌شوند و هر دو مقداری را برمی‌گردانند.

در حالی که نام متغیرهای مدیاویکی همگی بزرگ هستند، نام‌های الگو همان ویژگی‌ها و محدودیت‌های اساسی همه نام‌های صفحه را دارند . زیرخط ها به صورت فاصله تجزیه می شوند. و نمی توانند حاوی هیچ یک از این کاراکترها باشند: . این به این دلیل است که آنها برای نشانه گذاری ویکی رزرو شده اند .# < > [ ] | { }

علامت عدد # نشان دهنده یک شناسه قطعه است که یک قطعه یا بخش از یک سند را مشخص می کند (مانند بخشی در مقاله ویکی پدیا). اگرچه می‌توانید از آن در پیوندی برای پیوند دادن به بخشی از صفحه الگو استفاده کنید (مانند Template:Portal#Example )، شناسه‌های قطعه در فراخوانی الگو معنایی ندارند و نادیده گرفته می‌شوند. به عنوان مثال، همان است .{{Portal#Location|Books}}{{Portal|Books}}

فضای نام قالب پیش‌فرض است، بنابراین می‌توانید فضای نام را Template:در نام قالب حذف کنید، و انجام این کار مرسوم است. با این حال، شما باید پیشوند فضای نام را برای الگوها در فضاهای نام دیگر، مانند User:. برای تبدیل یک صفحه در فضای اصلی ، قبل از عنوان آن یک دونقطه، به عنوان .{{:Page name}}

اطلاعات توجه: تلاش برای تبدیل قالبی که وجود ندارد، یک پیوند قرمز ایجاد می‌کند ، درست مانند پیوند دادن به هر صفحه‌ای که وجود ندارد. دنبال کردن پیوند به فرد امکان می دهد آن الگوی خاص را ایجاد کند. نمی‌توان صفحاتی را بین پروژه‌ها (مانند ویکی‌پدیاها یا مدیاویکی با زبان‌های مختلف) ردیابی کرد—برای استفاده از یک الگو در پروژه زبانی دیگر، باید یک کپی از الگو در آن پروژه ایجاد شود.

پارامترها

  • H:پارامتر
  • WP:PARAMETER

نحو اصلی انتقال داده شده در بالا را می توان با پارامترهایی گسترش داد که برای کنترل خروجی الگو استفاده می شود. نحو برای این جایی است که نام الگو قرار دارد، و هر کدام ممکن است فقط حاوی یک مقدار باشد (این پارامترها را پارامترهای بی نام می نامند ) یا به شکل ( پارامترهای نامدار ) باشند. به پارامترهای بی نام اول، دوم، سوم و غیره، نام‌های ،، و غیره داده می‌شود.{{Template name|parameter|parameter|...}}Template nameparametername=value123

کاراکترهای فضای خالی (فضاها، برگه‌ها، برگردانده‌ها) از ابتدا و انتهای نام‌ها و مقادیر پارامترهای نام‌گذاری‌شده حذف می‌شوند ، اما نه از وسط: بنابراین {{ ... | myparam = this is a test }}تأثیری مشابه دارد {{ ... |myparam=this is a test}}. این برای پارامترهای بدون نام ، که در آن همه کاراکترهای فضای خالی حفظ می شوند ، اعمال نمی شود .

اینکه چه پارامترهایی (در صورت وجود) می توانند یا باید به یک الگو منتقل شوند و چگونه باید نامگذاری شوند، در کدگذاری آن الگو تعریف شده است. فراخوانی الگو می تواند پارامترهای نامگذاری شده را به هر ترتیبی مشخص کند. پارامترهای اضافی یا نام اشتباه نادیده گرفته می شوند. به پارامترهای نامشخص مقادیر پیش فرض اختصاص داده می شود. اگر یک پارامتر بیش از یک بار مشخص شود، آخرین مقدار اعمال می شود.

مقدار یک پارامتر می تواند رشته خالی باشد، مانند زمانی که علامت لوله یا مساوی بلافاصله با لوله بعدی یا مهاربندهای بسته شدن دنبال می شود. این با مشخص نکردن پارامتر کاملاً متفاوت است که منجر به یک مقدار پیش‌فرض می‌شود، اگرچه الگوها اغلب به گونه‌ای کدگذاری می‌شوند که در هر دو مورد یکسان رفتار کنند.

اگر فراخوانی الگو پارامتری را مشخص کند که در قالب تعریف نشده باشد، تأثیری ندارد. گاهی اوقات ویراستاران این کار را عمدا انجام می دهند: برای مثال، |reason=اغلب به عنوان یک شبه پارامتر برای توضیح مختصر در منبع ویکی استفاده می شود که چرا فراخوانی الگو در آنجا قرار داده شده است. [b] برخی از الگوها برای هشدار دادن به ویرایشگر در صورت استفاده از پارامتری که در کد الگو درج نشده است، استفاده می‌کنند. این بیشتر برای جعبه های اطلاعات و سایر قالب ها با تعداد زیادی پارامتر پیچیده استفاده می شود ، جایی که وجود یک ناشناخته معمولاً یک خطای ناخواسته است. اگر چنین قالبی را برای تعریف یک پارامتر جدید به روز کنید، فراخوانی آن به ماژول نیز باید به روز شود تا پارامتر جدید را در بر گیرد.{{#invoke:check for unknown parameters|check|...}}

نحو ویکی‌تکست به‌طور بومی اجازه ایجاد الگوهای واقعاً متغیر را نمی‌دهد ، بلکه فقط الگوهای شبه متغیری را ایجاد می‌کند که پارامترهای ورودی را یک به یک تا مقدار مشخصی بررسی می‌کنند. با این حال، با استفاده از ماژول های اختصاصی می توان این محدودیت را شکست. برای موارد ساده، اجازه می دهد تا تمام پارامترهای ترتیبی را کورکورانه گسترش دهید و توانایی تنظیم جداکننده های سفارشی را دارد. برای موارد پیچیده تر، امکان شمارش، فهرست، نقشه، فیلتر کردن و انتشار همه پارامترهای ورودی را بدون دانستن تعداد آنها از قبل فراهم می کند.{{#invoke:separated entries|main}}{{#invoke:params}}

نمونه ها

اطلاعات توجه: اگر می‌خواهید با هر یک از این موارد آزمایش کنید، می‌توانید از سندباکس الگو یا صفحه کاربری یا جعبه ایمنی خود استفاده کنید. می توانید الگوی خود را با Special:ExpandTemplates امتحان کنید .

نمونه‌ای از یک الگوی بسیار ساده را می‌توان در Template:TM یافت ، که به متن ویکی گسترش می‌یابد که نماد علامت تجاری (™)، مرتبط با مقاله علامت تجاری را در آن نقطه از صفحه نمایش داده شده قرار می‌دهد. یک برنامه نویس می گوید که این الگو ویکی متن پیوند نماد علامت تجاری را "باز می گرداند".

Display Template:TM (با کلیک بر روی لینک فوق)، سپس روی تب "Edit" کلیک کنید تا کد الگو (منبع صفحه آن) را ببینید. بخش فعال آن کد، که پس از انتقال الگو به گسترش آن تبدیل می‌شود، ویکی‌تکست پیوند واحد است [[Trademark|™]]. باقیمانده منبع صفحه بین <noinclude>تگ‌ها محصور شده است، بنابراین زمانی که خود صفحه الگو را نمایش می‌دهید نشان داده می‌شود، اما زمانی که صفحه‌ای را نمایش می‌دهید که الگو را فراخوانی می‌کند، نمایش داده نمی‌شود.

برای انتقال Template:TM به صفحه دیگری (یعنی برای استفاده از آن در صفحه دیگر)، منبع آن صفحه (صفحه هدف) را تایپ کنید و روی آن کلیک کنید . صفحه با فراخوانی الگو نشان داده می شود که با گسترش الگو جایگزین شده است، گویی که ویکی متن واقعاً در آن نقطه وجود دارد. بنابراین صفحه نمایش داده شده حاوی ویکی پیوند " ™ " خواهد بود.{{TM}}Show preview[[Trademark|™]]

به عنوان مثال، تایپ کنید و هنگام پیش‌نمایش صفحه یا پس از ذخیره تغییرات، «نماد علامت تجاری ™ است» را خواهید دید .The trademark symbol is {{TM}}

راه دیگر استفاده از قالب جایگزینی آن است. اگر صفحه را تایپ کرده و پیش‌نمایش یا ذخیره کنید، "نماد علامت تجاری ™ است" را خواهید دید درست مانند مثال بالا. اما اگر صفحه را ذخیره کنید و سپس دوباره به منبع صفحه ذخیره شده نگاه کنید ، [c] را خواهید دید ، زیرا زمانی که صفحه را ذخیره کردید، فراخوانی الگو با گسترش الگو جایگزین شد. اتصال مداوم به تماس الگو وجود ندارد. هیچ کس نمی تواند با نگاه کردن به منبع صفحه متوجه شود که شما فقط تایپ نکرده اید و اگر الگوی {{ TM }} تغییر کند (یا وجود نداشته باشد)، صفحه شما همچنان به نمایش در می آید. (در مقابل، در مثال بالا، اگر الگوی {{ TM }} متعاقباً تغییر کند، صفحه شما ممکن است متفاوت نمایش داده شود).The trademark symbol is {{subst:TM}}The trademark symbol is [[Trademark|™]]The trademark symbol is [[Trademark|™]]

نمونه هایی با پارامترها

نمونه ای از قالبی که پارامترها را می گیرد، قالب است . سعی کنید در جعبه شنی تایپ کنید - متن زیر تولید می شود:{{about}}{{about|how to use templates|how to use modules|Help:Lua}}

این الگو در مثال بالا از سه پارامتر بی نام (که پارامترهای موقعیتی نیز نامیده می شود) استفاده می کند، اما می توانید همان الگو را با تعداد پارامترهای مختلف فراخوانی کنید تا نتایج کمی متفاوت داشته باشید، همانطور که در مستندات الگو توضیح داده شده است . به عنوان مثال، . به استفاده از یک پارامتر خالی توجه کنید - در این مثال، لوله های متوالی به این معنی است که اولین پارامتر مشخص شده یک رشته خالی است، که در این الگو باعث می شود جمله اولیه "about" را حذف کند. این تولید می کند:{{about}}{{about||how to use modules|Help:Lua}}

یک مثال ساده از یک الگو که دارای پارامترهای نامگذاری شده است، Template:Payoff Matrix است که برای ایجاد یک شبکه 2 در 2 استفاده می شود. به عنوان مثال:

برای امکانات بیشتر به صفحه قالب مراجعه کنید . توجه داشته باشید که الگو در اینجا بدون تعیین تمام پارامترهای ممکن فراخوانی می شود، بنابراین به پارامترهای تعریف نشده مقادیر پیش فرض داده می شود.

نکات و راه حل ها

نکات زیر ممکن است در هنگام استفاده از قالب ها قابل توجه باشد:

الگوهای نوشتن

فرآیند

الگوها فقط صفحات ویکی پدیا هستند. آنها به روشی مشابه هر صفحه دیگری ایجاد، حذف و ویرایش می شوند.

ایجاد

برای ایجاد یک الگو، یک نام مناسب را انتخاب کنید، به آن صفحه بروید، سپس روی برگه "ویرایش" کلیک کنید یا در صورت نیاز یک صفحه جدید ایجاد کنید.

الگوها معمولاً در فضای نام قالب قرار می گیرند ، اگرچه می توانید یک الگو را که برای استفاده شخصی خود یا برای آزمایش در فضای کاربری خود در نظر گرفته شده است قرار دهید .

قبل از ایجاد یک الگو، یک جستجوی سریع برای الگوهای موجود انجام دهید (مانند کاوش در رده:الگوهای ویکی‌پدیا ) تا ببینید آیا قبلاً الگویی وجود دارد که آنچه را که می‌خواهید انجام می‌دهد یا الگوی مشابهی که کد آن قابل کپی و تغییر است (یا در آن باقی مانده است). مکان و گسترش یافت). به دنبال الگوهای عمومی باشید که الگوی جدید می تواند بر اساس آنها باشد. برای مثال، می‌توانید با ایجاد یک الگوی مختصر که قالب عمومی را فراخوانی می‌کند، به راحتی یک الگوی navbox ایجاد کنید .

هیچ قانون سختی در مورد اینکه چه نامی برای یک الگو انتخاب کنید وجود ندارد - آن را کوتاه اما به طور منطقی توصیف کنید. دستورالعمل نامگذاری می گوید: "عملکرد الگو باید از نام الگو مشخص باشد". اگر الگوهای مشابهی وجود دارد، سعی کنید از یک الگوی نامگذاری ثابت پیروی کنید. با رها کردن یک تغییر مسیر به نام الگوی جدید، می‌توانید نام یک الگو را بدون شکستن اعلان‌های موجود (آنچه شکستگی نامیده می‌شود ) تغییر دهید.

در حال اصلاح

یک الگو را مانند هر صفحه دیگری ویرایش کنید: به الگو بروید و روی برگه «ویرایش» کلیک کنید.

هنگام ویرایش الگوهای موجود بسیار مراقب باشید - تغییرات ایجاد شده می تواند بر تعداد زیادی از صفحات تأثیر بگذارد، اغلب به روشی که ممکن است انتظارش را نداشته باشید. به همین دلیل بسیاری از قالب‌های پرکاربرد در برابر ویرایش محافظت می‌شوند ، مگر توسط مدیران و ویرایشگرهای قالب . سایر ویرایشگران می توانند تغییراتی را در صفحه بحث پیشنهاد دهند. برخی از الگوها یک جعبه شن و ماسه و موارد آزمایشی را برای آزمایش ارائه می دهند.

در حال حذف

الگوهای استفاده نشده یا نامناسب باید حذف شوند. الگوهایی که می توانند به راحتی در قالب دیگری ادغام شوند باید ادغام شوند.

برای پیشنهاد حذف یا ادغام یک الگو، به الگوهای بحث (TfD) بروید.

کدنویسی یک الگو

هر چیزی که می تواند در یک صفحه یا مقاله معمولی گنجانده شود، می تواند در یک الگو گنجانده شود، از جمله سایر الگوها (به نام قالب های فرعی ). قالب‌ها اغلب از ویژگی‌های برنامه‌نویسی استفاده می‌کنند - پارامترها، توابع تجزیه‌کننده و دیگر کلمات جادویی - که اجازه می‌دهند محتوای انتقال‌یافته بسته به زمینه متفاوت باشد. همچنین برچسب های ویژه ای برای کنترل اینکه کدام اطلاعات منتقل می شود و کدام نه وجود دارد.

فرا الگوها

متامپلیت‌ها و متامدول‌های مختلفی برای کمک به انجام وظایف رایج الگو وجود دارد. آنها مانند قالب ها و ماژول های معمولی نامیده می شوند ، اما هدفی را دنبال می کنند که نوشتن قالب ها را آسان تر می کند. برای فهرستی از آن الگوها و ماژول‌ها به رده:فرامقالب‌های ویکی‌پدیا و رده:فراماژول‌های الگو مراجعه کنید .

کنترل پارامترها

در کد الگو، مقدار یک پارامتر با موارد محصور شده بین مهاربندهای سه گانه نشان داده می شود که یک مرجع پارامتر است .

اگر پارامتری در فراخوانی الگو مشخص نشده باشد، مرجع پارامتر با چیزی جایگزین نمی شود -- به معنای واقعی کلمه گسترش می یابد. این بدان معناست که اگر فراخوانی الگو پارامتر "xxx" را مشخص نکند، ویکی‌تکست {{{xxx}}}داخل الگو به معنای واقعی کلمه به {{{xxx}}} گسترش می‌یابد (نه رشته تهی که ممکن است انتظار داشته باشید). می توانید با تعیین یک مقدار پیش فرض در مرجع پارامتر، رفتار مفیدتری دریافت کنید. این کار را با نحو لوله انجام دهید : {{{xxx|dflt}}}مقدار پیش‌فرض dfltپارامتر نام‌گذاری‌شده «xxx» را مشخص می‌کند، و {{{1|dflt}}}مقدار پیش‌فرض را dfltبرای اولین پارامتر بدون نام مشخص می‌کند. اغلب، یک مقدار پیش‌فرض تهی، مانند {{{1|}}}یا را مشخص می‌کند {{{xxx|}}}.

می‌توانید از مقادیر پارامتر پیش‌فرض برای تأثیرگذاری نام مستعار پارامتر استفاده کنید: به عنوان مثال، اگر پارامترهای «متن» و «پیام» نام‌هایی برای یک پارامتر هستند، که می‌تواند به عنوان تنها پارامتر بی‌نام نیز مشخص شود، سپس به پارامتر با {{{message|{{{text|{{{1|}}}}}}}}}. اگر فراخوانی الگو بیش از یکی از آن پارامترها را مشخص کند، "پیام" اولویت خواهد داشت، به دنبال آن "متن" و در نهایت با اولین پارامتر بی نام. بنابراین اگر یک فراخوانی الگو پارامترهایی را مشخص کند |message=A|text=B|C، ویکی‌تکست بالا به گسترش می‌یابد A.

به دلیل معانی متعدد نحو دو پرانتز و سه پرانتز در ویکی‌تکست، عبارات گاهی اوقات می‌توانند مبهم باشند. گنجاندن فضاهایی برای رفع چنین ابهامی ممکن است مفید یا ضروری باشد. به عنوان مثال، {{ {{{xxx}}} }}یا {{{ {{xxx}} }}}، به جای تایپ پنج بریس متوالی، ممکن است برای انسان قابل خواندن تر باشد. اما مراقب فضای خالی ناخواسته ظاهر شدن در بسط الگو باشید.

مراجع پارامتر وقتی در تگ ها پیچیده می شوند، گسترش نمی یابند .<nowiki>

مثال

مثال استفاده از پارامتر در بالا به الگوی {{ ماتریس پرداخت }} اشاره دارد . در اینجا کد موجود در قالب است که این پارامترها را پیاده سازی می کند:

{| id = "Matrix Payoff" style = "background:white; float: {{{ Float | right }}} ; clear:right; text-align:center;" تراز = {{{ شناور | راست }}} فاصله سلولی = 0 صفحه سلولی = 8 عرض = {{{ عرض | 225 }}} |- | style = "width:33%;" | | style = "width:33%; حاشیه-پایین: مشکی یکپارچه 1px;" | {{{ 2 لیتر | سمت چپ }}} | style = "width:33%; حاشیه-پایین: مشکی یکپارچه 1px;" | {{{ 2R | راست }}} |- | style = "حاشیه-راست: مشکی یکپارچه 1 پیکسل؛ تراز متن: سمت راست؛ " | {{{ 1U | بالا }}} | style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ ULc | white }}} ; font-size:120%; "| {{{ UL | 0، 0 }}} | style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ URc | white }}} ; font-size:120%; "| {{{ UR | 0، 0 }}} |- | style = "حاشیه-راست: مشکی یکپارچه 1 پیکسل؛ تراز متن: سمت راست؛ " | {{{ 1D | پایین }}} | style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ DLc | white }}} ; font-size:120%; "| {{{ DL | 0، 0 }}} | style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ DRc | white }}} ; font-size:120%; "| {{{ DR | 0، 0 }}} |- | style = "اندازه فونت:90%;" colspan = 3             | '' {{{ نام |{{ PAGENAME }}}}} '' |}

نهاد به الگو دستور می دهد که اگر پارامتر در فراخوانی مشخص نشده باشد، از مقدار پارامتر نامگذاری شده یا متن استفاده کند.{{{2L|Left}}}2LLeft

مورد خاص: پارامترهای درون یک تگ باز به سبک XML

ارجاع پارامترها در تگ های باز به سبک XML گسترش نمی یابد . بنابراین، موارد زیر در قالب کار نمی کنند:

زیرا پارامتر گسترش نمی یابد. در عوض، می‌توانید از {{#tag:}} تابع تجزیه‌کننده استفاده کنید که – برای مثال – برای تولید عنصر استفاده می‌شود. همچنین نگاه کنید به راهنما: کلمات جادویی § قالب بندی . بنابراین، مثال زیر کار خواهد کرد:{{sfn}}<ref>...</ref>

احتیاط: گسترش بیش از حد URL ها

اگر مقدار پارامتر یک URL است (یا به آن ختم می‌شود) ، بررسی کنید که آیا در ویکی‌پدیا با یک یا چند کاراکتر بعد از URL نمایش داده می‌شود تا کلیک کردن روی پیوند باعث خطا یا شکست شود. این ممکن است به این دلیل اتفاق بیفتد که کد منبع فضایی بعد از URL ندارد یا حاوی یا ایجاد فضایی است که در پردازش دور ریخته می‌شود. اطمینان حاصل کنید که در گسترش الگو، یک فضای نرم ( نه یک فضای سخت یا بدون شکست ) از URL پیروی می کند، صرف نظر از اینکه شما یا کاربر URL را ارائه کرده اید یا اینکه توسط پردازش خودکار ایجاد شده است. قالب ممکن است مفید باشد.{{spaces}}

متغیرهای سیستم و منطق شرطی

کد الگو اغلب از متغیرها و توابع تجزیه کننده توصیف شده در Help:Magic words استفاده می کند تا رفتار الگو را به محیطی که در آن گنجانده شده است (مانند زمان فعلی یا فضای نام) وابسته کند. توابع تجزیه کننده را می توان برای برخی از محاسبات حسابی و دستکاری رشته ها بر روی متغیرها و مقادیر پارامتر استفاده کرد، اما برخی از ویژگی های برنامه نویسی استاندارد مانند حلقه ها و تخصیص متغیرها در دسترس نیستند. دستکاری رشته کامل در دسترس نیست. برخی از قالب هایی که چنین عملکردی را ارائه می دهند ایجاد شده اند، اما ناکارآمد و ناقص هستند.

برخی از متغییرها و توابع پرکاربرد در زیر فهرست شده اند. برای اطلاعات بیشتر، به Help:Magic words و مستندات کاملتر در صفحات مدیاویکی mw:Help:Magic words و mw:Help:Extension:ParserFunctions مراجعه کنید.

پسوند ParserFunctions توابع تجزیه کننده برنامه نویسی بیشتری را ارائه می دهد:

متغیرهای و مخصوصاً برای تغییر رفتار الگو بر اساس زمینه ای که در آن گنجانده شده اند مفید هستند و اغلب استفاده می شوند. قالب هایی که حاوی پیوندهای دسته بندی هستند اغلب این کار را انجام می دهند. به عنوان مثال، یک الگوی پاکسازی حاوی یک پیوند دسته بندی برای طبقه بندی صفحه تماس به عنوان صفحه ای است که نیاز به پاکسازی دارد، بنابراین الگو احتمالاً پیوند دسته بندی را روی متغیر شرطی می کند تا صفحات بحث، صفحات کاربر و هر صفحه دیگری که ممکن است با آن تماس بگیرد. قالب اتفاقاً به عنوان صفحاتی که نیاز به پاکسازی دارند دسته بندی نمی شوند.{{PAGENAME}}{{NAMESPACE}}{{NAMESPACE}}

قالب های تودرتو

  • WP:NEST

یک الگو ممکن است یک الگوی دیگر را فراخوانی کند - این قالب تودرتو نامیده می شود و الگوی فراخوانی شده در این زمینه، یک قالب فرعی نامیده می شود . هنگامی که ویکی‌مدیا الگو را گسترش می‌دهد، قالب‌های فرعی را با ظاهر شدن فراخوان‌ها گسترش می‌دهد، به طوری که محصول نهایی اساساً نتیجه گسترش الگوها از عمیق‌ترین قالب‌ها است.

اگرچه در کاربرد نسبتاً ساده است، اما شامل برخی از ابهامات و ترفندهای قابل توجه است.

برای ارسال یک مقدار پارامتر از یک فراخوانی به یک الگوی فرعی، از یک مرجع پارامتر در فراخوانی الگو به قالب فرعی استفاده کنید.

مثال:
الگو:A حاوی . الگو:B (یک قالب فرعی) حاوی . صفحه X A را صدا می کند و این به . سومین پارامتر بدون نام ارسال شده به Template:A به عنوان اولین پارامتر بی نام به زیرشاخه B پاس می گیرد."the quick brown {{B|{{{3}}} }} jumps over..."'''{{{1}}}'''{{A|apple|pear|fox}}"the quick brown '''fox''' jumps over..."

یک الگو حتی می تواند انتخاب کند که کدام پارامتر زیرالگو را به صورت مشروط ارسال کند.

مثال ها:
الگو:A حاوی . الگو:B (یک قالب فرعی) حاوی . صفحه X A را با . این به . سومین پارامتر بدون نام ارسال شده به Template:A به عنوان نام پارامتر ارسال شده به زیرشاخه B با مقدار "fox" ارسال می شود.the quick brown {{B|{{{3}}}=fox}} jumps over...'''{{{jumper}}}'''{{A|apple|pear|jumper}}"the quick brown '''fox''' jumps over..."
  • WP: حلقه الگو

بازگشت الگو در دسترس نیست. یعنی یک الگو ممکن است خود را مستقیماً یا غیرمستقیم با فراخوانی سایر الگوهایی که آن را فراخوانی می کنند، فراخوانی نکند. تلاش برای انجام این کار منجر به پیام خطایی می شود که یک "حلقه الگو" را توصیف می کند.

هنگامی که یک الگوی فرعی حاوی پرانتزهای بی همتا باشد - مانند {{lb}}}- پرانتزهای بی همتا در طول پردازش به عنوان متن در نظر گرفته می شوند - آنها بر تجزیه پرانتزها در الگوی فراخوان تاثیری نمی گذارند. اما در جایی که الگو جایگزین می‌شود، وقتی صفحه بعداً نمایش داده می‌شود، بریس‌های بی‌همتا به عنوان پرانتز تجزیه می‌شوند. این کاربرد عملی کمی دارد، اما گاهی اوقات می تواند خطاهای غیرمنتظره ای را ایجاد کند.

برای اطلاعات بیشتر به m:Help:Advanced templates و m:Help:تبدیل بازگشتی ویکی متن مراجعه کنید.

کنترل شمول: بدون شامل، فقط شامل، و فقط شامل

  • WP:NOINCLUDE
  • WP: INCLUDEONLY
  • WP:ONLYINCLUDE

به‌طور پیش‌فرض، وقتی صفحه‌ای با یک الگو تماس می‌گیرد، مدیاویکی شامل گسترش کل الگو در صفحه تماس می‌شود. با این حال، می توان آن رفتار را با استفاده از برچسب هایی که مشخص می کند کدام بخش از کد الگو قرار می گیرد، تغییر داد. این امکان را فراهم می‌کند که الگو فقط حاوی اطلاعاتی برای نمایش زمانی باشد که خود صفحه الگو نمایش داده می‌شود، مانند مستندات الگو ، یا دسته‌ها . همچنین ممکن است قسمت‌هایی از الگو در صفحات فراخوانی گنجانده شود، اما زمانی که خود صفحه الگو نمایش داده می‌شود، نمایش داده نمی‌شود و زمانی که خود صفحه الگو ذخیره می‌شود، پردازش نمی‌شود (مثلاً دسته‌هایی که باید برای صفحات فراخوان اعمال شوند. برای الگو اعمال نمی شود). برچسب ها به شرح زیر است:

شاید رایج ترین مشکل استفاده از این بلوک ها فضاها یا خطوط ناخواسته باشد. مهم است که به یاد داشته باشید که تأثیر این برچسب ها بلافاصله قبل از اولین براکت زاویه شروع می شود، نه در خط قبلی یا در کاراکتر قابل مشاهده قبلی. به طور مشابه، اثر بلافاصله پس از آخرین براکت زاویه به پایان می رسد، نه در خط بعدی یا با کاراکتر قابل مشاهده بعدی. به عنوان مثال:

}<includeonly>
}}
</includeonly>

این تگ‌ها را می‌توان در داخل یکدیگر قرار داد، اگرچه (برای یک صفحه مشخص) این واقعاً فقط برای <onlyinclude>برچسب معنی دارد. تودرتو <includeonly>و <noinclude>تگ ها نسبتاً بی معنی است. با این حال مراقب باشید که تگ ها را به درستی لانه کنید. سازه هایی مانند <onlyinclude>abc <includeonly>def </onlyinclude>ghi آنطور که انتظار می رود کار </includeonly>نمی کنند . از قانون "اولین باز، آخرین بسته" استفاده کنید که برای HTML/XML استاندارد است.

مشکلات و راه حل ها

مستندات

اسناد برای کاربران، همراه با دسته‌های قالب، معمولاً بعد از کد الگو، داخل <noinclude>...</noinclude>تگ‌ها قرار می‌گیرند. معمولاً لازم است <noinclude>تگ افتتاحیه را بلافاصله پس از پایان کد، بدون فاصله یا خطوط جدید قرار دهید تا از جابجایی فضای سفید ناخواسته جلوگیری شود.

در مورد الگوهای پیچیده، اسناد اغلب در یک صفحه فرعی جداگانه از صفحه الگو (به نام "الگو: XXX /doc") نگهداری می شود. این امر به ویژه در مورد بسیاری از الگوهای محافظت شده اعمال می شود ، به طوری که غیر سرپرستان می توانند اسناد را ویرایش کنند. برای انجام این کار، پس از کد قالب اصلی و درون تگ ها ، با قالب تماس بگیرید . اگر صفحه فرعی "/doc" وجود نداشته باشد، زمانی که الگو را نمایش می دهید پیوندی ظاهر می شود که می توانید از آن برای ایجاد صفحه فرعی استفاده کنید.{{Documentation}}<noinclude>...</noinclude>

صفحه فرعی مستندات، به جای خود الگو، معمولاً در دسته بندی ها قرار می گیرد تا یک الگو را نشان دهد.

دسته بندی

صفحات را بر اساس درج الگو دسته بندی کنید

برخی از الگوها در بسط خود اعلامیه های دسته را ایجاد می کنند، زیرا الگو برای قرار دادن صفحات فراخوان در دسته های خاص در نظر گرفته شده است. این اغلب با دسته های نگهداری انجام می شود. قرار دادن مقالات در دسته‌های محتوای معمولی به این روش توصیه نمی‌شود. هنگام انجام این کار، ممکن است مجبور شوید <includeonly>...</includeonly>از برچسب ها استفاده کنید تا خود قالب را از دسته بندی خارج کنید. در حین توسعه، آزمایش، جعبه‌شناختی یا نمایش یک الگو که برای اعمال یک دسته‌بندی در نظر گرفته شده است، به طور موقت هر دسته را با یک دسته آزمایشی جایگزین کنید (شروع با X1 ، X2 ، یا X3 ) یا دسته‌بندی را سرکوب کنید ( به حذف دسته‌بندی در الگوها مراجعه کنید ).

قالب ها را دسته بندی کنید

دسته بندی الگوی خود و مستندسازی استفاده صحیح از آن، یافتن و استفاده سایر ویرایشگران را آسان تر می کند.

اعلان‌های دسته‌بندی برای خود الگو باید در زیرصفحه مستندات الگو (یا در صورت وجود نداشتن زیرصفحه مستند در داخل <noinclude>...</noinclude> برچسب‌ها ) قرار داده شود تا از قرار دادن صفحات فراخوان در دسته‌بندی جلوگیری شود.

نام مستعار

تغییر مسیر یک الگو به عنوان نام مستعار عمل می کند. به عنوان مثال، Template:Tsh به میانبر Template:Template تغییر مسیر می دهد ، بنابراین می توانید به جای کدنویسی کنید .{{tsh|foo}}{{Template shortcut|foo}}

خوب است که نام مستعار الگو را برای تغییرات در فضای خالی و حروف بزرگ آماده کنید. به عنوان مثال، یک قالب به نام وجود دارد . "W" با حروف بزرگ نوشته می شود، زیرا کلمه "ویکیواژه" چنین است، اما تغییر مسیر (با حروف کوچک "w") وجود دارد زیرا ممکن است ویراستاران آن را به اشتباه به عنوان دومی به خاطر بسپارند.{{See Wiktionary}}{{See wiktionary}}

محدودیت های قالب

  • WP:INCLUDELIMIT

محدودیت "پس از گسترش شامل اندازه". هنگامی که قالب ها برای مشاهده در مرورگر شما به HTML رندر یا گسترش می یابند، از حافظه استفاده می کنند. این "اندازه شامل پس گسترش" نامیده می شود و دارای محدودیت 2,048,000 بایت است. این اندازه به عنوان یک نظر نامرئی در خروجی HTML گنجانده شده است - از ویژگی منبع مشاهده مرورگر خود برای نشان دادن HTML خام و جستجوی "newpp" استفاده کنید. گزارش به شکل زیر خواهد بود:

<!-- گزارش محدودیت NewPP تعداد گره های پیش پردازنده: 2382/1000000 اندازه شامل پس از گسترش: 63476/2048000 بایت اندازه آرگومان الگو: 9517/2048000 بایت تعداد تابع تجزیه کننده گران قیمت: 2/500 -->

مثال نشان می‌دهد که بسط الگو از 63476 بایت از 2048000 بایت حافظه موجود استفاده می‌کند.

مشکل نمایش اگر تعداد زیادی الگو در صفحه گنجانده شود، اندازه شامل پس از گسترش ممکن است از حد مجاز بیشتر شود. وقتی این اتفاق می‌افتد، قالب‌های پس از محدودیت دیگر گسترش نمی‌یابند و در عوض به‌عنوان یک پیوند ویکی نمایش داده می‌شوند (مثلاً الگو: نام الگو ). دلایل رایج عبارتند از گنجاندن الگوهای نقل قول ، الگوهای جعبه ناوبری و/یا الگوهای پرچم . برای حل این مشکل، قالب‌ها را جایگزین کنید ، مستقیماً ماژول‌ها را فراخوانی کنید ، قالب‌ها را حذف کنید یا صفحه را تقسیم کنید .

جمع‌بندی‌های رندر نشده همچنان به عنوان حد مجاز محسوب می‌شوند. به عنوان مثال، صفحه‌ای که فقط شامل آن می‌شود، {{#if:{{:Main Page}}}}باز هم دارای اندازه شامل پس گسترش است، حتی اگر اصلاً خروجی نداشته باشد.

همین امر در مورد ماژول های Scribunto نیز صدق می کند . به عنوان مثال، {{#invoke:Test|main}}حتی اگر Module:Test به سادگی باشد، باز هم اندازه شامل پس از گسترش افزایش می یابد:

mw . getCurrentFrame (): پیش پردازش  "{{msgnw::صفحه اصلی}}"  -- این خط را حذف کنید و پس از گسترش اندازه شامل صفر می شود بازگشت  { main  =  تابع ()  end }  -- p.main() مقدار بازگشتی ندارد

زبان برنامه نویسی Lua

زبان برنامه نویسی Lua برای استفاده از طریق افزونه Scribunto MediaWiki در دسترس است. می توانید کد Lua را با استفاده {{#invoke:}}از قابلیت افزونه Scribunto MediaWiki در قالب ها جاسازی کنید. کد منبع Lua در صفحاتی به نام ماژول ذخیره می شود و الگوها این ماژول ها را فراخوانی می کنند. به عنوان مثال، می توانید Module:Example را با کد {{#invoke:Example|hello}}برای چاپ متن "Hello World!" فراخوانی کنید.

اصطلاحات

الگو یک صفحه ویکی پدیا است که هدف آن انتقال یا جایگزینی در صفحه دیگری است. الگوها معمولاً در فضای نام الگو قرار دارند ، اما لزومی ندارد. صفحات می توانند هر صفحه ای را جانشین یا جایگزین کنند، نه فقط الگوها. چیزی که یک صفحه را به یک الگو تبدیل می کند، هدف آن صفحه است.

فراخوانی یک الگو به معنای تبدیل یا جایگزین کردن آن است. یک صفحه یک الگو را فرا می خواند. متن ویکی در صفحه ای که باعث می شود صفحه یک الگو را فراخوانی کند، فراخوانی الگو نامیده می شود . به عنوان مثال، . تماس‌های الگو همیشه با پرانتزهای دوتایی ({{sic|constellation prize}}{{}}

توسعه فرآیند تولید منبع صفحه از یک الگو، زمانی که صفحه آن را فراخوانی می‌کند، با اعمال پارامترها و ویژگی‌های دیگر است. مدیاویکی با ارائه یک صفحه یک الگو را گسترش می دهد. همچنین می توان گفت که خود الگو گسترش می یابد، بنابراین هر دو "MediaWiki {{{1}}}به عنوان مقدار اولین پارامتر موقعیتی گسترش می یابد" و " {{{1}}}به عنوان مقدار اولین پارامتر موقعیتی گسترش می یابد" کار می کنند.

گسترش یک صفحه همچنین منبع صفحه ای است که از گسترش قالب حاصل می شود. برای مثال، گسترش الگوی {{ sic }} هنگام فراخوانی توسط است .{{sic|constellation prize}}constellation prize&#32;&#91;''[[sic]]''&#93;

محتوای صفحه نمایش داده شده تولید شده توسط یک فراخوانی الگو (که رندر گسترش الگوی فراخوانی شده است) نتیجه الگو است . نتیجه الگوی ایجاد شده توسط فراخوان الگو "جایزه صورت فلکی [ sic ]" است.{{sic|constellation prize}}

نام یک الگو ، نام صفحه ویکی پدیا است (که عنوان صفحه نیز هست). فضای نام معمولاً اگر "Template" باشد (که تقریباً همیشه همینطور است) کنار گذاشته می شود. علاوه بر این، مرسوم است که نام را با پرانتزهای دوتایی، مانند فراخوانی الگو، برای تاکید بر نامگذاری یک الگو بنویسید. به عنوان مثال، " از الگوی {{ tm }} برای تولید نماد علامت تجاری استفاده کنید." اما برای جلوگیری از اشتباه گرفتن با یک تماس واقعی، آنقدر جلو نروید که نام قالب را در فونت کد قرار دهید. {{tm}} یک نام الگو است، اما {{tm}}یک تماس الگو است.

برخی از فراخوانی های الگو یک تابع برچسب گذاری را انجام می دهند. چنین فراخوانی معمولاً برچسب نامیده می شود ، مانند "اگر در وسط یک ویرایش اصلی هستید، یک برچسب {{ در حال استفاده }} را در بالای صفحه قرار دهید." این یکی از روش‌هایی است که اصطلاح «تگ» در ویکی‌پدیا استفاده می‌شود.

یک پارامتر اطلاعات خاصی است که می تواند در یک فراخوانی الگو مشخص شود تا بر گسترش قالب تأثیر بگذارد. یک پارامتر یک مقدار دارد . یک پارامتر با نام دارای یک نام است . یک پارامتر بی نام دارای یک موقعیت است . فراخوانی الگو یک پارامتر را مشخص می کند و کدی که این کار را انجام می دهد یک مشخصات پارامتر است . یک الگو یک پارامتر را تعریف می کند (نه به طور صریح -- فقط توسط قالبی که برای استفاده از آن طراحی شده است). کد موجود در یک الگو که به مقدار پارامتر گسترش می یابد (مثلاً {{{myparam}}}) یک مرجع پارامتر است .

تغییرات رایج

استفاده از "الگو" برای اشاره نه تنها به یک الگو، بلکه به فراخوانی الگو، نتیجه الگو و نام الگو معمول است.

به عنوان مثال:

این استفاده ها می تواند گیج کننده باشد، به خصوص برای افرادی که کمتر با قالب ها آشنا هستند. استفاده از زبان خاص تری را در نظر بگیرید.

جستجوی قالب

به عنوان جایگزینی برای استفاده از این فهرست پیوند داده شده در بالا، می توانید فضای نام الگو را با استفاده از کادر Special:Search زیر جستجو کنید:

همچنین ببینید

صفحات راهنما

صفحات راهنمای مدیاویکی

صفحات ویژه

سایر صفحات باطن

یادداشت ها

  1. ^ فضاهای نامی که انتقال از آنها مجاز نیست در ویکی توسط متغیر مشخص می شوند $wgNonincludableNamespaces.
  2. ^ برخی از الگوها، مانند , دارای کد برای نمایش به عنوان خروجی قابل مشاهده هستند. انجام این کار بر اساس الگو به الگو تعیین می شود.{{Requested move}}|reason=
  3. ^ هیچ راهی برای پیش نمایش اثر روی منبع صفحه جایگزین بدون ذخیره صفحه وجود ندارد
  4. ^ اگر علامت تساوی در فراخوانی الگوی دیگری یا مورد دیگری باشد که تجزیه کننده به طور جداگانه آن را مدیریت می کند، این مورد اعمال نمی شود.
  5. ^ مجدداً، اگر در یک آیتم جداگانه تجزیه‌شده دیگر، مانند یک ویکی‌پیوند لوله‌شده باشد، این مورد اعمال نمی‌شود.
  6. ^ برای یک نسخه قدیمی، درخت قالب فرعی مطابق با وضعیت فعلی الگوها ساخته می شود.
  7. ^ اینها در تابع doBlockLevels از Parser.php تعریف شده اند.