[opencms-dev] How to build a template (Re: Manifest Manual)

Claus Priisholm cpr at codedroids.com
Fri May 19 10:11:20 CEST 2006


I'll suggest that you get the head nav to work with text links to begin 
with, then when that works find an appropriate way to map the HeadNav1 
and so forth to the appropriate image buttons.

But the basic steps should be similar to the example. For the head 
navigation the code should not recurse of course. So it would only list 
the elements from the top level folder "/".

Your left navigation may not need to recurse as well, but that of course 
depends on the site structure. Anyway, what you will have to do in the 
jsp code for the left side navigation is to detect the current top level 
folder and use that as starting point for the method generating the 
navigation.

Have a look at the CmsResource.getPathPart() - this can extract the top 
level folder from a given URI:

http://www.codedroids.com/javadocs/opencms/build_6_0_4/docs/api/org/opencms/file/CmsResource.html#getPathPart(java.lang.String,%20int)


twinkle wrote:
> Claus,
>  
> Wonderful! Your template cod eis simply superb. However, I would like to 
> add the Head navigation as well which will be different from the left nav.
>  
> Example - Head navigation will include HeadNav1, HeadNav2, HeadNav3, 
> HeadNav4
> When I click on HeadNav1 - Left Nav will be the sub pages in HeadNav1 folder
> HeadNav2 will have the sub pages in HeadNav2 filder and so on
>  
> Head Navigation contains all images and I add this as a include file in 
> the mytemplate.jsp. The problem is the navigation.jsp does not get 
> displayed and the index.html in the site is blank. If I print the value 
> of size of navList, it is 0.
>  
> Your help will be highly appreciated. Pelase reply. Thanks, in advance
>  
> -Twinkle
> 
> */Claus Priisholm <cpr at codedroids.com>/* wrote:
> 
>     Well, fiddling with manifests is not what I think of as a newbie
>     thing... If all you need is to build a template that you can use for
>     your pages it is not that complicated (though building templates can be
>     one of the major efforts as the requirements for a site can make them
>     quite complicated - templateone is such an example):
> 
>     1. Go to the administration view, select Modules Management. Create a
>     new module. Fill in the values, most important is the Package name, for
>     this example: "my.module.name" (typically you would use a java package
>     inspired naming strategy). The rest you can fill in as you see fit (or
>     leave them blank), but do check all the suggested folders so it will
>     create the necessary file structure for you.
> 
>     2. Switch to the explorer view and the "/" site. Go to
>     /system/modules/my.module.name. There you have the file structure for
>     the module. Go into the "templates" folder and create a new JSP - e.g
>     "mytemplate.jsp". Set the Title-property to something useful, e.g. "My
>     template", as it is the title you will see when you select a template
>     later on when creating new pages for the site.
> 
>     3. Enter the code, I've included a simple example. But despite its
>     simplicity it shows most of the basic steps:
> 
> 
>     <%@page buffer="none" session="false" import="org.opencms.file.*,
>     org.opencms.jsp.*, java.util.*, org.opencms.util.*" %>
>     <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
>     <%
> 
>     CmsJspActionElement cms = new CmsJspActionElement(pageContext, request,
>     response);
> 
>     if (cms.template("HEADER")) {
> 
>     %>
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>     	
>     <%
>     }
>     if (cms.template("CONTENTS")) {
>     %>
> 
> 
> 
>     <%
>     }
>     if (cms.template("FOOTER")) {
>     %>
> 
> 
> 
> 
> 
>     <%
>     }
>     %>
> 
>     I prefer using scriplet code over taglibs, but that is just a personal
>     preference (a dislike towards having to learn yet another syntax...)
>     But
>     actually you'll probably end up mixing them as you see fit...
> 
>     The cms.template("XX") statements are not really necessary unless you
>     plan using this template as a master for other similar templates
>     (typically because you want to replace the CONTENTS part with some
>     specific code rather than the text entered by the end user).
>     But other than that it is probably the simplest template you can get
>     away with: It includes the title-property of the page it is used on as
>     the window title. It includes a jsp script to build the navigation and
>     finally it includes the body-element from the page. Also it enables the
>     direct edit function (optional).
> 
>     4. Just to make it fully functional, here's the navigation.jsp (put in
>     the elements-folder). This is actually code to build a sitemap - you'll
>     probably end up using the getNavigationXXX stuff differently to suit
>     your needs for the navigation:
> 
>     <%@page buffer="none" session="false" import="java.util.*,
>     org.opencms.file.*, org.opencms.jsp.*, org.opencms.util.*" %>
>     <%!
>     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("
> 
>           \n");
> 
>           Iterator navItem = navList.iterator();
>           CmsJspNavElement nav;
>           while (navItem.hasNext()) {
>           nav = (CmsJspNavElement) navItem.next();
>           String navText = nav.getNavText();
>           String navPath = nav.getResourceName();
>           if (nav.isFolderLink()) {
>         * out.write("*" + navText +
>           "* <\"">
>           \n");
>           buildSiteMap(cms, navPath, out); // recurse...
>           } else {
>         * out.write("" + navText +
>           " <\"">
>           \n");
>           }
>           }
> 
>           out.write("
> 
>     \n");
>     }
>     }
>     %>
>     <%
> 
>     CmsJspActionElement cms = new CmsJspActionElement(pageContext, request,
>     response);
>     buildSiteMap(cms, "/", out);
> 
>     %>
> 
>     5. Switch to the "/sites/default/" site and create a new page - you can
>     now select "My template" as the template for the page. And then you're
>     ready to rock...
> 
>     regards
>     Claus
> 
>     Holger Schick wrote:
>      > Hello,
>      > well i did my first template. overall i took me hours - but only
>     to find errors like editing the following attributes wrong.
>      > I used a wrong order= and id= attribute value. I couldn't find a
>     documentation where i can find id- and order numbers which i can use.
>      >
>      >
>      >
>      >
>      > Another Error was because of all the copy and paste a pasted a
>     already used uuid. The Exception was not while importing an invalid
>     id or something. I retreived a marshalling exception because the
>     module used the wrong xsd. I found the reason in the import module
>     protocol. There was a file name which i didn't wanted to import.
>      >
>      > What are your experiences with open cms? Are this typical newbies
>     errors or do you have also such errors even if you are working
>     already with open cms?
>      > Or is the only reason that i couldn't find a good documentation
>     and somewhere is one?
>      > Is there anywhere more documentation available for the
>     manifest.xml or really good community web sites?
>      > Is there also a build tool for the manifest available something
>     like a ant script?
>      >
>      >
>      > thanks
>      >
>      > Holger
>      > _______________________________________________________________
>      > SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
>      > kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192
>      >
>      >
>      > _______________________________________________
>      > This mail is sent to you from the opencms-dev mailing list
>      > To change your list options, or to unsubscribe from the list,
>     please visit
>      > http://lists.opencms.org/mailman/listinfo/opencms-dev
>      >
> 
>     -- 
>     Claus Priisholm, CodeDroids ApS
>     Phone: +45 48 22 46 46
>     cpr (you know what) codedroids.com - http://www.codedroids.com
>     cpr (you know what) interlet.dk - http://www.interlet.dk
>     --
>     Javadocs and other OpenCms stuff:
>     http://www.codedroids.com/community/opencms
> 
>     _______________________________________________
>     This mail is sent to you from the opencms-dev mailing list
>     To change your list options, or to unsubscribe from the list, please
>     visit
>     http://lists.opencms.org/mailman/listinfo/opencms-dev
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> 
> 
> ------------------------------------------------------------------------
> 
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev

-- 
Claus Priisholm, CodeDroids ApS
Phone: +45 48 22 46 46
cpr (you know what) codedroids.com - http://www.codedroids.com
cpr (you know what) interlet.dk - http://www.interlet.dk
--
Javadocs and other OpenCms stuff: 
http://www.codedroids.com/community/opencms



More information about the opencms-dev mailing list