th_biedermann
Occasional Collector

CMS_FUNCTION mit Logik versehen

Jump to solution

Hallo zusammen,

ich habe eine <CMS_FUNCTION...

In der gibt es ein attribute="marke" dies nur ausgeführt werden darf wenn das Feld "st_marke" auch gefüllt ist.

Wie kann ich so was umsetzen?

 

	<CMS_FUNCTION name="contentSelect" resultname="fr_jobData">
	  	<CMS_PARAM  name="schema" value="sfs_inserate_erecruiting" />	  
	  	<CMS_VALUE_PARAM name="stellentyp" value="st_stellen_typ" />
	  	<CMS_VALUE_PARAM name="marke" value="st_marke" />
			<QUERY entityType="SFS_INSERATE_ERECRUITING">
				<FILTERPARAM parameter="stellentyp" datatype="java.lang.String" />
				<FILTERPARAM parameter="marke" datatype="java.lang.String" />
				<AND>
					<NEQ attribute="PlattformRav" value="1"/>
					<NEQ attribute="Stellentitel" datatype="java.lang.String" value=""/>
					<EQ attribute="stellentyp" parameter="stellentyp"/>
					$CMS_IF(!st_marke.isEmpty())$
						<LIKE attribute="marke" parameter="marke"/>
					$CMS_END_IF$
				</AND>
				<ORDERCRITERIA attribute="Stellenid" descending="1" />
			</QUERY>
	</CMS_FUNCTION>

 

 

Danke und Grüsse

Thomas

0 Kudos
2 Solutions

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Thomas,

eine entsprechende Logik ist nicht möglich ($CMS_ Ausdrücke werden im HEADER nicht ausgewertet)
Lösungsansätze für den Anwendungsfall könnten aber folgende sein:

  • zwei verschiedene contentSelect Funktionen nutzen und abhängig von dem Status des Eingabefeldes die gewünschte ausgeben
  • in die Variable st_marke ein Fragezeichen schrieben, wenn das Eingabefeld leer ist
    • das geht aber nur entweder per Regel (hässlich und sichtbar für den Redakteur) oder indem man die contentSelect Funktion in eine Formatvorlage auslagert (dort einfach manuell ein <CMS_HEADER> mit der Funktion anlegen) und beim Aufruf die entsprechenden Variablen übergibt. Dann muss man aber beachten, dass man aus der Formatvorlage nicht so ohne weiteres etwas in den höheren Kontext zurückschrieben kann (dazu gibt es hier in der Community schon ein paar Hinweise, z.B. In-Forschlaufe-weitere-CMS-FUNCTION-aufrufen 
  • man kann natürlich auch beide Lösungsansätze kombinieren (zwei Formatvorlagen erzeugen und die passende aufrufen)

Ich hoffe, einer der Lösungsansätze passt für Dich.

Viele Grüße
Holger

View solution in original post

0 Kudos

Hoi Holger

Danke für deine Lösungsansätze.

Ich habe es nun folgender massen gelöst:

Eine zweite CMS_HEADER Funktion erstellt mit dem zusätzlichen Parameter st_marke

Setzen der CMS_HEADER Function.

 

$CMS_SET(fr_jobData, fr_jobData_all)$
$CMS_IF(!st_marke.isEmpty())$
	$CMS_SET(fr_jobData, fr_jobData_marke)$
$CMS_END_IF$

 

Grüsse. Thomas

View solution in original post

0 Kudos
2 Replies
hoebbel
Crownpeak employee

Hallo Thomas,

eine entsprechende Logik ist nicht möglich ($CMS_ Ausdrücke werden im HEADER nicht ausgewertet)
Lösungsansätze für den Anwendungsfall könnten aber folgende sein:

  • zwei verschiedene contentSelect Funktionen nutzen und abhängig von dem Status des Eingabefeldes die gewünschte ausgeben
  • in die Variable st_marke ein Fragezeichen schrieben, wenn das Eingabefeld leer ist
    • das geht aber nur entweder per Regel (hässlich und sichtbar für den Redakteur) oder indem man die contentSelect Funktion in eine Formatvorlage auslagert (dort einfach manuell ein <CMS_HEADER> mit der Funktion anlegen) und beim Aufruf die entsprechenden Variablen übergibt. Dann muss man aber beachten, dass man aus der Formatvorlage nicht so ohne weiteres etwas in den höheren Kontext zurückschrieben kann (dazu gibt es hier in der Community schon ein paar Hinweise, z.B. In-Forschlaufe-weitere-CMS-FUNCTION-aufrufen 
  • man kann natürlich auch beide Lösungsansätze kombinieren (zwei Formatvorlagen erzeugen und die passende aufrufen)

Ich hoffe, einer der Lösungsansätze passt für Dich.

Viele Grüße
Holger

0 Kudos

Hoi Holger

Danke für deine Lösungsansätze.

Ich habe es nun folgender massen gelöst:

Eine zweite CMS_HEADER Funktion erstellt mit dem zusätzlichen Parameter st_marke

Setzen der CMS_HEADER Function.

 

$CMS_SET(fr_jobData, fr_jobData_all)$
$CMS_IF(!st_marke.isEmpty())$
	$CMS_SET(fr_jobData, fr_jobData_marke)$
$CMS_END_IF$

 

Grüsse. Thomas

0 Kudos