ข้ามไปเนื้อหา

วิธีใช้:แม่แบบ

จากวิกิพีเดีย สารานุกรมเสรี
วิดีโอแนะนำแม่แบบเบื้องต้น (พากย์อังกฤษ บรรยายไทย)

แม่แบบ (template) เป็นหน้าของวิกิพีเดียที่ตั้งใจให้รวมอยู่ในหน้าอื่น ปกติมีเนื้อความซ้ำ ๆ มักจะมีเนื้อหาที่อาจมีความจำเป็นต้องแสดงในหน้าอื่นซ้ำ ๆ การใช้ที่พบบ่อย เช่น เป็นสารสำเร็จรูป คำเตือนหรือประกาศมาตรฐาน กล่องข้อมูล กล่องนำทาง และเพื่อวัตถุประสงค์ที่คล้ายกัน

วิธีการใส่แม่แบบที่พบบ่อยที่สุด เรียก การรวมข้าม (transclusion) โดยข้อความวิกิของหน้าเป้าหมายมีการพาดพิงถึงแม่แบบ โดยใช้วากยสัมพันธ์ {{ชื่อแม่แบบ}} อีกวิธีหนึ่งได้แก่การแทนที่ (substitution) โดยที่มีการคัดลอกเนื้อหาของแม่แบบลงในข้อความวิกิของหน้าเป้าหมายครั้งเดียวเมื่อบันทึก

คำอธิบายทั่วไป

[แก้]

แม่แบบส่วนใหญ่ได้แก่หน้าในเนมสเปซแม่แบบ ซึ่งหมายความว่าแม่แบบจะมีชื่อในรูป "แม่แบบ:XXXX" ทว่า การรวมข้ามและแทนที่สามารถทำได้จากเนมสเปซใดก็ได้ แม่แบบบางอย่างจึงจัดอยู่ในเนมสเปซอื่น เช่น เนมสเปซผู้ใช้ หน้าแม่แบบมีหน้าคุยที่สัมพันธ์กับแม่แบบนั้นด้วย

แม่แบบสามารถมีข้อความวิกิใดก็ได้ตามประสงค์ รวมทั้งการเรียกแม่แบบอื่น แต่มีสมรรถนะโปรแกรมจำกัดบางอย่าง ได้แก่ ค่าปรับแต่งได้ (เรียก "ตัวแปรเสริม") การคำนวณและการแตกกิ่ง (โดยใช้ฟังก์ชันตัวแจงส่วน) และการเข้าถึงตัวแปรจำเพาะต่อวิกิ (เมจิกเวิร์ด) อย่างเช่น วันที่ เวลาและชื่อหน้า แม่แบบยังอาจมีป้ายระบุซึ่งนิยามว่าจะรวมส่วนใดของข้อความวิกิหากรวมผ่านหรือแทนที่แม่แบบ หมายความว่า ลักษณะปรากฏของหน้าแม่แบบไม่จำเป็นต้องเหมือนกับเนื้อหาที่รวมข้าม (ตัวอย่างเช่น สามารถมีเอกสารประกอบ หมวดหมู่ของแม่แบบ เป็นต้น)

วิธีการ: ในการรวมข้ามแม่แบบเข้าสู่บทความหรือหน้าหนึ่ง ให้พิมพ์ {{ชื่อแม่แบบ}} ในข้อความวิกิตรงกับที่ที่จะให้แม่แบบปรากฏ อักษรตัวแรกจะเป็นตัวเล็กหรือใหญ่ก็ได้

คำขึ้นต้น แม่แบบ: ก่อนชื่อแม่แบบเป็นคำขึ้นต้นโดยปริยายและไม่จำเป็นต้องใส่ แต่สำหรับแม่แบบที่เก็บไว้ในเนมสเปซอื่น จะต้องระบุคำนำหน้า เช่น ผู้ใช้: ด้วย ในการรวมข้ามหน้าในเนมสเปซหลัก ให้ใส่เครื่องหมายทวิภาคก่อนชื่อเรื่อง เช่น {{:ชื่อหน้า}}

 หมายเหตุ: การพยายามรวมข้ามแม่แบบที่ยังไม่มีผู้สร้างจะก่อให้เกิดลิงก์แดง เช่นเดียวกับการเชื่อมโยงไปยังหน้าที่ไม่มีอยู่อื่น การคลิกลิงก์นั้นจะทำให้บุคคลสร้างแม่แบบนั้น ๆ ได้ ไม่สามารถรวมข้ามหน้าระหว่างโครงการได้ (เช่น วิกิพีเดียภาษาอื่น หรือโครงการพี่น้องของวิกิมีเดีย) ในการใช้แม่แบบในโครงการอื่น จะต้องสร้างแม่แบบเดียวกันขึ้นมาในโครงการนั้น ๆ

