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

จากวิกิพีเดีย สารานุกรมเสรี
ไปยังการนำทาง ไปยังการค้นหา
บทความนี้เกี่ยวกับข้อมูลสำหรับการพัฒนาแม่แบบ สำหรับความหมายอื่น ดูที่ วิกิพีเดีย:แม่แบบ
คู่มือการเขียน
นโยบาย
นโยบาย
อะไรที่ไม่ใช่วิกิพีเดีย
คู่มือพื้นฐาน
หลักการตั้งชื่อบทความ
เขียนให้ดียิ่งขึ้น
เขียนไม่ให้ละเมิดลิขสิทธิ์
เขียนให้เป็นกลาง
วิธีใช้
การแก้ไขหน้า
การจัดหน้าโดยใช้แม่แบบช่วย
การอัปโหลดภาพ
การใส่ภาพ
การสร้างตาราง
การจัดหมวดหมู่
การสร้างหน้าเปลี่ยนทาง
การใส่ลิงก์
การลิงก์มาที่วิกิพีเดีย
การแทรกสูตรคณิตศาสตร์
อธิบาย
การแก้ไขเล็กน้อย
คำอธิบายอย่างย่อ
การทับศัพท์
คำทับศัพท์ในวิกิพีเดีย
อ่าน/เขียน คำทับศัพท์
ชื่อทะเล
ชื่อประเทศ-เมืองหลวง
ชื่อธาตุ
ถอดเสียงอังกฤษเป็นไทย
ถอดอักษรไทยเป็นโรมัน
อ้างอิง
การอ้างอิงแหล่งที่มา
ศัพท์บัญญัติ
สีที่ใช้ในเว็บ
แม่แบบ
แม่แบบ
โครง
แม่แบบแสดงข้อความ
แม่แบบเชื่อมโยงหัวข้อ
วิธีการสร้างแม่แบบ
บทความเฉพาะทาง
บทความฝรั่งเศส
บทความพฤกษา
บทความการ์ตูนญี่ปุ่น
บทความการทหาร
บทความเพลง

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

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

คำอธิบายทั่วไป[แก้]

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

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

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

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

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

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

ตัวแปรเสริม[แก้]

ดูข้อมูลเพิ่มเติมที่: m:Help:Templates § Parameters

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

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

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

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

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

การเรียก[แก้]

ดูข้อมูลเพิ่มเติมที่: mw:Help:Magic words

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

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

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

สัญลักษณ์นัมเบอร์ # เรียก ตัวระบุส่วนแฟรกเมนต์ เพราะสัญลักษณ์นี้แสดงแฟรกเมนต์หรือส่วนหนึ่งของเอกสาร (เช่น ส่วนในบทความวิกิพีเดีย) แม้สัญลักษณ์ดังกล่าวสามารถใช้เพื่อเชื่อมโยงไปยังส่วนของหน้าแมแบบได้ (เช่น แม่แบบ:สถานีย่อย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 ตัวอย่างเช่น

Markup Renders as
Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders


Markup
Renders

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

ช่องว่างหน้าและหลังเครื่องหมายเท่ากับ และก่อนและหลังตัวแปรเสริมใช้เพื่อทำให้กระจ่างเท่านั้น แต่ไม่มีความจำเป็นและจะถูกละเลยเมื่อมีการประเมินแม่แบบ (แต่สำหรับตัวแปรเสริมไม่มีชื่อจะยังนำมาคิดอยู่) ชื่อตัวแปรเสริมไวต่ออักษรใหญ่เล็ก ตัวอย่างเช่น จะไม่สามารถเขียน 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> จะใช้การไม่ได้ตามคาด ใช้กฎ "แรกเปิด สุดท้ายปิด" ซึ่งเป็นมาตรฐานสำหรับเอชทีเอ็มแอล/เอกซ์เอ็มแอล