2017-02-18 3 views
0

Ich bin auf eine Situation gestoßen, in der ich den Rich-Text-Inhalt einer Seitentypspalte abrufen muss, und diese Daten/HTML so zurückgeben, wie sie auf einer gerenderten Seite erscheinen würden. Ein benutzerdefinierter Webpart dient dann als aggregierte Daten als Knoten von XML oder JSON.Render-Widget als HTML in Code hinter

Zum größten Teil war dies im Code hinter der Verwendung von DocumentQuery einfach, das Problem liegt jedoch bei Widgets, die in den Inhalt eingefügt wurden.

Meine Frage ist: Wie "render" ich ein Widget rein im Code? Oder sogar, was macht Kentico, um ein Widget zu erstellen, das ich vielleicht reproduzieren könnte?

Ich bin vertraut mit der Widget/Webpart/Benutzersteuerbeziehung, also denke ich, dass ein Webpart (irgendwo, irgendwie) instanziiert werden müsste, die Eigenschaften auf dem Widget verwenden und dann auf die RenderedHTML-Eigenschaft zugreifen des Webteils.

Aufgrund des Formats, in dem Widgets in den Daten gespeichert sind, hatte ich gehofft, dass sie nur mit dem MacroResolver gelöst werden könnten, aber das scheint nicht der Fall zu sein.

Hier ein Beispiel, wie das Out-of-the-Box-Widget DateTime angezeigt wird: {^ widget | (jsuseservertime) False | (name) DateTime | (widget_displayname) Datum +% 26 + time | (Breite) | (Höhe) ^}

Jede Eingabe wird sehr geschätzt!

+0

Warum müssen Sie dies über ein Widget tun? Wenn es sich um einen Inhalt eines Seitentyp-Felds (sogar Rich-Text) handelt, können Sie den Code einfach in den Code aufnehmen und den Wert eines solchen Feldes ermitteln. – JanH

+0

Ich glaube, er sagt, dass es Teil der DocumentContent-Spalte in der CMS_Document-Datenbank ist, IE der Text, der in einem "Editable Text" -Webpart verwendet wird. –

+0

Erläuterung: Wir verwenden Felder für benutzerdefinierte Seitentypen mit dem Datentyp Langer Text/Rich Text, die es jemandem ermöglichen, Rich Content und benutzerdefinierte Widgets über die Formularansicht einzugeben. Also für ein einfaches Beispiel, wenn das Rich-Text-Feld den Inhalt hat: „Hallo, auf die Website begrüßt die aktuelle Uhrzeit ist“ Der Ausgang, wenn die entsprechende Datenbankspalte Abrufen wäre: „Hallo, willkommen Die aktuelle Zeit ist 12:00 " Die verwendeten Widgets sind offensichtlich komplexer, und die Seiten haben aufgrund der Seiten vom Typ" Container "nicht unbedingt eine Vorlage. –

Antwort