A consistent page design is essential for a professional website. Apart from the HTML structure reflected by the templates, the layout is mainly controlled by web resources, like CSS, JavaScript and templates. CoreMedia uses themes to bundle these files.
Developing and using themes, have some conflicting interests. On the one hand, changes of web resources should be immediately effective on your site, so they must be integrated into the caching and invalidation mechanisms of CoreMedia CMS and thus be maintained in the content repository. On the other hand, web designers want to work with their favorite familiar tools and short round-trips to test their changes. Maintaining each interim change into the content repository would be too much effort. In many projects the CSS and JavaScript is maintained by external agencies which do not even have access to the CMS but deliver their work as ordinary files.
In order to resolve this conflict, Web resources are treated as content in Blueprint, so that you do not need to take care of dependencies such as making sure that image files linked to the CSS files are deployed into your web application and how the files are included to your site. On the other hand, CoreMedia Blueprint ships with built in, ready to use features for developers, who would like to get started working on local web resources and templates as themes for their site.
One has to differentiate between the pure theme concept which comprises the theme structure, the theme descriptor file and the coremedia-webresource-content-maven-plugin and the automated Blueprint build process.
The following sections describe these topics:
Section 6.4.1, “CoreMedia Themes” describes the structure of a theme and gives some hints about coding styles.
Section 6.4.2, “Web Development Workflow” describes the web development workflow. That includes how developers can work with local resources, rather than with content objects inside the repository, how deployable theme artifacts can be build and how the artifacts can be imported into the content repository.