cube
Occasional Observer

RULE um Wert einer Eingabekomponente aus zwei anderen Werten zu setzen

Ich möchte den Wert einer (ausgeblendeten) CMS_INPUT_TEXT-Eingabekomponente automatisch aus den Werten zweier anderer CMS_INPUT_TEXT-Eingabekomponente setzen.

Bsp. Zwei CMS_INPUT_TEXT-Eingabekomponenten tt_first_name und tt_last_name. Beide Werte sollen als zusammengesetzter String automatisch in der dritten Eingabekomponenten tt_full_name (hidden="yes") gespeichert werden ("tt_first_name + tt_last_name")

Die Idee war, dies mit einer RULE über eine Werteermittlung mit <WITH/> <DO/> zu erreichen. Leider habe ich noch keine Lösung dazu gefunden. 

Ist das via RULES überhaupt möglich?

 

 

 

0 Kudos
4 Replies
cube
Occasional Observer

Geht dann offensichtlich nicht via RULES, sondern nur über ein (BeanShell) Script - oder wüsste hier doch noch jemand einen Weg? 

0 Kudos
hoebbel
Crownpeak employee

Hallo cube,

über Regeln sollte es mit einem ValueService funktionieren, der den Inhalt der beiden anderen Eingabekomponenten ausliest und als String zurück liefert. Über den DO Teil der Regel kann der String dann in die dritte Eingabekomponente geschrieben werden. Weitere Informationen dazu findest Du in der Dokumentation:
https://docs.e-spirit.com/odfs/vorlagenentwick/regeln/anbindung-exter/index.html

Allerdings frage ich mich, warum die Daten doppelt vorgehalten werden sollen? Warum reicht es nicht, nur bei der Ausgabe (und im Schnipsel) die Daten zusammenzuführen?

Viele Grüße
Holger

0 Kudos
cube
Occasional Observer

Hallo Holger,

Danke für Deine Antwort!

Allerdings frage ich mich, warum die Daten doppelt vorgehalten werden sollen? Warum reicht es nicht, nur bei der 
> Ausgabe (und im Schnipsel) die Daten zusammenzuführen?

Hintergrund ist der, dass für die Personen-Profilseiten  (liegen in einer Datenbank, via Content-Projektion eingebunden) der Wunsch besteht, die generierte URL aus Name und Vorname abzubilden (z.B. ../personen/doe-john.html).

Die Idee ist, für die Seitenreferenz dieser Personenseite (Daten > "Variable für Text der Menü-Übersicht (Sitemap)") als Attribut anstelle des lastName  hier ein Attribut urlName  zu verwenden, das sich in der oben beschriebenen Art und Weise, automatisch via RULE befüllt.

Möglicherweise aber ist die Lösung über ein Script wesentlicher einfacher als via RULE und valueService.

0 Kudos
hoebbel
Crownpeak employee

Hallo cube,

bei dem Anwendungsfall würde ich in dem Scheduler, der die entsprechende Generierung durchführt, vor die Generierung ein Skript hängen, welches über alle Datensätze iteriert, bei denen die Eingabekomponente mit dem vollständigen Namen leer ist. Also etwas in der Art von:
mySelect = <content2>.getSchema().getSession().createSelect(<content2>.getEntityType().toString());
isNullConstraint = new isNull("<Spaltenname>");
mySelect.setConstraint(isNullConstraint);

Und das diese dann entsprechend füllt und die Datensätze freigibt. (im Skript muss unter Eigenschaften eine eigene Verbindung konfiguriert werden und der dort hinterlegt User muss ausreichend Rechte dafür haben)

Danach muss dann der Startzeitpunkt der Generierung auf "jetzt" gesetzt werden (context.setStartTime(new Date())), damit die Änderungen auch berücksichtigt werden. 

Das hat den Vorteil, dass vor jeder entsprechenden Veröffentlichung die Daten aktualisiert werden - und auch nur dann.

Viele Grüße
Holger

0 Kudos