วิธีใช้:แม่แบบ
หน้าคำอธิบายนี้เป็นคู่มือบอกวิธี ซึ่งบอกรายละเอียดกระบวนการหรือกระบวนวิธีของบางส่วนของบรรทัดฐานและวัตรของวิกิพีเดีย ไม่ใช่ส่วนหนึ่งของนโยบายและแนวปฏิบัติของวิกิพีเดีย
|
คู่มือการเขียน (MoS) |
---|
สารบัญ |
แม่แบบ (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) ของแม่แบบนั้น เป็นคำคำเดียว λ
ข้อความวิกิที่เหลืออยู่ภายในป้ายระบุ <noinclude>
ฉะนั้นจึงแสดงผลในหน้าแม่แบบเองแต่จะไม่แสดงผลเมื่อมีการใช้ (หรือเรียก) แม่แบบในหน้าอื่น
ในการรวมข้ามแม่แบบ:Lambda ในหน้าอื่น (คือการใช้ในหน้าอื่นนั่นเอง) ให้พิมพ์ {{lambda}}
(หรือ {{Lambda}}
ก็ได้ เพราะอักษรตัวแรกจะเป็นอักษรเล็กหรือใหญ่ก็ได้) ลงในข้อความวิกิของหน้าเป้าหมายแล้วกด แสดงตัวอย่าง จะแสดงผลหน้าด้วย การเรียกแม่แบบ แทนที่ด้วยส่วนขยายของแม่แบบ ราวกับว่าข้อความวิกิตรงนั้นมี λ
อยู่จริง หน้าที่แสดงผลจึงมีข้อความ "λ" ปรากฏ
ตัวอย่างเช่น พิมพ์ อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{lambda}})
คุณจะเห็นว่า "อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{lambda}})" เมื่อดูตัวอย่างหน้าหรือหลังบันทึกการเปลี่ยนแปลง คุณสามารถใช้แม่แบบได้โดยไม่ต้องรู้รายละเอียดของรหัส เพียงแต่คุณต้องจำได้ว่าแม่แบบจะได้ผลลัพธ์อย่างไร ซึ่งปกติอธิบายไว้ในหน้าแม่แบบอยู่แล้ว
การใช้แม่แบบนี้อีกทางหนึ่งได้แก่การแทนที่แม่แบบ หากคุณพิมพ์ อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา ({{subst:lambda}})
แล้วดูตัวอย่างหรือบันทุกหน้า คุณจะเห็น "อักษรตัวที่ 11 ของพยัญชนะกรีกได้แก่แลมดา (λ)" อีกครั้ง แต่เมื่อคุณย้อนกลับไปดูข้อความวิกิที่บันทึกไว้ คุณจะเห็นว่าการเรียกแม่แบบถูกแทนที่ด้วยส่วนขยายของแม่แบบเมื่อคุณบันทึกหน้า ลิงก์ระหว่างข้อความออกและแม่แบบเสียไป และผลออกจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงในแม่แบบหลังจากนั้น (ซึ่งจะเกิดในกรณีการรวมข้าม)
ตัวอย่างกับตัวแปรเสริม
[แก้]ตัวอย่างของแม่แบบที่รับตัวแปรเสริม ได้แก่ แม่แบบ {{เกี่ยวกับ}}
ลองพิมพ์ {{เกี่ยวกับ|วิธีใช้แม่แบบ|วิธีใช้มอดูล|วิธีใช้:มอดูล}}
ในหน้าทดลอง (หรือกระบะทราย) จะได้ข้อความต่อไปนี้
แม่แบบ {{เกี่ยวกับ}}
ใช้ตัวแปรเสริมไม่มีชื่อสามตัวแปรในตัวอย่างข้างต้น แต่แม่แบบเดียวกันนี้ยังสามารถใช้ได้โดยระบุตัวแปรเสริมจำนวนต่างกันซึ่งจะให้ผลต่างกันเล็กน้อย ตัวอย่างเช่น {{เกี่ยวกับ||วิธีใช้มอดูล|วิธีใช้:มอดูล}}
สังเกตการใช้ตัวแปรเสริมว่าง ในตัวอย่างนี้ไพป์ที่เขียนติดกันหมายความว่าตัวแปรเสริมแรกที่ "มีการผ่าน" ไปยังแม่แบบเป็นสายอักขระว่าง ซึ่งในแม่แบบนี้จะทำให้แม่แบบเว้นประโยค "เกี่ยวกับ" เริ่มต้น คุณจะได้
แม่แบบอื่น โดยเฉพาะอย่างยิ่งแม่แบบที่ซับซ้อนขึ้น รับตัวแปรมีชื่อหรือตัวแปรที่มีชื่อและไม่มีชื่อผสมกัน ตัวอย่างอย่างง่ายเช่น แม่แบบ:Payoff matrix ซึ่งใช้เพื่อสร้างตารางขนาด 2×2 ตัวอย่างเช่น
มาร์กอัป | แสดงผลเป็น | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{payoff matrix | UL = 5 | UR = 7 | DL = 2 | DR = 9 | Name = ตัวอย่างการใช้ }} |
| ||||||||||||
ดู หน้าแม่แบบ สำหรับความน่าจะเป็นมากขึ้น สังเกตว่าแม่แบบที่ใช้ข้างต้นไม่ได้นิยามตัวแปรเสริมทั้งหมดที่มีอยู่ ตัวแปรที่ไม่นิยามเหล่านี้จะได้กำหนดค่าโดยปริยาย
ช่องว่างหน้าและหลังเครื่องหมายเท่ากับ และก่อนและหลังตัวแปรเสริมใช้เพื่อทำให้กระจ่างเท่านั้น แต่ไม่มีความจำเป็นและจะถูกละเลยเมื่อมีการประเมินแม่แบบ (แต่สำหรับตัวแปรเสริมไม่มีชื่อจะยังนำมาคิดอยู่) ชื่อตัวแปรเสริมไวต่ออักษรใหญ่เล็ก ตัวอย่างเช่น จะไม่สามารถเขียน 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>
จะใช้การไม่ได้ตามคาด ใช้กฎ "แรกเปิด สุดท้ายปิด" ซึ่งเป็นมาตรฐานสำหรับเอชทีเอ็มแอล/เอกซ์เอ็มแอล