Hi,
ich habe hier gelesen, dass es bei der Kombinierten Verwendung von setPageOrder
und loopPage
zu Problemen kommt. Komme aber in meinem Fall auf keine Lösung.
Ich nutze setPageOrder()
zusammen mit shuffel()
um die Reihefolge von mehreren Seiten zu randomisieren. Auf einer der Seiten verwende ich loopPage()
um mehrere änliche Textelemente und Fragen randomisiert aufzurufen.
Nach der Seite in der loopPage()
verwendet wird, wird der Fragebogen aber "normal" weitergeführt ohne die setPageOrder()
zu berücksichtigen.
Wie lässt sich das beheben?
Hier ist der bisher von mir verwendedete PhP-Code für die Seite auf der die Page Order bestimmt werden soll. Es sollen Blöcke randomisert werden, so dass im Block E die Reihenfolge der Seiten bestehen bleibt.
// Seitenkennungen als Array speichern, E als Block mit restlichen Seiten rotieren
if (!isset($rotation)) {
$rotation = array(
'A' => 'Seite1',
'B' => 'Seite2',
'C' => 'Seite3',
'D' => 'Seite4',
'E' => array('Seite5','Seite6','Seite7','Seite8',)
);
shuffle($rotation);
// Jetzt das Ergebnis noch als Seitenabfolge festlegen
registerVariable($rotation);
};
// Weiter soll es anschließend mit Seite 'Demographics' gehen
setPageOrder($rotation, 'Demographics', 'end1');
Auf Seite7 wird dann loopPage() folgendermaßen verwendet um Texte und entsprechende Fragen zu randomisieren:
if (!isset($blocks)) {
// Liste mit Text-Kennungen und zugehöriger Frage
$blocks = [
['d1_d_1','DV01'],
['d2_d_2','DV02'],
['d3_d_3','DV03'],
['d4_d_4','DV04'],
['d5_d_5','DV05'],
];
// Die Liste mischen
shuffle($blocks);
// Die Listen auf allen Seiten verfügbar machen
registerVariable($blocks);
}
// Über die Seite loopen und erneut alle Fragen aufrufen
$i = loopPage(count($blocks));
text($blocks[$i][0]);
question($blocks[$i][1]);
Liegt das an der Wiederholten Verwendung von registerVariable()
? Was kann ich tun, damit es nach Seite7 mit der in $rotation
festgelegten Reihenfolge weiter geht?