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