1. Zum Inhalt springen
  zur Startseite | Barrierefreiheit | Kontakt | Impressum | Sitemap

Sitemap

Eine Sitemap gehört bei modernen Websites zum guten Ton. Eine Übersicht der ganzen Website.

Erstellen der Sitemap

TemplateOne liefert keine vorgefertigte Lösung, wenn auch die API von OpenCMS Funktionen zum Aufbau einer Sitemap kennt. Der Redakteur kann über die Schaltfläche "Neu" als Dokumenttyp auch JSP auswählen. Für die Benennung empfehle ich die Anlehnung entsprechend dem Beispiel "sitemap.jsp.html".

Die Umsetzung einer Sitemap dient als Beispiel für die Verwendung einer JSP im Content.

Der folgende Code basiert übrigens auf Tipps, die sich im Internet finden:

<%@page buffer="none" session="false" import="java.util.*, org.opencms.file.*, org.opencms.jsp.*, org.opencms.util.*" %>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%!
public void buildSiteMap(CmsJspActionElement cms, String uri, java.io.Writer out) throws Exception
{
   List navList = cms.getNavigation().getNavigationForFolder(uri);
   if (navList.size() > 0) {

     out.write("<li style=\"list-style-type: none\"><ul>\n");

     Iterator navItem = navList.iterator();
     CmsJspNavElement nav;
     while (navItem.hasNext()) {
       nav = (CmsJspNavElement) navItem.next();
       String navText = nav.getNavText();
       String navPath = nav.getResourceName();
    String navPathLink = cms.link(nav.getResourceName());
       if (nav.isFolderLink()) {
         out.write("<li><a href=\"" + navPathLink + "\"><b>" + navText + "</b></a></li>\n");
         buildSiteMap(cms, navPath, out); // recurse...
       } else {
         out.write("<li><a href=\"" + navPathLink + "\">" + navText + "</a></li>\n");
       }
     }

     out.write("</ul></li>\n");
   }
}
%> <cms:include property="template" element="head"/> <div class="element"><h1>Sitemap</h1><ul><%
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
buildSiteMap(cms, "/rothemel/", out);
%></ul></div><cms:include property="template" element="foot"/>

Nun erhält man eine Seite ohne das Layout der Website, ohne Navigation, Kopf und Fuß. Die Sitemap sollte jedoch im Contentbereich angezeigt werden.

Das Layout einbinden

Die obige JSP muss nun erweitert werden. Hierzu werden taglibs verwendet. Wenn diese bekannt gemacht wurden, kann auf Elemente der Eigenschaft "Template" zurückgegriffen werden. Die Eigenschaft Template ist zu definieren, die JSP-Datei wird z.B. über das Kontextmenü (rechte Maustaste) angewählt und die Eigenschaften geöffnet. Dort unter Erweitert den Punkt template wie folgt setzen: /system/modules/org.opencms.frontend.templateone/templates/main

Wenn wir schonmal in den erweiterten Eigenschaften sind, können wir direkt den Punkt export auf true setzen, damit wird beim statischen Export die Datei gebaut und mit dem Dateinamen exportiert. Daher auch die obige Empfehlung den Dateinamen mit .html enden zu lassen.

Bevor die erzeugte Sitemap zum Ende tatsächlich auch ausgegeben wird, kommt nun das Element "head". Die Ausgabe wird vom div-Container "element" eingerahmt und abschließend wird der "foot" geschrieben.

<%@page buffer="none" session="false" import="java.util.*, org.opencms.file.*, org.opencms.jsp.*, org.opencms.util.*" %>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%!
public void buildSiteMap(CmsJspActionElement cms, String uri, java.io.Writer out) throws Exception
{
  ...
}
%> <cms:include property="template" element="head"/> <div class="element"><h1>Sitemap</h1>
<ul><%
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
buildSiteMap(cms, "/rothemel/", out);
%>
</ul></div><cms:include property="template" element="foot"/>


 
 
??? link.top ??? | ??? link.print ???