2016-07-21 6 views
4

Ich freue mich auf die Ausgabe Rich Text in Magnolia direkt an das Front-End. Ich definieren das Feld wie folgt:Magnolia reiche Textfelder

@TabFactory("Content") 
public void contentTab(UiConfig cfg, TabBuilder tab) { 
    tab.fields(
      cfg.fields.text("title").label("Title"), 
      cfg.fields.richText("subtitle").label("Subtitle") 
    ); 
} 

Innerhalb einer Vorlage, wenn Informationen in die JCR gespeichert wird, scheint es die Daten mit HTML-Entitäten zu kodieren:

Title: ${content.title} 
Subtitle: ${content.subtitle} 

Ausgänge (raw Quelle). ..

Title: The Title Field 
Subtitle: <p>The Subtitle Field</p> 

Aber ausgeben soll (raw Quelle) ...

Title: The Title Field 
Subtitle: <p>The Subtitle Field</p> 

Gibt es eine Möglichkeit, zu verhindern, dass die Rich-Text-Felder automatisch codiert werden?

Antwort

0

Die meisten Rahmen versuchen, loszuwerden, die XSS -kind von Angriffen zu bekommen, so dass es ein guter Weg ist, im Anschluss an die Vorlage als die verwenden:

Title: ${content.title} 
Subtitle: <p>${content.subtitle}</p> 

Es werden die Benutzer (oder Administratoren) verhindern Magie laufen JS oder einige andere schlechte Codes auf dem Client.

Zurück zur Frage: Schauen Sie sich die Dokumentation hier https://documentation.magnolia-cms.com/display/DOCS/Component+definition. Es gibt etwas namens escapeHtml werfen Sie einen Blick darauf. :)

Edit: als bashaus wies darauf hin, dass er Seiteneigenschaften nicht Komponenten verwendet. Die Lösung auf diese Weise die folgenden:

[#if content.text?has_content] 
    ${cmsfn.decode(content).text} 
[/#if] 

TL.DR: Versuchen HTML-Zeichen in dynamischem Inhalt, aber die Funktion ist in der Lage sein, ausgeschaltet zu vermeiden.

+0

Danke - aber ich bin mit Komponenten nicht, ich bin mit den Seiteneigenschaften für diese Artikel. Irgendwelche Ideen, wie man es für die Immobilie macht (mit den Tabs oben) – bashaus