Seikrit
Returning Observer

Wert von CMS_LABEL dynamisch über RULES setzen

Jump to solution

Hallo zusammen,

ist es möglich den Wert eines CMS_LABEL über eine Regel zu setzen?

Da es in FirstSpirit keine Fallbacksprachen gibt, habe ich diesen Workaround in etwas abgewandelter Form ausprobiert. Ich lege für jedes sprachabhängige Input-Feld ein zweites sprachunabhängiges Feld an (dieses Feld zeige ich im Formular aufgrund der Übersichtlichkeit aber nicht an). In der Mastersprache kopiere ich dann mit einer RULE den Wert von dem sprachabhängigen Feld in das sprachunabhängige. Der verlinkte Workaround kopiert dann in den nicht Mastersprachen den Wert aus dem sprachunabhängigen Feld in das sprachabhängige, wenn dieses leer ist. Da dies dann aber nur einmal funktioniert und Änderungen in der Mastersprache nicht erneut in die anderen Sprachen kopiert, mache ich diesen Schritt nicht, sondern ich werte beide Felder in meiner headless-Implementierung aus.

Jetzt würde ich gerne in den nicht Mastersprachen unter dem Input-Feld ein Label anzeigen, dass den Text aus dem sprachunabhängigen Feld anzeigt. Dies scheint aber leider nicht zu funktionieren, vermutlich, weil der name des Labels optional ist und nicht eindeutig sein muss. Gibt es eine Möglichkeit den Wert von einem CMS_LABEL dynamisch über eine RULE zu setzen? Ich habe es bisher mit der PROPERTY LABEL und VALUE versucht, aber beides funktioniert nicht und schmeißt den Rule definition error: Unknown editor 'st_topline_label' in FactProcessor of type 'Property'. 

Momentan zeige ich dann jetzt das sprachunabhängige Feld an, wenn der Wert in der nicht Mastersprache leer ist, aber das überfüllt das Formular sehr stark. Das Label wäre eine schlankere Lösung.

mein Template:

<CMS_INPUT_TEXT name="st_topline" hFill="yes" singleLine="no" useLanguages="yes">
          <LANGINFOS>
            <LANGINFO lang="*" label="Topline"/>
            <LANGINFO lang="DE" label="Kopfzeile"/>
          </LANGINFOS>
        </CMS_INPUT_TEXT>

        <CMS_INPUT_TEXT name="st_topline_language_independent" hFill="yes" singleLine="no" useLanguages="no">
          <LANGINFOS>
            <LANGINFO lang="*" label="Fallback"/>
          </LANGINFOS>
        </CMS_INPUT_TEXT>
        
        <CMS_LABEL anme="st_topline_label">
          <LANGINFOS>
            <LANGINFO lang="*" label="">
            </LANGINFO>
          </LANGINFOS>
        </CMS_LABEL>

meine Rule:

<RULE>
		<IF>
			<EQUAL>
				<PROPERTY name="LANG" source="#global"/>
				<PROPERTY name="MASTER" source="#global"/>
			</EQUAL>
		</IF>
		<WITH>
			<PROPERTY name="VALUE" source="st_topline"/>
		</WITH>
		<DO>
			<PROPERTY name="VALUE" source="st_topline_language_independent"/>
			<PROPERTY name="LABEL" source="st_topline_label"/>
		</DO>
	</RULE>

Viele Grüße

Julia

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Julia,

das geht meines Wissens nach nicht. 

Ich würde das so lösen (damit das Formular nicht zu überfrachtet aussieht):

  <CMS_GROUP tabs="top">

    <CMS_GROUP>
      <LANGINFOS>
        <LANGINFO lang="*" label="Topline"/>
        <LANGINFO lang="DE" label="Kopfzeile"/>
      </LANGINFOS>

      <CMS_INPUT_TEXT name="st_topline">
        <LANGINFOS>
          <LANGINFO lang="*" label=""/>
        </LANGINFOS>
      </CMS_INPUT_TEXT>

    </CMS_GROUP>

    <CMS_GROUP>
      <LANGINFOS>
        <LANGINFO lang="*" label="Fallback"/>
      </LANGINFOS>

      <CMS_INPUT_TEXT name="st_topline_language_independent">
        <LANGINFOS>
          <LANGINFO lang="*" label=""/>
        </LANGINFOS>
      </CMS_INPUT_TEXT>

    </CMS_GROUP>

  </CMS_GROUP>

