Hallo,
ich möchte den Linktext eines Links gerne automatisch aus den Daten der verlinkten Referenz auslesen.
Beispiel:
In den globalen Inhalten sind Seiten angelegt, in denen z. B. Telefonnummern gepflegt werden, d.h. jede dieser globalen Seiten hat nur ein Formularfeld für die entsprechende Telefonnummer und gibt dessen Wert direkt im HTML wieder aus - ähnlich der Labels im Mithras-Projekt.
Redakteure sollen nun Telefonlinks im Fließtext einfügen können, dazu ist ein Linktemplate angelegt, mit einem FS_REFERENCE-Formularfeld, in dem der Redakteur die gewünschte Telefonnummernseite aus dem globalstore auswählt.
Es gibt erstmal kein Formularfeld für den Verweistext, bei "Verweistext" im Eigenschaften-Tab des Linktemplates ist entsprechend nichts ausgewählt - der Redakteur soll den Verweistext nicht manuell eingeben, sondern er soll aus der Referenz generiert werden.
Die Ausgabe / das HTML des Linktemplates ist so aufgebaut, dass es die Telefonnummer aus der Seite ausliest und sowohl als href sowie als Linktext ausgibt (verkürzt und ohne empty-Prüfungen etc., lt_phone ist das FS_REFERENCE Formularfeld):
$CMS_SET(set_ft_phone)$$CMS_VALUE(lt_phone.get)$$CMS_END_SET$
$CMS_SET(set_ft_phone_link)$$CMS_VALUE(set_ft_phone.toString.replaceAll(" ",""))$$CMS_END_SET$
<a href="tel:$CMS_VALUE(set_ft_phone_link)$">$CMS_VALUE(set_ft_phone)$</a>
Das ist nicht sonderlich elegant, aber funktioniert als Testfall soweit, in der Vorschau sowie in den generierten Seiten wird das ganze z. B. nach <a href="tel:0123456789">0123 45 67 89</a> herausgeneriert.
Nur beim Einfügen des Link in ein Input_DOM bzw. beim Bearbeiten des DOM sieht der Redakteur keinen Linktext, sondern nur den leeren Linkindikator- logisch, es ist ja auch kein zu verwendender Verweistext angegeben bzw. kein Verweistext-Formularfeld ausgewählt...
Also bräuchte ich eine Möglichkeit, ein Linktext-Feld auch automatisch aus der ausgewählten Referenz zu belegen.
Mein erster Gedanke war ein Textfeld ganz normal im Formular anzulegen, als Verweistext unter "Eigenschaften" auszuwählen, es auszublenden so dass der Redakteur es nicht sieht/bearbeiten kann und stattdessen über eine Regel automatisch aus der ausgewählten Referenz zu befüllen. Mit
<PROPERTY source="lt_phone" name="VALUE" />
kann ich es nciht befüllen, da der Wert ja nicht die Telefonnummer ist, sondern die Referenz auf die Seite.
Nächster Gedanke war ein ValueService, der dann den Inhalt = die Telefonnummer aus der Referenz herausliest, aber dazu müsste ich dem ValueService ja die ausgewählte Referenz übergeben, damit dieser dann daraus die Telefonnummer (oder zumindest die UID der ausgewählten Referenz, das würde für den Fall auch reichen als Verweistext im DOM) auslesen kann.
Bei Übergabe an den ValueService mit
<PARAM name="reference"><PROPERTY source="lt_phone" name="VALUE" /></PARAM>
kommt allerdings die Fehlermeldung:
Fact for parameter 'value' is not serializable: [phone_example1:GLOBALSTORE]@11d3440
Gibt es keine Möglichkeit, die Referenz an den ValueService zu übergeben? Oder eine Möglichkeit, irgendwie anders im ValueService an die ausgewählte Referenz zu kommen?
Alternativ könnte ich natürlich statt der globalen Inhaltsseiten eine Datenquelle verwenden, in der ich die Telefonnummern halte, da scheitere ich aber im Endeffekt am gleichen Problem, ich kann das Formularfeld mit dem ausgewählten Datensatz nicht als Verweistext angeben und ich bekomme das Verweistext-Feld für den DOM-Input nicht automatisch befüllt.
Oder denke ich in die falsche Richtung und ein komplett anderer Weg ist dafür besser geeignet?
Vielen Dank im Voraus und viele Grüße
Mona