Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | |||
— | de:create:rotation-itemmix [06.03.2020 20:21] – admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Items aus unterschiedlichen Fragen mischen ====== | ||
+ | Diese Anleitung erklärt, wie Sie Items aus unterschiedlichen Fragen durchmischen ([[: | ||
+ | |||
+ | |||
+ | ===== Einfache Lösung ===== | ||
+ | |||
+ | In den meisten Fällen ist es deutlich (!) einfacher, die Items alle in einer Frage anzulegen. Zuerst die Items des ersten Konstrukts, dann die Items des zweiten Konstrukts u.s.w. Dies ist möglich, wenn insgesamt weniger als 100 Items rotiert werden sollen. | ||
+ | |||
+ | Die Speicherung aller Items in einer Frage vereinfacht die Rotation deutlich: [[: | ||
+ | |||
+ | Wenn Sie die Zugehörigkeit der Items zu den Konstrukten noch verdeutlichen möchten, dann können Sie in der Frage unter //Weitere Einstellungen// | ||
+ | |||
+ | |||
+ | ===== Lösung mit mehreren Fragen ===== | ||
+ | |||
+ | Wenn Sie entschieden haben, dass die Items in unterschiedlichen Fragen gespeichert werden sollen, dann müssen Sie jedes Item separat mit einem '' | ||
+ | |||
+ | Zunächst muss natürlich eine Liste ([[: | ||
+ | |||
+ | <code php> | ||
+ | $questions = [' | ||
+ | $items = []; | ||
+ | foreach ($questions as $qstID) { | ||
+ | $qstItems = getItems($qstID, | ||
+ | foreach ($qstItem as $itemID) { | ||
+ | $items[] = [$qstID, $itemID]; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Das Ergebnis in '' | ||
+ | |||
+ | <code php> | ||
+ | [ | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | [' | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | Diiese Liste wird nun mittels '' | ||
+ | |||
+ | Weiterhin sorgt der folgende PHP-Code dafür, dass für jedem Listeneintrag ('' | ||
+ | |||
+ | <code php> | ||
+ | foreach ($items as $item) { | ||
+ | $qstID = $item[0]; | ||
+ | $itemID = $item[1]; | ||
+ | question($qstID, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Oder etwas kompakter | ||
+ | |||
+ | <code php> | ||
+ | foreach ($items as $item) { | ||
+ | question($item[0], | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Natürlich sollte über den Items noch der Fragetext stehen. Der vollständige PHP-Code sieht demnach aus wie folgt: | ||
+ | |||
+ | <code php> | ||
+ | if (isset($items)) { | ||
+ | $questions = [' | ||
+ | // Liste mit allen Items erstellen | ||
+ | $items = []; | ||
+ | foreach ($questions as $qstID) { | ||
+ | $qstItems = getItems($qstID, | ||
+ | foreach ($qstItem as $itemID) { | ||
+ | $items[] = [$qstID, $itemID]; | ||
+ | } | ||
+ | } | ||
+ | // Liste mischen | ||
+ | shuffle($items); | ||
+ | registerVariable($items); | ||
+ | } | ||
+ | |||
+ | // Fragetext anzeigen | ||
+ | question(' | ||
+ | | ||
+ | // Items anzeigen | ||
+ | foreach ($items as $item) { | ||
+ | question($item[0], | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Anzeige auf mehreren Seiten ===== | ||
+ | |||
+ | Falls die Items nicht alle auf einer Seite gezeigt werden sollen, kann man die Liste mittels '' | ||
+ | |||
+ | <code php> | ||
+ | if (isset($itemBlocks)) { | ||
+ | $questions = [' | ||
+ | // Liste mit allen Items erstellen | ||
+ | $items = []; | ||
+ | foreach ($questions as $qstID) { | ||
+ | $qstItems = getItems($qstID, | ||
+ | foreach ($qstItem as $itemID) { | ||
+ | $items[] = [$qstID, $itemID]; | ||
+ | } | ||
+ | } | ||
+ | // Liste mischen | ||
+ | shuffle($items); | ||
+ | | ||
+ | // Liste aufteilen | ||
+ | $itemBlocks = array_chunk($items, | ||
+ | registerVariable($itemBlocks); | ||
+ | } | ||
+ | |||
+ | // Auf mehreren Seiten präsentieren | ||
+ | $i = loopPage(count($itemBlocks)); | ||
+ | |||
+ | // Fragetext anzeigen | ||
+ | question(' | ||
+ | | ||
+ | // Items anzeigen | ||
+ | $items = $itemBlocks[$i]; | ||
+ | foreach ($items as $item) { | ||
+ | question($item[0], | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Schattierung ===== | ||
+ | |||
+ | Die automatische Schattierung der Items funktioniert hier nicht mehr, denn technisch gesehen ist jedes Item nun das erste (und einzige) in der dargebotenen Frage. Sie können aber im '' | ||
+ | |||
+ | <code php> | ||
+ | foreach ($items as $n => $item) { | ||
+ | if ($n % 2 == 0) { | ||
+ | question($item[0], | ||
+ | } else { | ||
+ | question($item[0], | ||
+ | } | ||
+ | } | ||
+ | </ |