Frage
Antwort
Grundsätzliches
Wie es der Name schon sagt, ist das DTML Document ein Dokument, also ein Objekt. Die DTML Method hingegen ist eine Methode, also kein Objekt, sondern nur ein Skript.
Etwas genauer
Eine Methode ist dazu da, um Objekte zu verändern, Daten auszugehen, Berechnungen anzustellen und ähnliches, also um etwas zu tun. Methoden verfügen selber nicht über Eigenschaften, und somit auch weder über Daten noch über Unterobjekte. Deshalb fehlt auch die Properties-Seite im Management Inferface.
Ein Object, wie z.B. das DTML-Document, ist eher als eine Art Sammlung von Methoden und Eigenschaften zu verstehen. Eigenschaften können zum Beipiel der Text eines DTML Document, die Binärdaten eines Images oder ganze Unterobjekte (wie beim Folder) sein.
Was ist der Hauptunterschied im Verhalten der Beiden?
Ein DTML Document kennt in erster Linie sich selbst, seine Eigenschaften, seine Methoden. Die DTML Methode kennt hingegen nur das übergeordnete Objekt.
Ein Beispiel: <dtml-var objectIds> gibt die IDs aller Unterobjekte zurück. In einer Methode aufgerufen, wird eine Liste der Objekte im aktuellen Verzeichnis angezeigt. In einem DTML Document hingegen nicht. Warum? Der Kontext einer Methode ist das übergeordnete Objekt, also das Folder. Der Kontext des Documents ist es selber, und da es keine Unterobjekte hat, werden auch keine angezeigt.
Was soll/kann man damit anfangen?
Als kleinen Beispiel möchte ich zeigen, wie man es verhindert, jedes Document mit Header und Footer zu umschliessen: Dazu legt man sich eine DTML Method "view" an:
<dtml-var standard_html_header> <dtml-var document_src> <dtml-var standard_html_footer>
As zweites kommt ein DTML Document "Wetter" dazu:
Kräht der Hahne auf dem Mist, ändert sich das Wetter oder es bleibt wie's ist.
Ruft man jetzt Wetter/view im Browser auf, holt sich die Methode den Inhalt des Dokumentes und fügt ihn zwischen Header und Footer ein.