วากยสัมพันธ์การใช้

[แก้]

ตัวแปรเสริม

[แก้]

วากยสัมพันธ์การรวมข้ามพื้นฐานที่ให้ไว้ข้างต้นสามารถขยายได้ด้วยการเพิ่มตัวแปรเสริม ซึ่งใช้เพื่อควบคุมผลป้อนกลับของแม่แบบ วากยสัมพันธ์สำหรับตัวแปรเสริมได้แก่ {{ชื่อแม่แบบ|ตัวแปรเสริม|ตัวแปรเสริม|...}} โดยที่ ชื่อแม่แบบ เป็นชื่อของแม่แบบ และ ตัวแปรเสริม อาจมีเพียงค่าค่าหนึ่ง (จะเรียก ตัวแปรเสริมไม่มีชื่อ) หรือจะอยู่ในรูป ชื่อ=ค่า ( ตัวแปรเสริมมีชื่อ) ก็ได้ ตัวแปรเสริมไม่มีชื่อลำดับที่หนึ่ง สองและสาม จะได้รับชื่อ 1, 2, 3 ตามลำดับ เป็นต้น

อักขระช่องว่าง (ว่าง จุดตั้งระยะ ป้อนกลับ) จะถูกลบออกจากจุดเริ่มต้นและสิ้นสุดของชื่อและค่าตัวแปรเสริมมีชื่อ แต่ไม่ลบออกจากตรงกลาง ฉะนั้น {{ ... | myparam = this is a test }} จึงมีผลเช่นเดียวกับ {{ ... |myparam=this is a test}} ทั้งนี้ ไม่รวมถึงตัวแปรเสริมไม่มีชื่อ ซึ่งจะคงอักขระช่องว่างทุกตัวไว้

ตัวแปรเสริมใด (ถ้ามี) สามารถหรือควรผ่านเข้าสู่แม่แบบบ้าง และวิธีการตั้งชื่อตัวแปรเสริม ขึ้นอยู่กับการเข้ารหัสของแม่แบบนั้น ตัวแปรเสริมสามารถนิยามลำดับก่อนหลังอย่างไรก็ได้ ตัวแปรเสริมฟุ่มเฟือยหรือเขียนชื่อผิดจะไม่มีผล ตัวแปรเสริมที่ไม่นิยามจะได้รับกำหนดค่าโดยปริยาย หากมีการนิยามตัวแปรเสริมหนึ่งมากกว่าหนึ่งครั้ง ค่าสุดท้ายจะมีผล

ค่าของตัวแปรเสริมสามารถเป็นสายอักขระว่าง เช่น เมื่อเครื่องหมายไพป์หรือเท่ากับตามด้วยเครื่องหมายไพป์ถัดไปหรือวงเล็บปิดทันที ซึ่งต่างจากการข้ามตัวแปรเสริมไปโดยสิ้นเชิง ซึ่งจะปล่อยตัวแปรเสริมไว้โดยไม่นิยาม แม้แม่แบบมักเข้ารหัสโดยให้ทั้งสองกรณีเท่ากัน

สามารถนิยามตัวแปรเสริมแม้ไม่มีอยู่ในรหัสของแม่แบบ ตัวอย่างเช่น |reason= มักใช้เป็นตัวแปรเสริมเทียมเพื่ออธิบายสั้น ๆ ในรหัสว่าเหตุใดจึงใส่แม่แบบไว้ บางแม่แบบเรียก มอดูล:ตรวจสอบพารามิเตอร์ที่ไม่รู้จัก เพื่อเตือนผู้ใช้ว่ากำลังใช้ตัวแปรเสริมที่ไม่มีการอธิบายในรหัสของแม่แบบ ซึ่งส่วนใหญ่ใช้กับกล่องข้อมูลและแม่แบบอื่นที่มีตัวแปรเสริมซับซ้อนจำนวนมาก โดยที่ถ้ามีตัวแปรเสริมที่ไม่รู้จักปกติจะทำให้เกิดข้อผิดพลาดโดยไม่ได้ตั้งใจ หากคุณปรับแม่แบบดังกล่าวให้รวมตัวแปรเสริมใหม่ จะต้องปรับการเรียกมอดูลด้วยเพื่อให้คิดรวมตัวแปรเสริมใหม่

การเรียก

[แก้]

การเรียกแม่แบบไม่ต่างจากการเรียกตัวแปรหรือฟังก์ชันในภาษาโปรแกรม คือ เรียกแม่แบบด้วยการอ้างอิงและแม่แบบจะคืนค่าค่าหนึ่งมา (สิ่งออก) เช่นเดียวกับฟังก์ชัน บางแม่แบบยอมรับตัวแปรเสริมที่เปลี่ยนแปลงสิ่งออกได้

