FabsH
I'm new here

Wert aus CMS_INPUT_RADIOBUTTON als Ganzzahl betrachten

Jump to solution

Guten Morgen zusammen,

ich bastel mir gerade eine Galerie-Absatz-Vorlage mit Bootstrap als CSS-/JS-Grundlage. Nun gebe ich dem Redakteur die Möglichkeit, einen Medienordner auszuwählen. Aus diesem werden alle Bilder geladen und mittels for-Schleife im HTML-Bereich ausgegeben.

Nun kann der Redakteur auch auswählen, in wie vielen Spalten die Galerie ausgegeben werden will. In der for-Schleife will ich mittels Modulo-Rechnung prüfen, ob am Ende des aktuellen Durchlaufs eine neue Zeile angefangen werden muss. Leider funktioniert es nicht, da es mir den Wert aus dem CMS_INPUT_RADIOBUTTON scheinbar nicht als Zahl erkennt. Folglich schlägt die Modulo-Rechnung fehl.

Mein CMS_INPUT_RADIOBUTTON:

      <CMS_INPUT_RADIOBUTTON name="st_columns" allowEmpty="no" gridWidth="5" hFill="yes" useLanguages="no">

        <ENTRIES>

          <ENTRY value="2">

            <LANGINFOS>

              <LANGINFO lang="*" label="2"/>

            </LANGINFOS>

          </ENTRY>

          <ENTRY value="3">

            <LANGINFOS>

              <LANGINFO lang="*" label="3"/>

            </LANGINFOS>

          </ENTRY>

          <ENTRY value="4">

            <LANGINFOS>

              <LANGINFO lang="*" label="4"/>

            </LANGINFOS>

          </ENTRY>

          <ENTRY value="5">

            <LANGINFOS>

              <LANGINFO lang="*" label="5"/>

            </LANGINFOS>

          </ENTRY>

          <ENTRY value="6">

            <LANGINFOS>

              <LANGINFO lang="*" label="6"/>

            </LANGINFOS>

          </ENTRY>

        </ENTRIES>

        <LANGINFOS>

          <LANGINFO lang="*" label="Anzahl der Spalten"/>

        </LANGINFOS>

      </CMS_INPUT_RADIOBUTTON>

Im HTML-Bereich:

$CMS_FOR(x, media_list)$

  $-- Index korrekt setzen --$

  $CMS_SET(index, #for.index + 1)$

  $CMS_IF(#for.isFirst)$

    <div class="row">

  $CMS_END_IF$

  $-- Inhalt des aktuellen Elements --$

  $CMS_IF(index % st_colummns == 0)$

    </div>

    <div class="row">

  $CMS_END_IF$

  $CMS_IF(#for.isLast)$

    </div>

  $CMS_END_IF$

$CMS_END_FOR$

Wie gesagt greift meine Modulo-Rechnung nie. Ersetze ich st_columns in der IF-Anweisung durch eine Zahl funktioniert alles korrekt.

Jemand eine Idee, woran es liegen könnte? Muss ich st_columns erst nach Integer casten?

Danke schonmal!

Fabian

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Fabian,

das liegt daran, dass der Wertetyp eines Radiobuttons keine Zahl ist sondern eine "Option". Hintergrund ist, dass ein Radiobutton (wie alle "optionsbasierten" Eingabekomponenten auch, z.B. Combobox und Checkbox) verschiedenste Typen von "inneren Werten" haben können, je nach dem auf welcher Art von Quelle die Wertemenge basiert - die "Option" ist hier eine Art Wrapper-Interface.

D.h. Du musst den Wert umwandeln, um ihn zu vergleichen:

$CMS_IF(index % st_colummns.key.toNumber() == 0)$

Den Wertetyp einer Eingabekomponente findest Du übrigens im ODFS immer in der Doku zur jeweiligen EK oben rechts im grauen Kasten: Das was dort hinter „zu den Methoden“ steht, ist der Typ.

Viele Grüße

Michael

View solution in original post

0 Kudos
1 Reply
mbergmann
Crownpeak employee

Hallo Fabian,

das liegt daran, dass der Wertetyp eines Radiobuttons keine Zahl ist sondern eine "Option". Hintergrund ist, dass ein Radiobutton (wie alle "optionsbasierten" Eingabekomponenten auch, z.B. Combobox und Checkbox) verschiedenste Typen von "inneren Werten" haben können, je nach dem auf welcher Art von Quelle die Wertemenge basiert - die "Option" ist hier eine Art Wrapper-Interface.

D.h. Du musst den Wert umwandeln, um ihn zu vergleichen:

$CMS_IF(index % st_colummns.key.toNumber() == 0)$

Den Wertetyp einer Eingabekomponente findest Du übrigens im ODFS immer in der Doku zur jeweiligen EK oben rechts im grauen Kasten: Das was dort hinter „zu den Methoden“ steht, ist der Typ.

Viele Grüße

Michael

0 Kudos