Das Problem ist folgende Zeile in der Debug-Information:
[Information] No visible content on this page, continue with page 9
Nachdem die Seite mit der Rotation keine weiteren Inhalte zeigt, wird die erste rotierte Seite direkt mit-angezeigt. Das führt aber dazu, dass - wenn diese Seite aufgrund einer fehlenden Antwort erneut angezeigt wird - auch der PHP-Code für die Rotation erneut ausgeführt wird.
Dies lässt sich mit einem isset()
und einem registerVariable()
recht einfach verhindern:
if (!isset($random)) {
$pages = array('A','B','C','D');
// Die Seiten nicht direkt mischen, sondern deren Positionen
$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
// Rang speichern wie oben
$id = id('IV02', $indices[$i] + 1);
put($id, $i + 1);
// Seite in der Abfolge speichern
$random[$i] = $pages[$indices[$i]];
}
$random[] = 'E';
setPageOrder($random);
registerVariable($random);
}
Dies sollte ausreichen, damit sich an der Seitenabfolge nichts mehr ändert.
Alternativ könnten Sie den PHP-Code für die Rotation einfach schon eine Seite früher platzieren, wo ein anderer Inhalt angezeigt wird.