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><%