dotCMS simplifies your Content publishing by automatically ensuring that any time you push Content to another server, the Content displays properly and all code works correctly on the receiving server. You don't need to do anything other than author and push your desired Content.
This is accomplished through the use of dependencies. When you push any Content to another server, dotCMS automatically determines the dependencies of that Content, which includes all other Content needed to ensure that the item you're pushing will display and work properly. dotCMS then also automatically pushes everything your pushed Content is dependent on.
For example, if you create a new Folder and add a new Page in that Folder, then the Page is dependent on the Folder. So when you push the Page, dotCMS will also automatically push the Folder.
- Change Detection
- Dependencies List
- Cascading Dependencies
- Optional Dependency: Push All Folder Pages
dotCMS always checks all dependencies when you push your Content. However, to limit the amount of network traffic, by default dotCMS only actually pushes Content dependencies which have changed since the last time they were pushed to the receiving server. So even if your pushed Content depends on a second item, the second item will not be pushed if it has not changed on the sending server since the last time it was pushed to the receiving server.
For example, if a folder was pushed 5 days ago, and you push a change to a Page within that folder, the folder will only be pushed if it has been modified within the past 5 days (since the previous push). If the folder has not been modified since it was last pushed, the Page will be pushed, but the folder will not be pushed again.
You may force dotCMS to push dependencies regardless of when they were last pushed or changed by specifying the Force Push option. Please see the Publishing Content documentation for more information.
The following table displays the dependencies for each Content Type:
|Page||Host, Folder, Templates, Containers, Content, Rules|
|Folder||Host, Parent Folder, Subfolders, Links, Pages, Content, Content Types for all Content|
|Template||Host, Containers, Theme|
|Content||Host, Parent Folder, Content Type, Language, Tags, Optional: Pages, Containers and Templates in Parent Folder|
|Content Type||Host, Folder, Fields, Workflow Scheme, Relationships|
|Host||Folders, Templates, Containers, Content, Content Types|
Note: The Global Language Variables are pushed when a Language is pushed; they are considered part of the language for push publishing purposes.
In addition to the core dependencies shown above, when your Content has Relationships to other Content, dotCMS also pushes the related Content.
For example, if you have a Comment contentlet which is linked to a Blog contentlet through a Relationship, when you push the Comment contentlet, the related Blog contentlet will also be pushed.
Dependencies based on Relationships link Content through 1 level of Relationships. However Relationship dependencies also cascade. So for example if you have a parent-child Relationship with multiple levels, when you push Content at the bottom level of the Relationship tree, it's parent Content, grandparent Content, etc. will be pushed all the way up the relationship tree.
The dependencies cascade, to ensure that anything your pushed Content depends on also has access to it's own dependencies. So when you push an item that depends on a second object, and the second object also depends on a third object, all three objects are pushed.
For example, when you push a single Page, the Host, Parent Folder, Content, and direct Relationships of the page are also pushed. In addition, since the Content on the page is pushed, the Content Type of each piece of Content on the Page is also pushed.
In addition, if you have different working and live versions of Content, dotCMS will automatically push all dependencies for both the working and live versions of the Content.
Optional Dependency: Push All Folder Pages
By default, when you push Content, all Pages, Templates and Containers in the parent Folder of the Content are also pushed. However you may prevent pages in the parent Folder from automatically being pushed with Content by setting the
PUSH_PUBLISHING_PUSH_ALL_FOLDER_PAGES configuration property to false in the dotmarketing-config.properties file.
Note: It is strongly recommended that all changes to the dotmarketing-config.properties file be made through a properties file extension.