راهنما:الگو
با استفاده از فرآیندی به نام تراگنجانش میتوان تمام محتویات یک صفحه را در صفحه دیگری قرار داد. صفحههایی که به طور ویژه با این هدف ایجاد شده باشد را الگو مینامند.
در واقع این قابلیت در ویکی، نوعی زیرروال است و مانند یک عبارت 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}}|الگو وجود ندارد}} در حال حاضر است.
(پشتیبانی در نسخه ۱٫۴ و نسخ بعدی)
زمانی که یک صفحه را بدون یک خط خالی در پایان آن ذخیره کنید و سپس مجدداً به صفحه ویرای بروید، خط جدیدی در انتهای آن وجود خواهد داشت. هرچند به نظر میرسد که این کار بینتیجه است؛ ولی مثال زیر را ببینید:
{{نمونه نمایشی فهرست شمارهدار}}{{نمونه نمایشی فهرست شمارهدار}} {{نمونه نمایشی فهرست شمارهدار}}
که در آن سه بار از الگو:نمونه نمایشی فهرست شمارهدار استفاده شده، نتیجه زیر را برمیگرداند:
- ازبکستان
- افغانستان
- ایران
- تاجیکستان
- ازبکستان
- افغانستان
- ایران
- تاجیکستان
- ازبکستان
- افغانستان
- ایران
- تاجیکستان
در نام الگو، نویسه "#" و تمام نویسههای پس از آن، در نظر گرفته نخواهد شد؛ مثلاً نتیجه "{{ت ث#آ ب پ}}" عبارت "ت، ث" است.
در ویکیمتن، اگر عبارتی با یک جفت دوتایی ابروی باز شروع شده و با یک جفت دوتایی ابروی بسته تمام شود، هر سه ابروی پشت سرهم در آن به عنوان یک پارامتر تفسیر خواهد شد. برای جلوگیری از این مسئله حداقل بین یکی از دو جفت ابروهای پیاپی یک فاصله بدهید. به عنوان مثال، "{{{{ت ث}}}}" عبارت "{{{{ت ث}}}}" را برمیگرداند درحالیکه "{{{{ت ث}}}}" عبارت "الگو:ت، ث" را برمیگرداند.
با استفاده از ویژه:ExpandTemplates هر کسی میتواند ویکی متنی را که فراخوانی یک الگو ایجاد میکند را ببیند. در واقع این صفحه گام میانی تفسیر صفحات است.
استفاده از الگوها بین چند پروژه
الگوها زمانی کار میکنند که از همان پروژهای که در آن قرار دارند فراخوانده شوند. برای استفاده از یک الگو در پروژه دیگر، باید الگوی مورد نظر را در آن پروژه کپی کنید. تقاضای حذف این محدودیت در Bugzilla:1126 دادهشدهاست؛ یعنی اینکه بتوان از الگوها استفاده میانویکی کرد.
برای کپی الگو، به نحوی که در پروژه دیگر کار کند، تنظیماتی لازم است که با {{SERVER}}, <LOCALURL و نام فضاهای نام عمومی و نوشتن پیوندها به نحوی که در پروژههای مختلف کار کنند، میتوان این تنظیمات را کاهش داد. برای کپی چند الگو، راهنما:واردکردن و راهنما:صادرکردن را ببینید. همچنین مناسب است که نام الگو در پروژه دیگر با نام کنونی آن یکسان باشد؛ بنابراین زمانی که میخواهید الگوی جدید ایجاد کنید، نامهای مورد استفاده در سایر پروژهها را هم کنترل کنید. دقت کنید که اگر برای ارجاع به الگویی، عبارتی مانند abcراهنما استفاده گردد، در پروژهای که نام فضاهای نام متفاوت باشند، باید نامی جدید یا یک صفحه تغییرمسیر ایجاد گردد
انواع الگوها
الگوها بسته به کاربردشان به چند دسته تقسیم میشوند:
الگوهای اطلاعاتی
الگوهای اطلاعاتی یا الگوهای جعبهای الگوهایی هستند که در بالا و سمت چپ مقاله قرار میگیرند و اطلاعات مختصر و چکیده از موضوع ارائه میدهند (مثلا {{جعبه صورت فلکی}}) الگوی مادر این الگوها {{Infobox}} است.
در الگوهای اطلاعاتی معمولاً از پارامتر ورودی تصویر استفاده میشود و یکی از مشکلات احتمالی این است که تصویر به واسطه [[پرونده:...]] وارد شده باشد یا نشده باشد. چون خود الگو از «پرونده:» استفاده میکند میتواند باعث این شود که دو مورد از تگ پرونده داخل یکدیگر وارد شوند که در نمایش مقالات اینچنین نمایش داده شود:
[[پرونده:پرونده:Iranpedia-logo-v2.svg]]
برای جلوگیری از این اتفاق در زمان ایجاد خود الگو از کدی مشابه کد زیر برای قرار دادن تصویر استفاده نمایید (این کد برای زمان استفاده از الگو در داخل مقاله نیست):
{{#ifexpr:{{#invoke:String|find|{{{image|{{{تصویر|{{{عکس|}}}}}}}}}|%[%[.+%:|1|0}}>0|{{{image|{{{تصویر|{{{عکس|}}}}}}}}}|[[file:{{{image|{{{تصویر|{{{عکس|}}}}}}}}}|{{{اندازه تصویر|{{{اندازه عکس|{{{image size|220px}}}}}}}}}]]}}
الگوهای خرد و ابهامزدایی
{{خرد}} و {{موضوع-خرد}} (مثلا الگو:فیزیک-خرد) این الگوها هستند که در پایین مقالات جای میگیرند و برای مقالات خرد به کار میروند.
{{ابهامزدایی}} و مشتقاتش که الگوی مادر آنها الگو:Dmbox است در پایین مقالات به کار رفته و برای بیان ابهامزدایی بودن صفحه استفاده میشوند.
الگوهای پیامی
این الگوهای در بالای مقاله یا بخش مورد استفاده قرار میگیرند و برای پیام دادن به خواننده هستند مثلاً الگو:منبع که به خواننده هشدار میدهد که این مقاله منبعی ندارد الگوی مادر این الگوها بسته به فضای نام تغییر میکند به صورتی که برای فضای نام اصلی Ambox، برای فضای نام بحث Tmbox، برای فضای نام تصویر Imbox، فضای نام کاربری و ایرانپدیا Ombox، رده الگو:cmbox و برای استفاده در چند فضای نام کاربری mbox است.
الگوهای ویرایشی
این الگوها کمک دست کاربر در هنگام ویرایش است به طور مثال الگو:سخ متن را به خط بعدی میبرد یا الگو:جلالی تاریخ را به خورشیدی بیان میکند.
الگوهای ناوبری
جای این الگوها در پایین مقالهاست و برای ناوبری در مقالات مشابه به کار میرود مثلاً الگو:دهمین انتخابات ایران که برای ناوبری در مقالات مرتبط با انتخابات ۱۳۸۸ ایران به کار میرود و الگوی مادر آن الگو:Navbox است.
الگوهای مادر
این الگوها مستقیماً در مقالات استفاده نمیشوند بلکه شالوده الگوهایی را تشکیل میدهند که در مقالات به کار میرود و برای الگوهای ایرانپدیا یکدستی میآورند و مثلاً الگو:زنز مشابه الگو:بحث بیجا یا الگو:زبانهای ایرانی مشابه الگو:عناصر است.