ในมีเดียวิกิ ซึ่งเป็นซอฟต์แวร์วิกิที่วิกิพีเดียใช้ ตัวแปรมีความหมายจำเพาะกว่าซึ่งทำให้ตัวแปรต่างจากแม่แบบ แต่ทั้งสองเขียนด้วยเครื่องหมายวงเล็บปีกกาคู่ {{ }} ปิดหน้าท้ายเหมือนกัน และคืนค่าค่าหนึ่งเหมือนกัน

ขณะที่ชื่อตัวแปรมีเดียวิกิเป็นอักษรตัวใหญ่ทั้งหมด แต่ชื่อแม่แบบมีคุณลักษณะพื้นฐานและข้อจำกัดเดียวกับชื่อหน้าทั้งหมด คือ ไวต่ออักษรใหญ่เล็ก (ยกเว้นสำหรับอักขระตัวแรก) เส้นใต้อักขระมีการแจงส่วนเป็นว่าง และชื่อแม่แบบไม่สามารถมีอักขระต่อไปนี้ # < > [ ] | { } เพราะต้องสงวนไว้สำหรับมาร์กอัพวิกิและเอชทีเอ็มแอล

สัญลักษณ์นัมเบอร์ # เรียก ตัวระบุส่วนแฟรกเมนต์ เพราะสัญลักษณ์นี้แสดงแฟรกเมนต์หรือส่วนหนึ่งของเอกสาร (เช่น ส่วนในบทความวิกิพีเดีย) แม้สัญลักษณ์ดังกล่าวสามารถใช้เพื่อเชื่อมโยงไปยังส่วนของหน้าแมแบบได้ (เช่น แม่แบบ:สถานีย่อย2#ตัวอย่าง) แต่ไม่มีเหตุผลต้องใส่ตัวระบุแฟรกเมนต์หรือชื่อแฟรกเมนต์ในอ้างอิงแม่แบบ ตัวอย่างเช่น ใน {{Portal#Location|Books}} สายอักขระ #Location ไม่มีจุดประสงค์จึงถูกละเลย

ตัวอย่างการใช้แม่แบบพื้นฐาน

[แก้]

 หมายเหตุ: หากคุณประสงค์ทดลองกับแม่แบบ กรุณาใช้หน้าผู้ใช้ของคุณหรือกระบะทราย

ตัวอย่างของแม่แบบง่ายมากแม่แบบหนึ่งพบได้ที่ แม่แบบ:Lambda ซึ่งขยายออกไปเพื่อวางสัญลักษณ์แลมดา ณ จุดนั้นในข้อความ โปรแกรมเมอร์จะกล่าวว่าแม่แบบนี้คืนสัญลักษณ์แลมดา (λ)

คลิกที่ แม่แบบ:Lambda แล้วคลิกตรงแถบ "แก้ไขต้นฉบับ" เพื่อดูรหัสของแม่แบบ (หรือข้อความวิกิ) ส่วนที่ "มีผล" ของรหัส ที่เรียก ส่วนขยาย (expansion) ของแม่แบบนั้น เป็นคำคำเดียว &lambda; ข้อความวิกิที่เหลืออยู่ภายในป้ายระบุ <noinclude> ฉะนั้นจึงแสดงผลในหน้าแม่แบบเองแต่จะไม่แสดงผลเมื่อมีการใช้ (หรือเรียก) แม่แบบในหน้าอื่น

ในการรวมข้ามแม่แบบ:Lambda ในหน้าอื่น (คือการใช้ในหน้าอื่นนั่นเอง) ให้พิมพ์ {{lambda}} (หรือ {{Lambda}} ก็ได้ เพราะอักษรตัวแรกจะเป็นอักษรเล็กหรือใหญ่ก็ได้) ลงในข้อความวิกิของหน้าเป้าหมายแล้วกด แสดงตัวอย่าง จะแสดงผลหน้าด้วย การเรียกแม่แบบ แทนที่ด้วยส่วนขยายของแม่แบบ ราวกับว่าข้อความวิกิตรงนั้นมี &lambda; อยู่จริง หน้าที่แสดงผลจึงมีข้อความ "λ" ปรากฏ

ตัวอย่างเช่น พิมพ์ อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{lambda}}) คุณจะเห็นว่า "อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{lambda}})" เมื่อดูตัวอย่างหน้าหรือหลังบันทึกการเปลี่ยนแปลง คุณสามารถใช้แม่แบบได้โดยไม่ต้องรู้รายละเอียดของรหัส เพียงแต่คุณต้องจำได้ว่าแม่แบบจะได้ผลลัพธ์อย่างไร ซึ่งปกติอธิบายไว้ในหน้าแม่แบบอยู่แล้ว

