วิธีเพิ่มตัวจับเวลาคำถามแบบทดสอบใน LearnDash
เผยแพร่แล้ว: 2019-10-12ระบบการจัดการเรียนรู้ที่ดีทุกระบบมีตัวเลือกในการเพิ่มตัวจับเวลาในแบบทดสอบ/ทดสอบ และ LearnDash ก็ไม่ต่างกัน
หากคุณไปที่การตั้งค่า LearnDash Quiz ในแผงการดูแลระบบ คุณควรสังเกตเห็นตัวเลือกในการเพิ่ม 'การจำกัดเวลา' ที่ระดับแบบทดสอบ
ตัวจับเวลาเป็นวิธีที่ยอดเยี่ยมสำหรับผู้ทดสอบ/ผู้สอน/ครูในการควบคุมแบบทดสอบจริง
- มันท้าทายนักเรียนแต่ละคนด้วยการเล่นด้วยจิตใจ
- นักเรียนไม่มีเวลาโกง
- และเพิ่มระดับการแข่งขันระหว่างพวกเขาด้วย
แต่ตัวจับเวลาแบบทดสอบทำงานได้ดีเมื่อคำถามทั้งหมดมีน้ำหนักเท่ากันหรือเป็นคำถามประเภทเดียวกัน เช่นแบบทดสอบคณิตศาสตร์เป็นต้น แต่ถ้าคำถามทางคณิตศาสตร์สองสามข้อเป็นเพียงส่วนหนึ่งของแบบทดสอบ และจำเป็นต้องจับเวลาเฉพาะคำถามเหล่านั้นเท่านั้น
ในกรณีนี้ คุณต้องมีตัวจับเวลาต่อคำถาม แทนที่จะเป็นตัวจับเวลาแบบทดสอบ
ตอนนี้ LearnDash ไม่มีตัวจับเวลาต่อคำถาม
คุณก็รู้.
และนั่นคือเหตุผลที่คุณมาที่นี่ใช่มั้ย!
ดังนั้น สำหรับสถานการณ์ที่คุณต้องการเพิ่มคำถามที่มีกำหนดเวลา ฉันจะอธิบายให้คุณทราบว่าคุณสามารถเพิ่มการจำกัดเวลาสำหรับคำถามแบบทดสอบแต่ละรายการใน LearnDash ได้อย่างไร
นี่คือสิ่งที่เราจะพยายามทำให้สำเร็จ:
- เราจะเพิ่มฟิลด์ตัวเลือกสำหรับแต่ละคำถาม ซึ่งคุณสามารถระบุการจำกัดเวลาสำหรับคำถามแบบทดสอบแต่ละข้อ
- การจำกัดเวลาจะแสดงที่ส่วนหน้าสำหรับคำถามแบบทดสอบ และปุ่มคำถาม "ถัดไป" จะถูกซ่อนไว้
- หากนักเรียนหมดเวลา คำถามถัดไปจะแสดงขึ้นโดยอัตโนมัติ
ตอนนี้ฉันต้องเตือนคุณ คุณต้องมีความรู้ด้านการพัฒนา PHP และ JavaScript พอสมควรเพื่อนำโซลูชันนี้ไปใช้ หากไม่เป็นเช่นนั้น คุณต้องติดต่อ นักพัฒนา LearnDash ซึ่งสามารถช่วยเหลือคุณได้ที่นี่
เคล็ดลับการปรับแต่ง DIY สำหรับแบบทดสอบ LearnDash ของคุณ
|
ตกลง. ไปทำงานกันเถอะ
ขั้นตอนที่ #1: เพิ่มการตั้งค่าการจำกัดเวลาคำถาม
คุณต้องเริ่มต้นด้วยการเพิ่มการตั้งค่าง่ายๆ สำหรับทุกแบบทดสอบ แน่นอนว่ามันไม่ง่ายอย่างที่คิด
หากคุณเป็นนักพัฒนาที่เคยทำงานในแบบทดสอบของ LearnDash คุณจะรู้ว่าไม่มีตะขอใดๆ ที่คุณสามารถใช้ได้ ไม่มีตะขอที่คุณสามารถใช้เพื่อเพิ่มฟิลด์ในการตั้งค่าคำถามแบบทดสอบ
แต่ไม่ต้องกังวล เราจะไม่ปรับแต่งคอร์ที่นี่ สิ่งที่เราจะทำคือใช้เวทย์มนตร์จาวาสคริปต์
การใช้ JavaScript เราจะวางฟิลด์เหนือปุ่ม 'บันทึก' ในหน้าการตั้งค่าคำถาม เหตุผลในการใช้ปุ่ม 'บันทึก' เป็นข้อมูลอ้างอิงสำหรับฟิลด์ เป็นเพราะปุ่ม 'บันทึก' ปรากฏอยู่บนหน้าการตั้งค่าคำถามแบบทดสอบทุกหน้า
เราจะใช้รหัสของปุ่ม 'บันทึก' เป็นข้อมูลอ้างอิง เพื่อเพิ่มฟิลด์ตัวจับเวลาคำถาม
ส่วนด้านล่างของโค้ด JavaScript จะแสดงฟิลด์ 'Question Time Limit' เหนือปุ่ม 'Save'
$ save_button = jQuery( "#saveQuestion" ); $ save_button_div = $ save_button.closest( "div" ); $ content = '<div class="postbox"> <h3 class="hndle">' + 'จำกัดเวลาคำถาม (เป็นวินาที)' + '</h3> <div class="inside"> <input type="number" min="0" class="small-text" value="' + input_content + '" name="qtn_time_limit"> </div> </div>' ; $ save_button_div .before ( เนื้อหา $ );
ที่นี่ input_content คือค่าของฟิลด์ 'การจำกัดเวลาของคำถาม' โดยค่าเริ่มต้น ค่าจะต้องตั้งเป็น 0 ทุกครั้งที่คุณ (หรือผู้ใช้) ตั้งค่านี้ จะต้องอัปเดตและบันทึกลงในฐานข้อมูล (จัดการผ่าน PHP) และในทำนองเดียวกัน จะต้องอ่านจากฐานข้อมูลและแสดงให้ผู้ใช้เห็นเมื่อผู้ใช้ดูฟิลด์นี้
รหัส JavaScript นี้เมื่อถูกจัดคิวจะแสดงฟิลด์ดังต่อไปนี้:
ขั้นตอนที่ #2: เพิ่มการจำกัดเวลาสำหรับคำถามแบบทดสอบ LearnDash
เมื่อบันทึกค่าของฟิลด์สำหรับคำถามแล้ว จะต้องแสดงตัวจับเวลาเมื่อพยายามตอบคำถามแบบทดสอบ สามารถทำได้โดยใช้ขั้นตอนด้านล่าง:
- รับค่าตัวจับเวลา
- เริ่มจับเวลา
- ตรวจสอบเป็นระยะว่าถึงกำหนดเวลาหรือไม่
- ทริกเกอร์ปุ่มคำถามตอบคำถามถัดไป
รหัสเดียวกันมีดังต่อไปนี้:
jQuery( '[name="startQuiz"],[name="next"]' ) .click ( ฟังก์ชัน (){ jQuery( '.wpProQuiz_listItem' ) .each ( ฟังก์ชัน (){ if (jQuery(นี้) คือ (':visible')){ $ current_question_id = jQuery(นี่) ค้นหา (" .wpProQuiz_questionList "); $ current_question_id = $ current_question_id .attr ( "data-question_id" ); ถ้า (wdmAjaxData.post_meta[ $ current_question_id] ! == undefined ){ counter_value = wdmAjaxData.post_meta[ $ current_question_id]; } อื่นๆ { counter_value = 0 ; } var wdm_globalElements = { ถัดไป: jQuery(นี่) ค้นหา ("[name='next']"), wdm_timelimit: jQuery(นี่) ค้นหา (' .wpProQuiz_question_time_limit '), current_counter: counter_value }; wdm_globalElements.wdm_globalElements.wdm_globalElements.wdm_globalElements ถัดไป .hide (); var wdm_timelimit = ( ฟังก์ชัน () { var _counter = wdm_globalElements.current_counter; var _intervalId = 0 ; อินสแตนซ์ var = {}; ตัวอย่าง หยุด = ฟังก์ชั่น () { ถ้า (_counter) { หน้าต่าง . clearInterval (_intervalId); wdm_globalElements.wdm_timelimit .css ( "แสดงผล" , "ไม่มี" ); } }; ตัวอย่าง เริ่ม = ฟังก์ชั่น () { ถ้า ( ! _counter){ wdm_globalElements.wdm_globalElements.wdm_globalElements.wdm_globalElements ถัดไป .show (); กลับ ; } var x = _เคาน์เตอร์ * 1,000 ; var $ timeText = wdm_globalElements.wdm_timelimit. ค้นหา (' span ') .text (parseTime(_counter)); var $ timeDiv = wdm_globalElements.wdm_timelimit. ค้นหา (' .wpProQuiz_question_progress '); wdm_globalElements.wdm_timelimit .css ( "แสดงผล" , "" ); var beforeTime = + วันที่ ใหม่ (); _intervalId = หน้าต่าง setInterval ( ฟังก์ชัน () { var diff = ( + วันที่ ใหม่ () - beforeTime); var elapsedTime = x - ต่าง; ถ้า (diff >= 500 ) { $ timeText .text (parseTime( คณิตศาสตร์ . ceil (elapsedTime / 1000 ))); } $ timeDiv .css ( 'ความกว้าง' , (เวลาที่ผ่านไป / x * 100 ) + '%' ); ถ้า (เวลาที่ผ่านไป <= 0 ) { อินสแตนซ์ .stop (); wdm_globalElements.wdm_globalElements.wdm_globalElements.wdm_globalElements .trigger ถัดไป ( "คลิก" ); } }, 16 ); }; ส่งคืน อินสแตนซ์; })(); wdm_timelimit เริ่ม (); } }); }
โค้ดด้านบนซ่อนปุ่มคำถาม 'ถัดไป' ในขณะที่ตัวจับเวลากำลังทำงาน จากนั้นจึงคลิกเมื่อถึงขีดจำกัดเวลา
https://wisdmlabs.com/learndash-quiz-customization/?utm_source=blog&utm_medium=post&utm_campaign=quiz_cusomization_timer&utm_content=Dropshippingและผลลัพธ์ที่ได้ควรเป็นด้านล่าง:
ตัวจับเวลาคำถามต่อแบบทดสอบทำงานเมื่อคุณต้องการกำหนดน้ำหนักให้กับคำถามเฉพาะเมื่อเปรียบเทียบกับคำถามอื่นๆ ในแบบทดสอบ โค้ดนี้มีประโยชน์เมื่อคุณต้องการเพิ่มฟังก์ชันดังกล่าวใน LearnDash
หากคุณกำลังลองสิ่งนี้ และมีคำถามใดๆ เกี่ยวกับฉัน อย่าเพิ่งไป!
อ่านเพิ่มเติมเกี่ยวกับ 'การปรับแต่งแบบทดสอบ LearnDash'
|
รูปภาพโดย freepik