Extendable by design
The Evolution CMS community has created many add-ons which can be found in the Repository, from image galleries and e-commerce to smaller utilities.
Template Variables with Bindings
TVs - Template Variables - are powerful extra fields that you can use with your documents. As an example of an advanced template element that returns a different thing dependent on code or data, we created an @BINDING for the name of the Login menu item. This changes the menu name from Login to Logout based on your logged in state. The @BINDING as follows was placed in the default value as:
@EVAL if ($modx->getLoginUserID()) return 'Logout'; else return 'Login';
We used some simple effects to highlight various things on the front/home page to demonstrate how easy it is to create a useful way to draw attention to things. To see them in action on the home page, click the Integrated Site Search, Related Links or Newest Documents headers.
To demonstrate how to link to custom forms, we customized the calls to the Webuser Registration system and the Login system.
Rich Text Editor for blog entries. To make it easier to format blog posts with simple text formatting, we modified the blog to use a custom RTE-enabled Template Variable (TV).
Smart-Summary logic. When splitting the full blog/news posts you simply insert a "<!-- splitter -->" where you want the break to occur. In addition, if that leaves any important tags open, it will try to match them and close them so it doesn't mess up your site layout with unclosed OL, UL or DIV tags.