Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Guten Tag liebes SoSci-Survey Online Support Team,

ist es möglich, ähnliche wie für die "opacity" oder "fill"-Werte auch "textValue" bzw. "text"-Werte in einer SVG-Datei dynamisch bei Ergebnisberichten anzupassen?

Hier ein Auszug aus meiner SVG-Datei:

...

  <text id="shouldBeChanged" font-size="24" font-family="ArialMT, Arial"><tspan x="0" y="0">Dieser Satz soll verändert werden</tspan></text>

...

Kann ich den Text von id="shouldBeChanged" ändern?

Viele Grüße

in SoSci Survey (dt.) by s149335 (345 points)
Bisher ist das Verändern des eigentlichen Inhalts nicht vorgesehen, aber ich kann gerne mal versuchen, ob sich das mit moderatem Aufwand realisieren lässt. Vermutlich wäre es am einfachsten, wenn man Platzhalter im SVG verwenden könnte - dann kann man dafür jeden beliebigen Inhalt einfüllen.

Was meinen Sie, ginge das in die richtige Richtung?
Genau, diese Platzhalter habe ich bereits eingerichtet.
Dadurch könnte man Grafiken sehr gut dynamisch zu Fragebögen und Auswertungen anpassen.
In meinem Fall müsste beispielsweise "Eine spezielle Überschrift" durch "Eine andere Überschrift" ausgetauscht werden. Das natürlich an mehreren Stellen und am Besten über "ID"s. Am Schönsten wäre es, wenn man es ähnlich wie bei "opacity" machen könnte, so etwa:

svgSetStyle($svg, "textToBeChanged", ['textValue' => "newTextContent"]);

1 Answer

+1 vote

Am Schönsten wäre es, wenn man es ähnlich wie bei "opacity" machen könnte, so etwa:

Ich denke, das wäre spätestens dann nicht mehr so elegant, wenn man verschachtelte Elemente einsetzen will (z.B. einen grünen Kreis oder ein rotes Quadrat).

Der image()-befehl ließ sich zum Glück recht gut anpassen. Sie können dort nun wie bei show() Platzhalter direkt ersetzen:

<text id="shouldBeChanged" font-size="24" font-family="ArialMT, Arial">
<tspan x="0" y="0">%Platzhalter%</tspan>
</text>

Würden Sie wie folgt einbinden...

add(
    image('imagename.svg', [
        'width' => 100,
        '%Platzhalter%' => 'Einzusetzender Text',
        'left' => 50,
        'top' => 100
    ])
);

Vorsicht ... wenn Sie XML-spezifische Zeichen verwenden möchten, müssen Sie diese HTML-kodieren. Sonst wird die XML-Struktur beschädigt.

add(
    image('imagename.svg', [
        '%Platzhalter%' => htmlspecialchars('100 < 200')
    ])
);
by SoSci Survey (206k points)
...