Das ist ein wenig davon abhängig, wie die Hub-Page aufgebaut ist bzw. wie stark sich die einzelnen Spokelinks darauf unterscheiden. In allen Fällen ist es aber am einfachsten, wenn Sie die Datenbank-Funktion von SoSciSurvey nutzen.
Gehen wir einmal vom einfachsten Fall aus, dass die Links alle gleich aussehen und aufgebaut sind und sich nur im Text unterscheiden:
Zunächst erstellen wir ein Tabellenblatt (in Excel, als CSV oder vergleichbares), in dem wir pro Zeile die Informationen eines Spokelinks - z. B. Linktext, ID der Spoke-Seite) - in den Spalten speichern; die erste Spalte enthält einen Key (siehe Datenbank-Funktion), in Ihrem Fall am besten einfach die Zahlen 1-8.
Wir erstellen einen PHP-Array, der die Datenbankschlüssel enthält, mischen diesen zufällig und machen ihn mittels registerVariable() dauerhaft im Fragebogen verfügbar. Am besten geschieht dies auf der Seite vor der Selektionsaufgabe und verpacken es in eine isset-Bedingung, damit das pro Proband nur einmal geschieht. Das sähe bei Ihnen in etwa so aus:
if(!isset($order)) {
$order = range(1,8); // Array von 1-8 erzeugen
shuffle($order); // zufällig mischen
registerVariable('order'); // Variable im Datensatz verfügbar machen
}
- Wir gestalten die Hub-Seite nun so um, dass die relevanten Elemente aus der Datenbank befüllt werden. Wir könnten beispielsweise an allen Stellen im HTML-Code der Hub-Seite, die durch Informationen aus der Datenbank befüllt werden sollen, Platzhalter und diese dann ersetzen (z. B. dort wo der erste Linktext stehen soll: %linktext1%). Das würde als PHP-Code etwa so aussehen:
$text1 = dbGet($order[0]) // wir nutzen das erste (nullte) Element des Arrays als Schlüssel
$linktext1 = $text1[0] // ziehen uns die einzelnen Informationen aus der Datenbank, hier den Inhalt der ersten (nullten) Spalte hinter der Schlüsselspalte
replace('%linktext1%', $linktext1);
$text2 = dbGet($order[1]) // usw.
Wir können das ganze auch durch Loops abkürzen (foreach ($order as $i) { etc.), aber für Ihre Zwecke ist obige Variante vermutlich einfacher und nachvollziehbarer. Falls die Position der (zufällig platzierten) Spokelinks relevant ist, sollten Sie dies noch zusätzlich in internen Variablen abspeichern. Hierzu können Sie einfach die Elemente des geshuffelten $order-Arrays der Reihe nach in internen Variablen abspeichern.
Unterscheiden sich die Spoke-Links stärker voneinander, sind mehr Anpassungen nötig, das Verfahren sollte aber ähnlich ablaufen.
Falls noch Fragen sind: gerne auch eine Mail schreiben.
Beste Grüße
Julian Unkel