codeflood logo

Customising SashimiCMS

SashimiCMS is a developer oriented CMS and so allows for a great deal of customisation and extension. SashimiCMS is open. Open as in you have access to the templates and stylesheets and can modify them as required.

Modifying the main page template

The main page template is contained in the templates/main.xml file. If you open this file you will see it is nothing more than XHTML making use of the controls provided by SahsimiCMS. Of particular interest here is the contentHolder tags, which bind the content provided in the page files.

Adding page templates

The only requirement of a template is to be XHTML and contain contentHolder tags to bind the content from the page files. To use the new template you will have to tweak the build file to either use your template, or if you only want to use the template for a specific set of pages, alter the build file to allow for that. In particular, you will have to change the XSLT task that compiles the pages to include a nested fileset element, and use the fileset to select the page files for each template.

Common Controls in SashimiCMS

SashimiCMS comes with a set of commonly used controls which will allow you to out-of-the-box create a working and usable site.


The static_transform_control wraps any text in an XSLT binding element which you can reference from other controls and pages. This control is used for the header as well as behind the scenes in the article controls. You could also use this control for commonly used expressions throughout the site. For example, you could create a custom tag for the site administrators email address. Rather than have to change it in every location, a change could be done from a single location.

Transform chaining

The thing about XSLT is, it transforms XML into XML. In our cast (mostly) we are transforming XML into XHTML, but that doesn’t have to be the case. You could transform XML into XSLT, or even XSLT into XSLT, as XSLT is XML as well. SashimiCMS does this in the static_control_transform stylesheet. It transforms XHTML into XSLT to be used to transform XHTML into XHTML.

You can chain as many transforms together as required. For example, you may want to create a static control which is used in an HTML fragment inside another XSLT. As long as you have your targets set correctly, and your build order right, this will work.

More details to come…