Über eine method mit der ID 'pathhandler' kann man seinen eigenen PathHandler implementieren. Die Methode bekommt in der Request-Variablen 'path_' den verbleibenden Pfad aus der URL übergeben.

Beispiel 1:
Ein Content-Objekt id=e47 stellt Dateien aus dem lokalen Datei-System unterhalb von C:\Data zum Download bereit.

# pathhandler #

<dtml-call "RESPONSE.setHeader('Expires', DateTime(DateTime().timeTime()+3600).toZone('GMT').rfc822())">
<dtml-call "RESPONSE.setHeader('Cache-Control','public, max-age=3600')">
<dtml-return "FileFromData(localfs_read(path_))">

Über die folgende URL wird dann die pathhandler-Methode aufgerufen:
http://www.foo.bar/site/content/e24/e47/C%3A/Data/foobar.gif
Diese bekommt in der Request-Variablen path_=C:/Data/foobar.gif den Pfad übergeben, der noch zu behandeln ist.

Beispiel 2: Redirect nach Verschieben einer Seite
Im zweiten Beispiel soll das Redirect nach Verschieben einer Seite vorgestellt werden. Das Content-Objekt LgRedirectProxy kann an beliebiger Stelle im Objekt-Baum eingefügt werden (z.B. als Platzhalter für ein an vielen Stellen bereits verlinktes Objekt), das im Zuge einer Reorganisation verschoben wurde). Die _pathhandler-Methode bekommt den verbleibenden Objekt-Pfad übergeben. Der Redirect-Proxy kann anhand des Pfads entscheiden, wohin der Request weitergeleitet werden soll.

Content-Object mit _pathhandler-Methode
# Redirect nach Umstrukturierung #

<dtml-try>
 <dtml-if "path_ in ['alt','neu']">
  <dtml-let kw="[]">
   <dtml-in "REQUEST.form.keys()">
    <dtml-let k=sequence-item v="str(REQUEST.form.get(k))">
     <dtml-call "kw.append(k+'='+v)">
    </dtml-let>
   </dtml-in>
   <dtml-let target="'/site/content/news_%s?%s'%(path_,'&'.join(kw))">
    <dtml-call "RESPONSE.redirect(target)">
    <dtml-return "FileFromData(target,content_type='text/plain;charset=utf-8')">
   </dtml-let>
  </dtml-let>
 <else>
  <dtml-return "FileFromData('Unknown path %s!'%path_,content_type='text/plain;charset=utf-8')">
 </dtml-if>
<dtml-except>
 <dtml-return "FileFromData(str_json(str(error_type)+': '+str(error_value)),content_type='text/plain;charset=utf-8')">
</dtml-try>