การใช้แม่แบบนี้อีกทางหนึ่งได้แก่การแทนที่แม่แบบ หากคุณพิมพ์ อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{subst:lambda}}) แล้วดูตัวอย่างหรือบันทุกหน้า คุณจะเห็น "อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา (λ)" อีกครั้ง แต่เมื่อคุณย้อนกลับไปดูข้อความวิกิที่บันทึกไว้ คุณจะเห็นว่าการเรียกแม่แบบถูกแทนที่ด้วยส่วนขยายของแม่แบบเมื่อคุณบันทึกหน้า ลิงก์ระหว่างข้อความออกและแม่แบบเสียไป และผลออกจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงในแม่แบบหลังจากนั้น (ซึ่งจะเกิดในกรณีการรวมข้าม)

ตัวอย่างกับตัวแปรเสริม

[แก้]

ตัวอย่างของแม่แบบที่รับตัวแปรเสริม ได้แก่ แม่แบบ {{เกี่ยวกับ}} ลองพิมพ์ {{เกี่ยวกับ|วิธีใช้แม่แบบ|วิธีใช้มอดูล|วิธีใช้:มอดูล}} ในหน้าทดลอง (หรือกระบะทราย) จะได้ข้อความต่อไปนี้

แม่แบบ {{เกี่ยวกับ}} ใช้ตัวแปรเสริมไม่มีชื่อสามตัวแปรในตัวอย่างข้างต้น แต่แม่แบบเดียวกันนี้ยังสามารถใช้ได้โดยระบุตัวแปรเสริมจำนวนต่างกันซึ่งจะให้ผลต่างกันเล็กน้อย ตัวอย่างเช่น {{เกี่ยวกับ|&#124วิธีใช้มอดูล|วิธีใช้:มอดูล}} สังเกตการใช้ตัวแปรเสริมว่าง ในตัวอย่างนี้ไพป์ที่เขียนติดกันหมายความว่าตัวแปรเสริมแรกที่ "มีการผ่าน" ไปยังแม่แบบเป็นสายอักขระว่าง ซึ่งในแม่แบบนี้จะทำให้แม่แบบเว้นประโยค "เกี่ยวกับ" เริ่มต้น คุณจะได้

แม่แบบอื่น โดยเฉพาะอย่างยิ่งแม่แบบที่ซับซ้อนขึ้น รับตัวแปรมีชื่อหรือตัวแปรที่มีชื่อและไม่มีชื่อผสมกัน ตัวอย่างอย่างง่ายเช่น แม่แบบ:Payoff matrix ซึ่งใช้เพื่อสร้างตารางขนาด 2×2 ตัวอย่างเช่น

มาร์กอัป แสดงผลเป็น
{{payoff matrix | UL = 5 | UR = 7 | DL = 2 | DR = 9 | Name = ตัวอย่างการใช้ }}
Left Right
Up 5 7
Down 2 9
ตัวอย่างการใช้

ดู หน้าแม่แบบ สำหรับความน่าจะเป็นมากขึ้น สังเกตว่าแม่แบบที่ใช้ข้างต้นไม่ได้นิยามตัวแปรเสริมทั้งหมดที่มีอยู่ ตัวแปรที่ไม่นิยามเหล่านี้จะได้กำหนดค่าโดยปริยาย

ช่องว่างหน้าและหลังเครื่องหมายเท่ากับ และก่อนและหลังตัวแปรเสริมใช้เพื่อทำให้กระจ่างเท่านั้น แต่ไม่มีความจำเป็นและจะถูกละเลยเมื่อมีการประเมินแม่แบบ (แต่สำหรับตัวแปรเสริมไม่มีชื่อจะยังนำมาคิดอยู่) ชื่อตัวแปรเสริมไวต่ออักษรใหญ่เล็ก ตัวอย่างเช่น จะไม่สามารถเขียน DR ผิดเป็น dr หรือ dR ในตัวอย่างข้างต้นได้ ตัวแปรเสริมซึ่งมีชื่อที่ไม่ได้ใช้ในแม่แบบจะถูกละเลย

พิจารณารหัสต้นทางของแม่แบบแสดงมาร์กอัพตารางมาตรฐานโดยมีเอนทิตีวงเล็บสามวงเล็บเป็นตัวแทนของตัวแปรเสริม

{| id="Payoff matrix" style="background:white; float: {{{Float|right}}}; clear:right; text-align:center;" align={{{Float|right}}} cellspacing=0 cellpadding=8 width={{{Width|225}}}
|-
|style="width:33%;                                                     "| 
|style="width:33%;                      border-bottom: solid black 1px;"| {{{2L|Left}}}
|style="width:33%;                      border-bottom: solid black 1px;"| {{{2R|Right}}}
|-
|style="border-right:  solid black 1px; text-align: right;             "| {{{1U|Up}}}
|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="border-right:  solid black 1px; text-align: right;             "| {{{1D|Down}}}
|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="font-size: 90%;" colspan=3 |''{{{Name|{{PAGENAME}}}}}''
|}

เอนทิตี {{{2L|Left}}} สั่งแม่แบบให้ใช้ตัวแปรเสริมมีชื่อ 2L หรือข้อความ Left หากตัวแปรเสริมดังกล่าวไม่มีอยู่ในการเรียก

การสร้างและแก้ไขแม่แบบ

[แก้]

การสร้างและแก้ไขแม่แบบก็มีวิธีเช่นเดียวกับหน้าอื่น เริ่มจากเลือกชื่อที่เหมาะสม นำทางไปยังหน้านั้น แล้วคลิกแถบ "แก้ไข" หรือสร้างหน้าใหม่ตามความจำเป็น ดังที่กล่าวข้างต้น ปกติแม่แบบจะจัดอยู่ในเนมสเปซแม่แบบ แม้แม่แบบที่ตั้งใจสำหรับใช้ส่วนตัวคุณเองหรือสำหรับทดลองสามารถสร้างในเนมสเปซผู้ใช้ของคุณเอง ทุกอย่างที่สามารถใส่ในหน้าปกติหรือบทความสามารถใส่ในแม่แบบได้ รวมทั้งแม่แบบอื่นด้วย (เรียก แม่แบบย่อย) แม่แบบมักนำคุณลักษณะการเขียนโปรแกรม ได้แก่ ตัวแปรเสริม ฟังก์ชันตัวแจงส่วน และเมจิกเวิร์ดอื่น ซึ่งทำให้เนื้อหาที่รวมข้ามนั้นมีได้หลากหลายขึ้นอยู่กับบริบท นอกจากนี้ยังมีป้ายระบุพิเศษเพื่อควบคุมว่าจะรวมข้ามสารสนเทศใดบ้าง

ก่อนสร้างแม่แบบ ให้ค้นหาแม่แบบที่มีอยู่แล้วเร็ว ๆ (เช่น โดยการสำรวจ หมวดหมู่:แม่แบบวิกิพีเดีย) เพื่อดูว่ามีแม่แบบที่ทำสิ่งที่คุณต้องการหรือแม่แบบคล้ายกันที่สามารถคัดลอกและดัดแปรแม่แบบ (หรือคงไว้และขยายแม่แบบเพิ่ม) หรือไม่ มองหาแม่แบบทั่วไปซึ่งสามารถต่อเติมเป็นแม่แบบใหม่ได้ ตัวอย่างเช่น แม่แบบกล่องนำทางสามารถสร้างได้ง่ายโดยการเรียก แม่แบบ:Navbox ทั่วไป

ไม่มีกฎเหล็กว่าควรเลือกชื่อใดเป็นชื่อแม่แบบ แต่ควรเป็นชื่อสั้น ๆ แต่บรรยายสรรพคุณได้ครบถ้วนพอสมควร หากมีแม่แบบคล้ายกัน ลองใช้รูปแบบการตั้งชื่อให้สอดคล้องกัน แม่แบบสามารถเปลี่ยนชื่อได้โดยไม่ทำให้การรวมข้ามที่ใช้อยู่แล้วเสียไป ถ้ามีการเปลี่ยนทางไปยังชื่อแม่แบบใหม่

ระมัดระวังอย่างยิ่งเมื่อแก้ไขแม่แบบที่มีอยู่เดิม การเปลี่ยนแปลงสามารถมีผลกระทบต่อหน้าจำนวนมาก ซึ่งบ่อยครั้งมักเป็นผลกระทบที่คุณอาจคาดไม่ถึง ด้วยเหตุนี้แม่แบบที่ใช้มากหลายแม่แบบจึงมีการป้องกันการแก้ไขยกเว้นผู้ดูแลระบบ ส่วนผู้เขียนคนอื่นสามารถเสนอแนะข้อเปลี่ยนแปลงได้ทางหน้าคุย บางแม่แบบมีหน้ากระบะทรายและชุดทดสอบสำหรับทดลอง

สามารถเสนอให้ลบหรือรวมแม่แบบได้เช่นเดียวกับหน้าอื่น

การจัดการตัวแปรเสริม

[แก้]

ค่าของตัวแปรเสริมซึ่งสามารถป้อนเข้าสู่แม่แบบจะปรากฏในรหัสแม่แบบเป็นไอเท็มที่อยู่ระหว่างวงเล็บสามตัว ดังนี้

  • รหัส {{{xxx}}} จะถูกแทนด้วยค่าของตัวแปรเสริมชื่อ xxx ตัวแปรเสริมเหล่านี้เรียก "ตัวแปรเสริมมีชื่อ"
  • รหัส {{{1}}}, {{{2}}} เป็นต้น จะถูกทแนที่ด้วย "ตัวแปรเสริมไม่มีชื่อ" ลำดับแรก ลำดับสอง เป็นต้น (หรือค่าของตัวแปรเสริมชื่อ 1, 2 เป็นต้น)

หากตัวแปรเสริมไม่ได้รับกำหนดค่า ก็จะไม่มีการแทนที่เกิดขึ้น หมายความว่าถ้าไม่มีค่าถูกส่งผ่านสำหรับตัวแปรเสริม |xxx= ค่าของนิพจน์ {{{xxx}}} ในแม่แบบจะเป็น "{{{xxx}}}" ตามอักษร ไม่ใช่ 'ว่าง' อย่างที่คุณคาดไว้ คุณสามารถแก้ไขพฤติกรรมแบบนี้ได้โดยการกำหนดค่าตัวแปรเสริมโดยปริยาย ซึ่งทำได้โดยใช้ "วากยสัมพันธ์ไพป์" โดย {{{xxx|dflt}}} เจาะจงค่าโดยปริยาย dflt สำหรับตัวแปรเสริมมีชื่อ |xxx= และ {{{1|dflt}}} เจาะจงค่าโดยปริยาย dflt สำหรับตัวแปรเสริมไม่มีชื่อตัวแรก บ่อยครั้งวากยสัมพันธ์ไพป์ใช้กำหนดค่าโดยปริยายว่าง เช่น {{{1|}}} หรือ {{{xxx|}}}

หมายเหตุว่าค่าโดยปริยายจะต้องเป็นข้อความจริง คือคุณไม่สามารถกำหนดตัวแปรเสริมอีกตัวแปรหนึ่งเป็นค่าโดยปริยายได้ จะทำให้ตัวแปรเสริมคืนค่าเป็นชื่อของตัวแปรเสริมเป็นข้อความ

เนื่องจากมีการใช้วากยสัมพันธ์วงเล็บคู่และวงเล็บสามหลายครั้ง บางทีนิพจน์อาจดูกำกวม อาจเป็นประโยชน์หรือมีความจำเป็นในการใส่อักขระว่างเพื่อลดความกำกวมนั้น ตัวอย่างเช่น {{ {{{xxx}}} }} หรือ {{{ {{xxx}} }}} อย่างไรก็ดี พึงระวังช่องว่างไม่พึงประสงค์ที่ปรากฏในการขยายแม่แบบด้วย

กรณีพิเศษ: ป้ายระบุเปิดสไตล์เอกซ์เอ็มแอล

[แก้]

ตัวแปรเสริมจะไม่ขยายเมื่อวนรอบด้วยป้ายระบุ <nowiki> จะไม่ขยายตัวแปรเสริมหากวางอยู่ในป้ายระบุเปิดแบบเอกซ์เอ็มแอล ฉะนั้น รายการต่อไปนี้จะใช้การไม่ได้ในแม่แบบ

  • <ref name={{{param}}}> Smith, Adam (1776)...</ref>

เพราะตัวแปรเสริมไม่มีการขยาย แต่คุณสามารถใช้ {{#tag:}} ซึ่งเป็นฟังก์ชันตัวแจงส่วน ยกตัวอย่างใช้ใน {{sfn}} เพื่อก่อกำเนิดส่วนย่อย <ref>...</ref> ฉะนั้น ตัวอย่างต่อไปนี้จะใช้การได้

  • {{#tag:ref | Marx, Karl (1848)... | name={{{param}}} }}

ระวัง: ยูอาร์แอลที่ขยายมากเกิน

[แก้]

หากค่าของตัวแปรเสริมเป็น (หรือลงท้ายด้วย) ยูอาร์แอล ให้ตรวจดูว่ายูอาร์แอลแสดงผลในวิกิพีเดียเป็นลิงก์ที่ขยายมากเกินด้วยอักขระตั้งแต่หนึ่งตัวขึ้นไปตามหลังยูอาร์แอลหรือไม่ เพื่อไม่ให้เวลาคลิกลิงก์แล้วทำให้เกิดข้อผิดพลาดหรือล้มเหลว รับประกันว่าหลังซอฟต์แวร์ประมวลผลแล้ว ช่องว่างอ่อน (ไม่ใช่ช่องว่างแข็งหรือไม่แบ่ง) ตามหลังยูอาร์แอล ไม่ว่าคุณหรือผู้ใช้เป็นผู้ใส่ยูอาร์แอลหรือยูอาร์แอลนั้นก่อกำเนิดขึ้นจากการประมวลผลอัตโนมัติ รหัสต้นทางสามารถบรรจุหรือก่อกำเนิดช่องว่างซึ่งถูกละเลยในการประมวลผลหรืออาจไม่มีช่องว่างอยู่ที่นั่น ให้แก้ไขรหัสต้นทาง อาจโดยการบังคับช่องว่างอ่อนให้ปรากฏอยู่หลังยูอาร์แอล แม่แบบ {{spaces}} อาจมีประโยชน์

ตัวแปรของระบบและตรรกะแบบมีเงื่อนไข

[แก้]

รหัสแม่แบบมักใช้ตัวแปรและฟังก์ชันการแจงส่วนที่อธิบายใน วิธีใช้:เมจิกเวิร์ด เพื่อทำให้พฤติกรรมของแม่แบบเปลี่ยนไปตามสิ่งแวดล้อม (เช่น เวลาปัจจุบันหรือเนมสเปซ) หรือต่อค่าตัวแปรเสริมที่ส่งผ่านไปยังตัวมัน นอกจากนี้ ยังสามารถใช้รหัสเพื่อการคำนวณเลขคณิตได้ แต่คุณลักษณะการเขียนโปรแกรมมาตรฐานอย่างวงวนและการสั่งกำหนดค่าตัวแปรจะไม่มีให้ใช้ การขักใยสายอักขระเต็มก็ใช้ไม่ได้เช่นกัน

สำหรับรายการตัวแปรกังกล่าวดูที่ วิธีใช้:เมจิกเวิร์ด และเอกสารที่สมบูรณ์กว่าทางหน้ามีเดียวิกิ mw:Help:Magic words และ mw:Help:Extension:ParserFunctions

แม่แบบซ้อนใน

[แก้]

แม่แบบหนึ่ง ๆ อาจบรรจุแม่แบบอื่นด้วย ปกติเรียก การซ้อนใน (nesting) เมื่อมีการประมวลผลแม่แบบ ข้อความวิกิที่ผลิตจากแม่แบบถูกซ้อนในทั้งหมดจะรวมข้ามสู่แม่แบบที่กำลังซ้อนใน เพื่อให้ผลิตภัณฑ์สุดท้ายมีการประมวลผลจากแม่แบบที่ซ้อนในลึกสุดไล่ขึ้นมาเรื่อย ๆ โดยสภาพ แม้เมื่อนำไปปฏิบัติแล้วค่อนข้างตรงไปตรงมา แต่ก็มีทริกและการพลิกแพลงบางอย่างที่สำคัญ

ในการส่งค่าตัวแปรเสริมไปยังแม่แบบที่ถูกซ้อนใน ให้วางป้ายระบุตัวแปรเสริมเป็นค่าของตัวแปรเสริมหนึ่งในแม่แบบที่ถูกซ้อนในนั้น

ตัวอย่าง
แม่แบบ:A มี "the quick brown {{B|{{{3}}} }} jumps over..." รหัสนี้นำค่าที่ส่งไปยังตัวแปรไม่มีชื่อลำดับที่สามของแม่แบบ:A แล้วส่งค่านั้นเป็นตัวแปรเสริมไม่มีชื่อลำดับแรกของแม่แบบ:B แล้วคืนข้อความวิกิที่ผลิตจาก B เป็รส่วนหนึ่งของวลี
แม่แบบ:A มี "the quick brown {{B|waldo={{{3}}} }} jumps over..." รหัสนี้มีผลเหมือนตัวอย่างแรก ยกเว้นตัวแปรเสริมไม่มีชื่อลำดับที่สามของแม่แบบ:A ถูกส่งไปยังตัวแปรเสริมมีชื่อ "waldo" ของแม่แบบ:B

สำหรับตัวแปรเสริมแม่แบบเองสามารถเลือกแบบมีเงื่อนไขได้

ตัวอย่าง
แม่แบบ:A มี the quick brown {{B|{{{3}}}=fox}} jumps over... แม่แบบ:A ผ่านคำว่า "fox" เป็นตัวแปรเสริมมีชื่อหนึ่งของแม่แบบ:B ซึ่งชื่อของแม่แบบ:B เป็นตัวแปรเสริมไม่มีชื่อลำดับสามของ A
{{#if: สายอักขระทดสอบ | ค่าถ้าสายอักขระทดสอบไม่ว่าง | {{#if: สายอักขระทดสอบ | ค่าถ้าสายอักขระทดสอบไม่ว่าง | ค่าถ้าสายอักขระทดสอบว่าง (หรือมีเฉพาะช่องว่าง) }} }}

แม่แบบสามารถเรียดตัวเองได้ แต่จะหยุดหลังการวนซ้ำหนึ่งรอบเพื่อป้องกันวงวนไม่รู้จบ

เมื่อแม่แบบซ้อนในมีวงเล็บไม่เข้าคู่ เช่นใน {{lb}}} วงเล็บที่ไม่เข้าคู่นั้นจะถือเป็นข้อความระหว่างการประมวลผล และไม่มีผลต่อการแจงส่วนวงเล็บในแม่แบบที่กำลังซ้อนใน ทว่า หากแม่แบบที่ถูกซ้อนในมีการแทนที่ จะประมวลผลการแทนที่ก่อน แล้วจะเปลี่ยนแปลงวิธีที่มีการแจงส่วนวงเล็บในแม่แบบที่กำลังซ้อนใน เป็นกรณีที่พบน้อย แต่บางทีก็ทำให้เกิดข้อผิดพลาดที่ไม่คาดคิดได้

ดูสารสนเทศเพิ่มเติมที่ meta:Help:Advanced templates และ meta:Help:Recursive conversion of wikitext ทั้งสองหน้ายังมีสารสนเทศเกี่ยวกับการเรียกแม่แบบอย่างไม่ธรรมดา เช่น {{template {{{parameter|}}} }}

Noinclude, includeonly, และ onlyinclude

[แก้]

โดยปริยาย เมื่อมีการรวมข้าม (หรือแทนที่) แม่แบบ ข้อความวิกิ (รหัส) ทั้งหมดจากหน้าแม่แบบจะมารวมอยู่ในหน้าเป้าหมายด้วย แต่ผู้ใช้สามารถดัดแปรพฤติกรรมนั้นได้ โดยใช้ป้ายระบุซึ่งเจาะจงว่าจะให้รวมส่วนใดของรหัสแม่แบบ เพื่อเลี่ยงการรวมข้ามสารสนเทศที่ตั้งใจให้แสดงผลเฉพาะในหน้าแม่แบบเอง เช่น เอกสารกำกับแม่แบบและหมวดหมู่ ป้ายระบุได้แก่

  • <noinclude>...</noinclude> – ข้อความระหว่างป้ายระบุนี้จะไม่ถูกรวมเมื่อมีการรวมข้ามหรือแทนที่แม่แบบ แต่จะมีการประมวลผลในหน้าแม่แบบ ที่พบใช้บ่อยคือเอกสารประกอบแม่แบบ
  • <onlyinclude>...</onlyinclude> – ใช้เจาะจงว่าจะรวมข้ามหรือแทนที่สิ่งที่ปรากฏระหว่างป้ายระบุนี้เท่านั้น
  • <includeonly>...</includeonly> – จะรวมข้ามหรือแทนที่ข้อความระหว่างป้ายระบุ แต่จะไม่มีการประมวลผลในหน้าแม่แบบเอง
ข้อความวิกิ สิ่งที่เรนเดอร์ (หน้าต้นฉบับ) สิ่งที่รวมข้าม (หน้าเป้าหมาย)
<noinclude> text1 </noinclude> text2 text1 text2 text2
<onlyinclude> text1 </onlyinclude> text2 text1 text2 text1
<includeonly> text1 </includeonly> text2 text2 text1 text2

บางทีปัญหาที่พบบ่อยที่สุดสำหรับการใช้บล็อกเหล่านี้ได้แก่ช่องว่างหรือบรรทัดไม่พึงประสงค์ เป็นสิ่งสำคัญที่ต้องระลึกว่าผลของป้ายระบุเหล่านี้เริ่มทันทีก่อนวงเล็บปีกกาเครื่องหมายแรก ไม่ใช่บรรทัดก่อนหน้าหรืออักขระที่เห็นได้ก่อนหน้า ทำนองเดียวกัน ผลจะสิ้นสุดทันทีหลังวงเล็บปีกกาสุดท้าย ไม่ใช่บรรทัดต่อไปหรืออักขระที่มองเห็นได้ถัดไป ตัวอย่างเช่น

<includeonly>
}}<includeonly>
}}
<includeonly>
<noinclude>
}}<noinclude>
}}
<noinclude>
</includeonly><noinclude>
{{template}}</includeonly><noinclude>
{{template}}</includeonly>
<noinclude>

ป้ายระบุเหล่านี้สามารถซ้อนในกันและกันได้ (ซึ่งจะใช้ได้สำหรับป้ายระบุ <onlyinclude> เป็นหลัก) สำหรับ <onlyinclude>abc<includeonly>def</onlyinclude>ghi</includeonly> จะใช้การไม่ได้ตามคาด ใช้กฎ "แรกเปิด สุดท้ายปิด" ซึ่งเป็นมาตรฐานสำหรับเอชทีเอ็มแอล/เอกซ์เอ็มแอล