วิธีเพิ่มตัวจับเวลาคำถามแบบทดสอบใน LearnDash

เผยแพร่แล้ว: 2019-10-12
โปรดทราบว่าโซลูชันด้านล่างไม่สามารถทำงานร่วมกับ LearnDash 3.0+ ติดต่อเราสำหรับโซลูชันที่ใช้งานได้กับ LearnDash เวอร์ชันล่าสุด

ระบบการจัดการเรียนรู้ที่ดีทุกระบบมีตัวเลือกในการเพิ่มตัวจับเวลาในแบบทดสอบ/ทดสอบ และ LearnDash ก็ไม่ต่างกัน

หากคุณไปที่การตั้งค่า LearnDash Quiz ในแผงการดูแลระบบ คุณควรสังเกตเห็นตัวเลือกในการเพิ่ม 'การจำกัดเวลา' ที่ระดับแบบทดสอบ

Learndash-quiz-จับเวลา

ตัวจับเวลาเป็นวิธีที่ยอดเยี่ยมสำหรับผู้ทดสอบ/ผู้สอน/ครูในการควบคุมแบบทดสอบจริง

  • มันท้าทายนักเรียนแต่ละคนด้วยการเล่นด้วยจิตใจ
  • นักเรียนไม่มีเวลาโกง
  • และเพิ่มระดับการแข่งขันระหว่างพวกเขาด้วย

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

ในกรณีนี้ คุณต้องมีตัวจับเวลาต่อคำถาม แทนที่จะเป็นตัวจับเวลาแบบทดสอบ

ตอนนี้ LearnDash ไม่มีตัวจับเวลาต่อคำถาม

คุณก็รู้.

และนั่นคือเหตุผลที่คุณมาที่นี่ใช่มั้ย!

ดังนั้น สำหรับสถานการณ์ที่คุณต้องการเพิ่มคำถามที่มีกำหนดเวลา ฉันจะอธิบายให้คุณทราบว่าคุณสามารถเพิ่มการจำกัดเวลาสำหรับคำถามแบบทดสอบแต่ละรายการใน LearnDash ได้อย่างไร

นี่คือสิ่งที่เราจะพยายามทำให้สำเร็จ:

  1. เราจะเพิ่มฟิลด์ตัวเลือกสำหรับแต่ละคำถาม ซึ่งคุณสามารถระบุการจำกัดเวลาสำหรับคำถามแบบทดสอบแต่ละข้อ
  2. การจำกัดเวลาจะแสดงที่ส่วนหน้าสำหรับคำถามแบบทดสอบ และปุ่มคำถาม "ถัดไป" จะถูกซ่อนไว้
  3. หากนักเรียนหมดเวลา คำถามถัดไปจะแสดงขึ้นโดยอัตโนมัติ

ตอนนี้ฉันต้องเตือนคุณ คุณต้องมีความรู้ด้านการพัฒนา PHP และ JavaScript พอสมควรเพื่อนำโซลูชันนี้ไปใช้ หากไม่เป็นเช่นนั้น คุณต้องติดต่อ นักพัฒนา LearnDash ซึ่งสามารถช่วยเหลือคุณได้ที่นี่

เคล็ดลับการปรับแต่ง DIY สำหรับแบบทดสอบ LearnDash ของคุณ
  • 'คุณเป็นคนประเภทไหน' - แบบทดสอบการประเมินด้วยปลั๊กอินแบบฟอร์มแรงโน้มถ่วง
  • LearnDash: แสดงข้อความเพื่อคำตอบที่ถูกต้องและไม่ถูกต้อง

ตกลง. ไปทำงานกันเถอะ

ขั้นตอนที่ #1: เพิ่มการตั้งค่าการจำกัดเวลาคำถาม

คุณต้องเริ่มต้นด้วยการเพิ่มการตั้งค่าง่ายๆ สำหรับทุกแบบทดสอบ แน่นอนว่ามันไม่ง่ายอย่างที่คิด

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

แต่ไม่ต้องกังวล เราจะไม่ปรับแต่งคอร์ที่นี่ สิ่งที่เราจะทำคือใช้เวทย์มนตร์จาวาสคริปต์

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

เราจะใช้รหัสของปุ่ม 'บันทึก' เป็นข้อมูลอ้างอิง เพื่อเพิ่มฟิลด์ตัวจับเวลาคำถาม

Learndash-quiz-question-save

ส่วนด้านล่างของโค้ด 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 นี้เมื่อถูกจัดคิวจะแสดงฟิลด์ดังต่อไปนี้:

Learndash-quiz-question-timer-setting

ขั้นตอนที่ #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-quiz-question-time-limit

ตัวจับเวลาคำถามต่อแบบทดสอบทำงานเมื่อคุณต้องการกำหนดน้ำหนักให้กับคำถามเฉพาะเมื่อเปรียบเทียบกับคำถามอื่นๆ ในแบบทดสอบ โค้ดนี้มีประโยชน์เมื่อคุณต้องการเพิ่มฟังก์ชันดังกล่าวใน LearnDash

หากคุณกำลังลองสิ่งนี้ และมีคำถามใดๆ เกี่ยวกับฉัน อย่าเพิ่งไป!

อ่านเพิ่มเติมเกี่ยวกับ 'การปรับแต่งแบบทดสอบ LearnDash'
  • 5 ฟีเจอร์เพิ่มเติมที่จำเป็นสำหรับ LearnDash Quizzes
  • ให้นักเรียนมีความพยายามเพิ่มเติมสำหรับคำถามแบบทดสอบ LearnDash
  • การรายงานแบบทดสอบของ LearnDash สามารถช่วยปรับปรุงหลักสูตรของคุณได้อย่างไร

รูปภาพโดย freepik