Developing & APIsdocumentation for the dotCMS Content Management System

dotCMS provides multiple different ways to develop code and extend your sites. It is helpful to understand the different ways you can code in and extend dotCMS when planning your site development.

Client-Side Web Development

You may use standard client-side development methods supported by your users' browsers, such as HTML, CSS, and Javascript (including jQuery and other Javascript frameworks). Since these methods are passed directly from dotCMS to the client, the only limitation on the use of these methods are those imposed by the client browsers and applications you wish to support.

Server-Side Web Development: Velocity

dotCMS natively supports the Apache Velocity language, which is a server-side coding language that is easy to learn and use, with a simple syntax, but also easily extended with Java plugins. dotCMS both provides standard Apache Velocity classes (called Viewtools), and enables you to easily pull, manipulate, and display dotCMS content using Velocity.

External Application Development (Headless/Content-as-a-Service/CaaS): REST API

dotCMS provides a large number of REST API Endpoints which can be used to create, modify, and access dotCMS objects and content.

Plugin Development: Java

You may create both static and dynamic OSGI plugins to extend dotCMS functionality. Plugins are coded in Java. Dynamic plugins can be loaded and unloaded without restarting your dotCMS server. Static plugins may not be dynamically loaded, but can be used to perform some types of changes that can not be performed with dynamic plugins (such as overriding built-in dotCMS classes).

Combining Development Methods

You may combine any or all of these methods however you wish to provide the level of control, performance, and security required for your application. For example, you may create a Javascript form which runs on the client, but which calls a REST API endpoint to retrieve and update data in the dotCMS content repository. You may also create a Java plugin and expose the classes in your plugin as Velocity Viewtools to extend your Server-side web development capabilities.

For more information on each of these development methods, please see the appropriate documentation section.