راهنما:الگو
با استفاده از فرآیندی به نام تراگنجانش میتوان تمام محتویات یک صفحه را در صفحه دیگری قرار داد. صفحههایی که به طور ویژه با این هدف ایجاد شده باشد را الگو مینامند.
در واقع این قابلیت در ویکی، نوعی زیرروال است و مانند یک عبارت include# یا یک پیشپردازنده (Macro)، در زمان مشاهده صفحه باز میشود. با جانشانی میتوان از الگوها به عنوان نوعی پیشپردازنده استفاده کرد.
این صفحه و نسخه پیشرفته آن، راهنمای مرجع الگوها در مدیاویکی هستند. برای آشنایی با کلیات موضوع، راهنمای سریع الگوها و mw:Help:Templates را ببینید. برای دستوراتی که معمولاً در الگوها استفاده میگردند، راهنما:توابع تحلیلگر نحوی و سایر صفحات "تابعنویسی پیشرفته" که در زیر فهرست شدهاند را ببینید.
کلیات
فضاینام الگو یک فضاینام با پیشوند "الگو:" است.
صفحهای که در این فضاینام قرار دارد، الگو خوانده میشود. محتوای این صفحات (خواه ثابت باشد یا وابسته به یک یا چند پارامتر و یا متغیر باشد) طوری طراحی میشود که برای قرارگرفتن در سایر صفحات (تراگنجانش و ایجاد یک نوشته مرکب) مناسب باشد. در صفحه "پیوندهای به این صفحه" عبارتی که در صفحه مدیاویکی:Istemplate قرار دارد استفاده میشود که به صورت پیشفرض "inclusion" و گاهی اوقات "تراگنجانش" است و در ویکی کنونی "تراگنجانش" است.
دستوری که صفحه "الگو:نامالگو" را در صفحهای قرار میدهد، {{نامالگو}} است. این عبارت را برچسب الگو مینامند که با قرار دادن دو عدد ابرو در دوطرف نام صفحه الگو (بدون پیشوند الگو:) بهکار میرود.
مثال: آ، ب، پ، {{ت ث}}، ج، چ، ح، خ
(استفاده از الگو:ت ث که عبارت "ت ث" را برمیگرداند)
نتیجه: آ، ب، پ، الگو:ت ث، ج، چ، ح، خ.
این نوع از ارجاع در ویکیمتن باعث میشود که زمانی که صفحه مورد نظر فراخوانده میشود، محتویات الگو در محل فراخوانی وارد شود. برای این کار اطلاحات معادل زیر وجود دارند:
- تراگنجانش
- فراخوانی/استفاده از/گذاشتن/چسباندن الگو
- جاسازی کردن صفحه
برای ایجاد پیوند به صفحه یک الگو از دستور متداول ویکیپیوند یعنی [[الگو:نامالگو]] استفاده کنید.
صفحاتی که در فضاینامهای دیگر (غیر از فضای نام "الگو") قرار دارند نیز میتوانند به عنوان الگو استفاده شوند. البته فضاینامهایی که در $wgNonincludableNamespaces معین گردیدهاند، از این قاعده مستثنی هستند. برای استفاده از صفحهای که در فضاینام اصلی قرار دارد به عنوان الگو، قبل از نام صفحه علامت دونقطه قرار دهید.
زمانی که نام الگو با نام متغیری یکی باشد نیز برای استفاده از الگو از همین روش استفاده میشود. به عنوان مثال الگو:Ns:3 و الگو:نامصفحه را در نظر بگیرید. با وجود اینکه {{Ns:3}} و {{نامصفحه}} "بحث کاربر" و "الگو" را برمیگرداند، ولی {{:الگو:Ns:3}} و {{:الگو:نامصفحه}}، محتوای الگوها را برخواهد گرداند.
استفاده از صفحهای که خارج از فضاینام الگو قرار دارد، میتواند برای کارهای زیر مفید باشد:
- بیان پیامهای رابط کاربری در فضای نام مدیاویکی
- الگوهایی که برای استفاده شخصی در زیرصفحه صفحه کاربری کسی قرار گرفتهاند. مانند صفحات آزمایشی
- استفاده از یک صفحه در صفحات دیگری در همان فضای نام. به عنوان مثال زمانی که برای یک صفحه، صفحه اضافهای داشتهباشیم. مانند صفحه فهرست کارهای لازم (To-Do)؛ چنین صفحهای را میتوان با راهنما {{{{فضاینام}}:{{نامصفحه}}/فهرستکارهایلازم}} ایجاد کرد.
مانند روال معمول در بیشتر پروژههای ویکیمدیا که با حروف لاتین هستند، بزرگ یا کوچک بودن حروف نام الگو، به جز در حرف اول، مهم است. همچنین یک فاصله خالی (SPACE) با زیرخط (UNDERLINE یا ـ) همارز است. (برعکس این رویه در مورد نام متغیرها صادق است که در مورد آنها بزرگ و کوچک بودن حروف مهم است و بین فاصله خالی و زیرخط تفاوت وجود دارد.)
اگر صفحهای که برای تراگنجانش فراخواندهشده، وجود نداشته باشد، پیوندی به صفحه ویرایش آن صفحه ایجاد خواهد شد. (برای جزییات تبدیل به الگو:وجود مراجعه کنید.) بنابراین یکی از راههای ایجاد الگو این است که اول برچسب الگو را در صفحهای قرار دهیم و بعد پیوند ایجادشده را دنبال کنیم. این مورد یک استثنا دارد؛ اگر در فضاینام مدیاویکی صفحهای تراگنجانده شود، محتوای پیشفرض برای آن صفحه تراگنجانده خواهد شد. به عبارت دیگر بهجز تراگنجانش یک صفحه، میتوان یک پیام سیستم را در یک زبان خاص (بهطور پیشفرض زبان پیشفرض وبگاه) تراگنجاند و نتیجه به زبان رابط کاربری یک کاربر خاص وابسته نخواهد بود.
میتوان الگویی را فراخواند که خود، الگويی دیگر را فراخوانده باشد. اگر الگویی به طور مستقیم یا غیر مستقیم خود را فرابخواند، فراخوانی برای هر الگو فقط در یک مرحله انجام خواهد شد. اما اگر کسی بخواهد به تعداد دفعات معینی این کار را انجام دهد، میتوان با محدودکردن تعداد دفعات انتقال، این کار را انجام داد. برای توضیحات بیشتر تکرار در یک صفحه را ببینید.
متغیرهای یک الگو زمانی با مقدارشان جایگزین میشوند که محتویات الگو در صفحهای که الگو را فراخوانده، وارد شده باشد؛ به عنوان مثال اگر {{نامصفحه}} (یا در اصل {{PAGENAME}} در ویکیمتن یک الگو وجود داشته باشد، با نام صفحهای جایگزین میشود که الگو را فراخوانده است و نه نام الگو.
فهرست صفحاتی که به واسطه استفاده از الگوها در یک صفحه کنجانده شدهاند، به همراه پیوند به آنها در پایین صفحه ویرایش آورده میشود (این فهرست در جدولی با نام templatelinks در بانک داده نرمافزار مدیاویکی ذخیره میشود). نکات:
- در صفحه ویرایش یک بخش، ابتدا تمام فهرست نمایش داده میشود؛ یعنی الگوهایی که در سایر بخشها استفاده شده نیز فهرست میشوند. بعد از این که کلید پیشنمایش فشار داده شد، صرفاً الگوهایی فهرست میشوند که در بخش مورد ویرایش وجود دارند و در این حالت الگوهای جدیدی که در ویرایشهای انجام شده اضافه شدهاند نیز فهرست میشوند.
- به همین ترتیب، در هنگام ویرایش نسخه قدیمی یک صفحه، ابتدا الگوهای نسخه فعلی فهرست میشوند؛ در حالی که در اولین پیشنمایش، الگوهایی فهرست میشوند که در ویرایش کنونی (با در نظر گرفتن تغییرات انجام شده) وجود دارند.
- اگر صفحهای با دستورهای if# یا ifeq# یا ifexist# یا ifexpr# یا switch# به صورت شرطی فراخوانده شود، جاسازیشده به حساب خواهد آمد، حتی اگر شرط مورد نظر برآورده نشود.
- اگر نام یک صفحه جاسازی شده، یک عبارت باشد، نتیجه عبارت نمایش داده میشود. مثلاً نتیجه {{abc{{CURRENTDAY}}}} در حال حاضر الگو:Abc۲ است و نتیجه {{{{#ifexist:الگو:آ|آ|x1}}|الگو وجود ندارد}} در حال حاضر الگو:X1 است.
(پشتیبانی در نسخه ۱.۴ و نسخ بعدی)
زمانی که یک صفحه را بدون یک خط خالی در پایان آن ذخیره کنید و سپس مجدداً به صفحه ویرای بروید، خط جدیدی در انتهای آن وجود خواهد داشت. هرچند به نظر میرسد که این کار بینتیجه است؛ ولی مثال زیر را ببینید:
{{نمونه نمایشی فهرست شمارهدار}}{{نمونه نمایشی فهرست شمارهدار}} {{نمونه نمایشی فهرست شمارهدار}}
که در آن سهبار از الگو:نمونه نمایشی فهرست شمارهدار استفاده شده، نتیجه زیر را برمیگرداند:
در نام الگو، نویسه "#" و تمام نویسههای پس از آن، در نظر گرفته نخواهد شد؛ مثلاً نتیجه "{{ت ث#آ ب پ}}" عبارت "الگو:ت ث" است. از این خاصیت در ( edit history links ) استفاده شده است.
در ویکیمتن، اگر عبارتی با یکجفت دوتایی ابروی باز شروع شده و با یک جفت دوتایی ابروی بسته تمام شود، هر سه ابروی پشت سرهم در آن به عنوان یک پارامتر تفسیر خواهد شد. برای جلوگیری از این مساله حداقل بین یکی از دوجفت ابروهای پیاپی یک فاصله بدهید. به عنوان مثال، "{{{{ت ث}}}}" عبارت "{{{{ت ث}}}}" را برمیگرداند درحالیکه "{{ {{ت ث}}}}" عبارت "{{الگو:ت ث }}" را برمیگرداند.
با استفاده از ویژه:ExpandTemplates هر کسی میتواند ویکی متنی را که فراخوانی یک الگو ایجاد میکند را ببیند. در واقع این صفحه گام میانی تفسیر صفحات است.
استفاده از الگوها بین چند پروژه
الگوها زمانی کارمیکنند که از همان پروژهای که در آن قرار دارند فراخوانده شوند. برای استفاده از یک الگو در پروژه دیگر، باید الگوی مورد نظر را در آن پروژه کپی کنید. تقاضای حذف این محدودیت در Bugzilla:1126 دادهشده است؛ یعنی اینکه بتوان از الگوها استفاده میانویکی کرد.
برای کپی الگو، به نحوی که در پروژه دیگر کار کند، تنظیماتی لازم است که با {{ SERVER}}، <LOCALURL و نام فضاینامهای عمومی و نوشتن پیوندها به نحوی که در پروژههای مختلف کار کنند، میتوان این تنظیمات را کاهش داد. برای کپی چند الگو، راهنما:واردکردن و راهنما:صادرکردن را ببینید. همچنین مناسب است که نام الگو در پروژه دیگر با نام کنونی آن یکسان باشد. بنابراین زمانی که میخواهید الگوی جدید ایجاد کنید، نامهای مورد استفاده در سایر پروژهها را هم کنترل کنید. دقت کنید که اگر برای ارجاع به الگویی، عبارتی مانند abcراهنما استفاده گردد، در پروژهای که نام فضاینامها متفاوت باشند، باید نامی جدید یا یک صفحه تغییرمسیر ایجاد گردد
بنابراین تراگنجانش بین پروژهها از یک محل مشترک تنها در موارد زیر ممکن است:
- برای تصاویری که در ویکیانبار قرار گرفتهاند.
- برای متون قابل ویرایش صفحه تصویری که در ویکیانبار قرار دارد که شامل موارد تراگنجاندهشده از سایر صفحات ویکیانبار به صفحات تصاویر معادل کنونی نیز میشود.
الگوهای موجود در ویکیای مرکزی با پیشوند "wikia:" در سایر پروژههای ویکیا قابل استفادهاند. برای اطلاعات بیشتر این صفحه را ببینید. توجه کنید که الگوهای ویکیا توسط بنیاد ویکیمدیا میزبانی نمیشوند.)
گاهی اوقات پروژههای مختلف به صفحاتی احتیاج دارند که قسمتی مشابه و قسمتی متفاوت باشند. به عنوان مثال در برخی پروژهها، "m:" و در برخی دیگر "MetaWikipedia:" به عنوان پیوند میانویکی به فراویکی استفاده میشود. برای این کار ویکیمتنهای ویژهای به کار میروند (که الگوهای project-specific نامیده میشوند.) در مثالی که به آن اشارهشد، میتوان در نامصفحه عبارت {{meta}} را آورد؛ چراکه در هر پروژه صفحهای با نام Template:Meta وجود دارد که پیشوند مورد نیاز را در خود دارد.
انواع الگوها
الگوها بسته به کاربردشان به چند دسته تقسیم میشوند:
الگوهای اطلاعاتی
الگوهای اطلاعاتی یا الگوهای جعبهای الگوهایی هستند که در بالا و سمت چپ مقاله قرار میگیرند و اطلاعات مختصر و چکیده از موضوع ارائه میدهند (مثلا الگو:جعبه صورت فلکی) الگوی مادر این الگوها الگو:Infobox است.
الگوهای خرد و ابهامزدایی
{{خرد}} و {{موضوع-خرد}} (مثلا الگو:فیزیک-خرد) این الگوها هستند که در پایین مقالات جای میگیرند و برای مقالات خرد به کار میروند.
{{ابهامزدایی}} و مشتقاتش که الگوی مادر آنها الگو:Dmbox است در پایین مقالات به کار رفته و برای بیان ابهامزدایی بودن صفحه استفاده میشوند.
الگوهای پیامی
این الگوهای در بالای مقاله یا بخش مورد استفاده قرار میگیرند و برای پیام دادن به خواننده هستند مثلا الگو:منبع که به خواننده هشدار میدهد که این مقاله منبعی نداردالگوی مادر این الگوها بسته به فضای نام تغییر میکند به صورتی که برای فضای نام اصلی Ambox، برای فضای نام بحث Tmbox، برای فضای نام تصویر Imbox، فضای نام کاربری و ویکینور Ombox، رده الگو:cmbox و برای استفاده در چند فضای نام کاربری mbox است.
الگوهای ویرایشی
این الگوها کمک دست کاربر در هنگام ویرایش است به طور مثال الگو:سخ متن را به خط بعدی میبرد یا الگو:جلالی تاریخ را به خورشیدی بیان میکند.
الگوهای ناوبری
جای این الگوها در پایین مقالهاست و برای ناوبری در مقالات مشابه به کار میرود مثلا الگو:دهمین انتخابات ایران که برای ناوبری در مقالات مرتبط با انتخابات ۱۳۸۸ ایران به کار میرود و الگوی مادر آن الگو:Navbox است.
الگوهای مادر
این الگوها مستقیما در مقالات استفاده نمیشوند بلکه شالوده الگوهایی را تشکیل میدهند که در مقالات به کار میرود و برای الگوهای ویکینور یکدستی میآورند و مثلا الگو:زنز مشابه الگو:بحث بیجا یا الگو:زبانهای ایرانی مشابه الگو:عناصر است.