Extensible and easy to customize
Fully extensible, via code and/or the Sava adminstrator
Developers have complete control over key Sava functionality within each site deployed within a Sava instance. Located in each site's includes directory you will find local instances of key classes that can be used to override default Sava behaviors. Because your code is overriding the base functionality, but not replacing the core files, you get customization without making future Sava upgrades a hassle.
In the class extension manager (part of the Sava administrator) you are able to define sub types that extend the primary content types that Sava provides. These new extended attributes can then be further refined while in the administrator and easily integrated into templates and site functionality. You can call these new attributes like this: #request.contentBean.getExtendedAttribute("MyCustumVar")#, and work with them as you like.
Framework-friendly
One of the advantages of Sava is its ability to provide a solid base of functionality while at the same time getting out of your way as a developer. It was built with the sub-application in mind - it is incredibly easy to port in most front controller applications (Sava is especially fond of ModelGlue and Fusebox). Just put your custom app into the right directory, then use the built-in Sava tag to include your sub-application. [sava ]dspInclude('display_objects/customModelGlueApp/index.cfm')[/sava ] Integration complete.
Sava tag
The Sava tag is a unique and powerful feature that allows you to easily add dynamic content to a page or component within your site's WYSIWYG editor. The Sava tag takes any single expression, and allows you to freely intermingle traditional CMS content with CFML data or functionality. You can simply call functions like this: [sava ]dateFormat(now(),'m/d/yy')[/sava ], or [sava ]createObject('component','myPath.myComponent').init()[/sava ], and you're set.
* If you use these example code snippets, be sure to remove the spaces inside the tags first..