多肢選択問題の結果表示について教えてください

多肢選択問題の結果表示について教えてください

- kazu hiro の投稿
返信数: 10

多肢選択問題の結果表示について、ご教示ください。

 

大変初歩的な質問で申し訳ありませんが、小テストで多肢選択問題を作成し、結果表示すると

の表示となります。


この表示において「正答を番号で表示」を実現したいと希望しています。

対応可能であれば対応方法をご教授いただければ幸いです。 

よろしくお願いいたします。

 

【環境】Moodle 3.0.10 MySQL5.7 PHP5.6.30

moodle.orgより入手

kazu hiro への返信

Re: 多肢選択問題の結果表示について教えてください

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

下記プログラム修正ではいかがでしょうか。

修正対象プログラム:
question/type/multichoice/renderer.php

修正箇所:
281行目

[ 修正前 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        $right = array();
        foreach ($question->answers as $ansid => $ans) {
            if ($ans->fraction > 0) {
                $right[] = $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
                        $qa, 'question', 'answer', $ansid));
            }
        }


[ 修正後 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        $right = array();
        foreach ($question->answers as $ansid => $ans) {
            if ($ans->fraction > 0) {
                $right[] = array_search($ans->id ,$question->get_order($qa)) + 1 . '. ' . $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
//                $right[] = $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
                        $qa, 'question', 'answer', $ansid));
            }
        }
評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

yoshida様

前回に引き続き、早速のご返答ありがとうございます。自分ではできないことなので本当に感謝しております。

教えていただいた箇所を修正しましたら、数字が表記できるようになりました。

教えていただいているのに申し訳ありませんが、数字だけを表示することは無理でしょうか?


度重なる質問でお時間をとってしまっておりますが、何卒よろしくお願いいたします。

kazu hiro への返信

Re: 多肢選択問題の結果表示について教えてください

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

数字だけを表示する場合、下記のような修正になります。

修正対象プログラム:
question/type/multichoice/renderer.php

修正箇所:
281行目

[ 修正前 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        $right = array();
        foreach ($question->answers as $ansid => $ans) {
            if ($ans->fraction > 0) {
                $right[] = $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
                        $qa, 'question', 'answer', $ansid));
            }
        }


[ 修正後 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        $right = array();
        foreach ($question->answers as $ansid => $ans) {
            if ($ans->fraction > 0) {
                $right[] = array_search($ans->id ,$question->get_order($qa)) + 1;
//                $right[] = $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
//                        $qa, 'question', 'answer', $ansid));
            }
        }
評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

yoshida様


助言ありがとうございました。数字のみの表示となりました。

大変助かりました。

Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

先日は、いろいろと助けていただきありがとうございました。


教えていただいた修正を加え問題を増やしているのですが、同じ多肢選択問題で回答を「単一回答のみ」の問題を作成したところまた数字+回答にもどってしまいました。

何度も申し訳ありませんが、対応方法があれば教えてもらえませんでしょうか?


よろしくお願いします。

kazu hiro への返信

Re: 多肢選択問題の結果表示について教えてください

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

下記プログラム修正ではいかがでしょうか。

修正対象プログラム:
question/type/multichoice/renderer.php

修正箇所:
229行目

[ 修正前 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        foreach ($question->answers as $ansid => $ans) {
            if (question_state::graded_state_for_fraction($ans->fraction) ==
                    question_state::$gradedright) {
                return get_string('correctansweris', 'qtype_multichoice',
                        $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
                                $qa, 'question', 'answer', $ansid)));
            }
        }

        return '';
    }

[ 修正後 ]

    public function correct_response(question_attempt $qa) {
        $question = $qa->get_question();

        foreach ($question->answers as $ansid => $ans) {
            if (question_state::graded_state_for_fraction($ans->fraction) ==
                    question_state::$gradedright) {
//                return get_string('correctansweris', 'qtype_multichoice',
//                        $question->make_html_inline($question->format_text($ans->answer, $ans->answerformat,
//                                $qa, 'question', 'answer', $ansid)));
                return get_string('correctansweris', 'qtype_multichoice', array_search($ans->id ,$question->get_order($qa)) + 1);
        }

        return '';
    }
評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

お返事ありがとうございます。


さっそくご提示いただきました修正を加えましたら、画面が真っ白になってなにも表示できなくなりました。

対応策がありましたらご教授お願いします。

kazu hiro への返信

Re: 多肢選択問題の結果表示について教えてください

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

修正された内容に何らかの文法ミスがあると思われます。

ご参考までに本投稿の添付ファイル (question.zip) をお使いください。

Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

Yoshida様


至れり尽くせりの対応ありがとうございました。

無事思うような表示になりました。

今後ともよろしくお願いいたします。

Mitsuhiro Yoshida への返信

Re: 多肢選択問題の結果表示について教えてください

- kazu hiro の投稿

現状について、誤りがありました・


「数字+文字」と書きましたが、正解の「文字」のみです。