Custom Links & Pages
The Static CMS exposes a window.CMS global object that you can use to register external links or links custom pages, via registerAdditionalLink. The links are displayed at the bottom of the navigation menu in the order they are registered.
React Components Inline
The registerPreviewTemplate requires you to provide a React component. If you have a build process in place for your project, it is possible to integrate with this build process.
However, although possible, it may be cumbersome or even impractical to add a React build phase. For this reason, Static CMS exposes some constructs globally to allow you to create components inline: h (alias for React.createElement) as well some basic hooks (useState, useMemo, useEffect, useCallback).
NOTE: createClass is still provided, allowing for the creation of react class components. However it has now been deprecated and will be removed in v2.0.0.
Params
registerAdditionalLink takes an AdditionalLink object with the following properties:
| Param | Type | Description |
|---|---|---|
| id | string | Unique identifier for the link |
| title | string | Display text for the link |
| data | string | React Function Component |
|
| options | object | Optional. See Options |
Options
Available options for each additional link are:
| Param | Type | Description |
|---|---|---|
| iconName | string | The name of a custom registered icon to display. See Custom Icons |
Examples
External Links
CMS.registerAdditionalLink({
id: 'example',
title: 'Example.com',
data: 'https://example.com',
options: {
icon: 'page',
},
});
Custom Page
const CustomPage = () => {
return h('div', {}, 'I am a custom page!');
};
CMS.registerAdditionalLink({
id: 'custom-page',
title: 'Custom Page',
data: CustomPage,
options: {
icon: 'page',
},
});