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

Breadcrumb

Die Breadcrumb oder Brotkrümelnavigation gibt auf jeder Seite den Navigationspfad an, der zu der angezeigten Seite führt. Es handelt sich also nicht um eine spezielle Seite (wie z.B. die Sitemap), wir müssen die Breadcrumb daher in das bestehende Haupttemplate einbauen.

Das Breadcrumb Element

Den Quelltext zur Erstellung der Breadcrumb sollte als Element erstellt werden und kann daher wie folgt angelegt werden: /system/modules/org.opencms.frontend.templateone/elements/breadcrumb.jsp

Für mich passt folgende Breadcrumb, dabei wird nicht vorausgesetzt, dass für jede Seite ein eigener Ordner angelegt wird. Grundsätzlich muss die Dateiablage trennbar von der Navigation sein. Dies ist mit OpenCMS leider nicht vollständig umsetzbar, wo es aber geht - will ich es auch nutzen, dies muss die Breadcrumb abdecken. Ich speichere also mehrer Artikel in einem Ordner und zeige diese in der Navigation.

<%@ page session="false" import=" org.opencms.jsp.CmsJspNavBuilder,
java.util.List,
java.util.Iterator,
org.opencms.frontend.templateone.*,
org.opencms.jsp.*" %>
<%

CmsTemplateBean cms = new CmsTemplateBean(pageContext, request, response);
String aDok = (String)cms.getProperties().put("NavText", true);

if (aDok==null || aDok!=null && aDok.trim().length()==0 || "Startseite".equals(aDok)) {
     aDok = (String)cms.getProperties().put("Title", true);
}

CmsJspActionElement element = new CmsJspActionElement(pageContext, request, response);
List breadcrumbParts = element.getNavigation().getNavigationBreadCrumb();
Iterator i = breadcrumbParts.iterator();
CmsJspNavElement el = null;
String path = "";

int j = 0;
while(i.hasNext()) {
        el = (CmsJspNavElement)i.next();
        j++;
        if ( j == 2 && (el.isInNavigation()) ){
            out.print("<a href=\"" + cms.link(el.getResourceName()) + "\" > " + el.getNavText() +"</a>" );     
        } else if ( j > 2 && (el.isInNavigation()) ) {
            if(el.isInNavigation()) out.print(" >> <a href=\"" + cms.link(el.getResourceName()) + "\" > " + el.getNavText() +"</a>" );
        }
}

if (!cms.getRequestContext().getUri().endsWith("index.html")) {
    String s = cms.getRequestContext().getUri();
    if (s != null) {
        int index = s.lastIndexOf('/');
        s = s.substring(index+1);
    }
    out.print(" >> <a href=\"" + cms.link(el.getResourceName()) + s + "\" > " + aDok + "</a>");
}
%>

Einbinden in das Main-Template

Das Main-Template findet sich hier: /system/modules/org.opencms.frontend.templateone/templates/main

An passender Stelle wird ein neues div-Element eingefügt. Es erhält die class="breadcrumb", so kann die Gestaltung der Breadcrumb über CSS vorgenommen werden. Im Template wird definiert, dass das div-Element von der oben erstellten breadcrumb.jsp gefüllt wird.

 

%><div class="breadcrumb"><%
        cms.include(CmsTemplateBean.FOLDER_ELEMENTS + "breadcrumb.jsp");
        %></div><%


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