When building solutions with Pimcore, normally one starts with configuring an object data model, create custom controller, actions and templates, creating documents and so on. Lots of things are possible without extending Pimcore itself. But depending on the desired result, sometimes it is necessary to extend the default functionality of Pimcore.
Pimcore provides several ways for extension for that purpose. Depending on the use case one or the other way may fit best.
Following a list of ways to extend Pimcore. See detail pages for additional information:
Add your own Dependencies and Packages for loading external libraries and functionalities to be available in custom code.
Use Overriding Models to overwrite Pimcore default models.
Configuration regarding configuration (e.g. overwriting Pimcore constants like assets directory, temporary directory etc.)
Parent Class for Objects to inject additional functionality to Pimcore object classes.
Event API and Event Manager for hooking into standard Pimcore functions like creating, updating, deleting elements etc.
Use Maintenance Mode to show users a maintenance page when changing system configurations. You also can create a custom maintenance page.
Use Maintenance Task to register new maintenance task
Add Custom Persistent Models to save additional information.
Create Bundles and Pimcore Bundles when you want to add complex and extensive functionalities to Pimcore.