Dann kann man sich noch überlegen, ob man mit einer Regel einen Hinweis unter der Sprachabhängigen Eingabekomponente einblendet, wenn der Fallback vorhanden ist (und die Eingabekomponente nicht gefüllt ist)

Viele Grüße
Holger



View solution in original post

0 Kudos
4 Replies
hoebbel
Crownpeak employee

Hallo Julia,

das geht meines Wissens nach nicht. 

Ich würde das so lösen (damit das Formular nicht zu überfrachtet aussieht):

  <CMS_GROUP tabs="top">

    <CMS_GROUP>
      <LANGINFOS>
        <LANGINFO lang="*" label="Topline"/>
        <LANGINFO lang="DE" label="Kopfzeile"/>
      </LANGINFOS>

      <CMS_INPUT_TEXT name="st_topline">
        <LANGINFOS>
          <LANGINFO lang="*" label=""/>
        </LANGINFOS>
      </CMS_INPUT_TEXT>

    </CMS_GROUP>

    <CMS_GROUP>
      <LANGINFOS>
        <LANGINFO lang="*" label="Fallback"/>
      </LANGINFOS>

      <CMS_INPUT_TEXT name="st_topline_language_independent">
        <LANGINFOS>
          <LANGINFO lang="*" label=""/>
        </LANGINFOS>
      </CMS_INPUT_TEXT>

    </CMS_GROUP>

  </CMS_GROUP>

Dann kann man sich noch überlegen, ob man mit einer Regel einen Hinweis unter der Sprachabhängigen Eingabekomponente einblendet, wenn der Fallback vorhanden ist (und die Eingabekomponente nicht gefüllt ist)

Viele Grüße
Holger



0 Kudos
Seikrit
Returning Observer

Hallo Holger,

vielen Dank für deine Antwort. 


Dann kann man sich noch überlegen, ob man mit einer Regel einen Hinweis unter der Sprachabhängigen Eingabekomponente einblendet, wenn der Fallback vorhanden ist (und die Eingabekomponente nicht gefüllt ist)

Wie würde ich den Hinweis denn dann einblenden, bzw. was ist der Hinweis für ein Element? Ein Label funktioniert ja nicht. Wenn ich die Description der sprachabhängigen Komponente setzten würde, würde diese ja nur als Tooltip angezeigt werden. Würde ich das dann also INFO-Validierung machen? Da kann ich nur feste Strings für die Message angeben, richtig? Oder könnte ich hier zufällig auch Variablen nutzen, also z.B. den Fallback-Text in der INFO-Message anzeigen?

Viele Grüße

Julia

0 Kudos
hoebbel
Crownpeak employee

Hallo Julia,

tut mir leid, da habe ich nicht sauber genug formuliert 😞

Ja, ich meine eine Info-Validierung. Und ja, da kann man nur einen festen Text ausgeben, nicht den Inhalt einer Eingabekomponente (ansonsten wäre das ja genau die Lösung, die Du haben willst 😉

Noch ein Hinweis, da ich vorhin übereilt gepostet hatte: Natürlich kann man die Gruppen auch für mehrere Eingabekomponenten nutzen. Dann sollten diese aber keine leeren Label haben. Die leeren Label im Beispiel habe ich nur gewählt, da ansonsten die Informationen doppelt vorhandenen gewesen wären (einmal im Tab der Gruppe und einmal vor der Eingabekomponente)

Viele Grüße
Holger

0 Kudos
Seikrit
Returning Observer

Hallo Holger,

vielen Dank, ja so ähnlich haben wir es auch gemacht. Wir haben nur die beiden zusammengehörenden Felder in eine Gruppe gepackt. Dann sind die näher beieinander und werden im ContentCreator durch einen Strich optisch von den anderen getrennt. Den Gruppennamen haben wir dabei leer gelassen und das Label von dem Fallback-Feld zeigt einfach "Fallback" an.

Wenn dann natürlich alle Felder gefüllt sind, hat man weiterhin die Striche zwischen den Feldern, aber das war für uns der beste Kompromiss.

Viele Grüße

Julia

0 Kudos