HTML-Ausgabe des Text-Körpers verändern
Die API-Funktion getBodyContent() erzeugt die HTML Präsentation eines Content-Objektes. Diesen HTML-Strom kann man über einen hook nachträglich manipulieren.
Die API-Funktion getBodyContent() erzeugt die HTML Präsentation eines Content-Objektes. Diesen HTML-Strom kann man über einen hook nachträglich manipulieren.
Die API-Funktion ZMSObject.getBodyContent()
prüft beim Erzeugen des HTML-Strom, ob im Kontext ein Objekt bzw. eine Methode namens getCustomBodyContent()
existiert und übergibt dieser abschließend ggf. den HTML-Ausgabestrom (sog. "hook"). Wenn man ein entsprechendes Python-Script oder eine DTML-Methode getCustomBodyContent
auf Template-Ebene einsetzt, kann man die HTML-Ausgabe verändern. Im folgenden Beispiel (Python-Script) werden inline-Links in die deklarative Syntax umgewandelt.
Der folgende Code stammt von T. Kraemer : [zms-developers] Declarative URL's - Workaround:
# Parameter List: html, REQUEST # try: start = 'href=\"./' end = '\"' while True: i = html.find(start) j = html.find(end, i+len(start)) if i < 0 or j < 0: break href = html[i+len(start):j] ids = href.split('/') ids[-1:] = ids[-1].split('#') # ob = REQUEST['ZMS_THIS'] ob = context.this() for id in ids: if not id or id.startswith('index'): continue if id == '..': ob = ob.getParentNode() else: ob = getattr(ob, id, None) html = html if not ob: # Invalid href href_new = href break else: href_new = ob.getHref2IndexHtml(REQUEST) html = html.replace('./'+href, href_new) return html except Exception, err: return err
Erstellt von: Dr. Frank Hoffmann , SNTL Publishing , erstellt am: 15.09.2010 , zuletzt geändert: 22.09.2011