Jak dodać licznik pytań do quizu w LearnDash
Opublikowany: 2019-10-12Każdy dobry system zarządzania nauką umożliwia dodanie licznika do quizu/testu. Nie inaczej jest w LearnDash.
Jeśli przejdziesz do ustawień LearnDash Quiz w panelu administracyjnym, powinieneś zauważyć opcję dodania „Limitu czasu” na poziomie quizu.
Liczniki czasu to świetny sposób dla egzaminatora/instruktora/nauczyciela na kontrolowanie rzeczywistego quizu.
- Wyzywa każdego ucznia, grając na jego psychice,
- studenci po prostu nie mają czasu na oszukiwanie,
- i dodaje między nimi poziom konkurencji
Ale licznik quizów działa dobrze, gdy wszystkie pytania mają taką samą wagę lub są tego samego typu. Na przykład quiz z matematyki. Ale co, jeśli kilka pytań matematycznych jest tylko częścią quizu i tylko te konkretne pytania muszą być określone w czasie.
Cóż, w tym przypadku potrzebujesz licznika czasu na pytanie zamiast licznika quizu.
Teraz LearnDash nie zapewnia licznika czasu na pytanie.
Wiesz to.
I dlatego tu jesteś, prawda?!
Tak więc w tych scenariuszach, w których musisz dodać pytania z określonym czasem, wyjaśnię Ci, jak dokładnie możesz dodać limit czasu dla każdego pytania quizu w LearnDash.
Oto, co spróbujemy osiągnąć:
- Do każdego pytania dodamy opcjonalne pole, w którym możesz określić limit czasu dla każdego pytania quizu.
- Limit czasu zostanie wyświetlony na interfejsie użytkownika pytania quizu, a przycisk pytania „Dalej” zostanie ukryty.
- Jeśli uczniowi skończy się czas, następne pytanie zostanie automatycznie wyświetlone.
Teraz muszę cię ostrzec; aby zaimplementować to rozwiązanie, potrzebujesz sporej wiedzy programistycznej w PHP i JavaScript. Jeśli nie, musisz skontaktować się z programistą LearnDash , który może Ci pomóc tutaj.
DIY dostosowywanie hacków do quizów LearnDash
|
Dobra. Chodźmy do pracy.
Krok #1: Dodaj ustawienie limitu czasu na pytania
Musisz zacząć od dodania prostego ustawienia dla każdego quizu. Oczywiście nie jest to takie proste, jak się wydaje.
Jeśli jesteś programistą, który pracował wcześniej nad quizami LearnDash, wiesz, że nie ma żadnych haczyków, z którymi możesz pracować. Nie ma haczyka, za pomocą którego można dodać pole do ustawień pytań quizu.
Ale nie martw się. Nie będziemy tutaj dostosowywać rdzenia. To, co będziemy robić, to użyjemy magii JavaScriptu.
Używając JavaScript umieścimy pole nad przyciskiem „Zapisz” na stronie ustawień pytania. Powodem używania przycisku „Zapisz” jako odniesienia dla tego pola jest to, że przycisk „Zapisz” znajduje się na każdej stronie ustawień pytań quizu.
Użyjemy identyfikatora przycisku „Zapisz” jako odniesienia, aby dodać pole licznika pytań.
Poniższy fragment kodu JavaScript wyświetla pole „Limit czasu pytania” nad przyciskiem „Zapisz”.
$ save_button = jQuery( "#saveQuestion" ); $ save_button_div = $ save_button.closest( "div" ); $ content = '<div class="postbox"> <h3 class="hndle">' + 'Limit czasu pytania (w sekundach)' + '</h3> <div class="inside"> <input type="liczba" min="0" class="small-text" value="' + input_content + '" name="qtn_time_limit"> </div> </div>' ; $ save_button_div .before ( $ zawartość);
W tym przypadku input_content jest wartością pola „Limit czasu pytania”. Domyślnie wartość musi być ustawiona na 0. Za każdym razem, gdy Ty (lub użytkownik) ustawiasz tę wartość, musi ona zostać zaktualizowana i zapisana w bazie danych (obsługiwane przez PHP). I podobnie, musi zostać odczytany z bazy danych i wyświetlony użytkownikowi, gdy użytkownik przegląda to pole.
Ten kod JavaScript po dodaniu do kolejki wyświetli pole jak poniżej:
Krok #2: Dodaj limit czasu dla pytania quizu LearnDash
Po zapisaniu wartości pola dla pytania, licznik czasu musi być wyświetlany podczas próby pytania quizu. Można to zrobić, wykonując poniższe czynności:
- Uzyskaj wartość timera
- Uruchom minutnik
- Okresowo sprawdzaj, czy termin został przekroczony
- Uruchom przycisk następnego pytania quizu
Kod tego samego jest jak poniżej:
jQuery( '[name="startQuiz"],[name="next"]' ) .click ( function (){ jQuery( '.wpProQuiz_listItem' ) .each ( funkcja (){ if (jQuery(this). is (':visible')){ $ current_question_id = jQuery(to). znajdź (" .wpProQuiz_questionList "); $ current_question_id = $ current_question_id .attr ( "data-question_id" ); if (wdmAjaxData.post_meta[ $ current_question_id] ! == undefined ){ counter_value = wdmAjaxData.post_meta[ $ current_question_id]; } jeszcze { wartość_licznika = 0 ; } var wdm_globalElements = { następny: jQuery(to). znajdź ("[nazwa='następny']"), wdm_timelimit: jQuery(to). znajdź (' .wpProQuiz_question_time_limit '), current_counter: counter_value }; wdm_globalElements. następny .ukryj (); var wdm_timelimit = ( funkcja () { var _counter = wdm_globalElements.current_counter; var _intervalId = 0 ; var instancja = {}; instancja . stop = funkcja () { jeśli (_licznik) { okno . clearInterval (_intervalId); wdm_globalElements.wdm_timelimit .css ( "wyświetlanie" , "brak" ); } }; instancja . start = funkcja () { jeśli ( ! _licznik){ wdm_globalElements. następny .pokaż (); powrót ; } var x = _licznik * 1000 ; var $ timeText = wdm_globalElements.wdm_timelimit. find (' span ') .text (parseTime(_counter)); var $ timeDiv = wdm_globalElements.wdm_timelimit. znajdź (' .wpProQuiz_question_progress '); wdm_globalElements.wdm_timelimit .css ( "wyświetlanie" , "" ); var beforeTime = + new Date(); _intervalId = okno . setInterval ( funkcja () { var diff = ( + new Date() - beforeTime); var elapsedTime = x - różnica; jeśli (różnic >= 500 ) { $ timeText .text (parseTime( Math . ceil (elapsedTime / 1000 ))); } $ timeDiv .css ( 'szerokość' , (elapsedTime / x * 100 ) + '%' ); if (elapsedTime <= 0 ) { instancja .stop (); wdm_globalElements. następny .trigger ( "klik" ); } }, 16 ); }; zwracać instancję; })(); wdm_timelimit. start (); } }); }
Powyższy kod ukrywa przycisk pytania „Dalej” podczas działania timera, a następnie klika go po osiągnięciu limitu czasu.
https://wisdmlabs.com/learndash-quiz-customization/?utm_source=blog&utm_medium=post&utm_campaign=quiz_cusomization_timer&utm_content=DropshippingA wynik tego samego powinien wyglądać jak poniżej:
Licznik czasu na pytania quizu działa, gdy chcesz przypisać wagę danemu pytaniu w porównaniu z innymi pytaniami w quizie. Ten kod może się przydać, gdy chcesz dodać taką funkcjonalność do LearnDash.
Jeśli próbujesz tego i masz do mnie jakieś pytania, odpal!
Dalsza lektura na temat „LearnDash Quiz Customization”
|
Obrazy autorstwa freepik