Define Your Hub's Pages
Your hub consists of a set of pages that show data with your theme's look and feel. Clove provides a set of default pages for you, but you will often want to customize your available pages to add or remove based on your needs. Clove provides full flexibility in how your pages are defined.
What is a page?
A page consists of a URL, a template, a data definition, and a name. All of these pieces are customizable, but we'll go over each one in detail.
- URL — The path that will cause this page to be displayed. A URL may be as simple as "/", or more complex like "/tickets/:provider/:identifier".
- Template — Your hub has a theme that defines a set of templates. The page definition will include the title of one of the templates in your theme, which will then be displayed when that page is accessed.
- Data Definition — Your page could be anything, so you have to tell us what data to load. We provide a simple query language that can be used to load any data in your hub. This means that you can set up a page that has as much or as little data as you want.
- Name — The name of your page is actually very important. Clove's knowledge base, ticketing, and federated search system will create links that expect certain page names to be in use. We'll document all of those below.
- Login Required — Some pages only make sense if a user is logged in, like ticket management or billing. If you want your page to require a login, you can mark it as such. If the user isn't logged in (using your product's SSO), they will be sent through that login flow.
Page Manager
When viewing the Theme Management page, select "Pages" in the left-most application menu. This will open the Page Manager.
You will see all of your pages as well as any errors. In the above example, a page "/tickets" is defined and has a template that is not in our theme. If we tried to load this page in our hub, we'd see an error that the template is not defined.
Add a Page
When you select "Add Page", you’ll see a form with all of the concepts described above. This can be a bit overwhelming at first, so all of our out-of-the-box pages are available in the select menu at the top:
If you ever delete a page or change it beyond the point of salvage, you can use the standard page as a template to get you back to the starting point.
URL Structure
A URL path must always start with a "/" character. You will not be able to save it without that. You can use any character you want after that point. However, two characters are special:
:
— Use a colon to indicate a named variable segment. For example, the URL/tickets/:provider/:identifer
has two variable segments in it. The first will be available to your data definition as "provider" and the second as "identifier".
— It's rare that you'll need an asterisk, but there are special cases for it. If you have a variable segment that includes a "/" as part of the value, then
:
cannot be used to capture that value,has to be used instead. We include this in the knowledge base URL by default, because of how the locale is included.
Special Template Names
You should include the following page names in your hub:
content_article
— Your knowledge base article page should be named this. We use this when generating internal knowledge base links.
content_container
— Your knowledge base container page should be named this. We use this when generating internal knowledge base links.
ticket
— Your ticket detail page should be named this. We use this for federated search.
Data Definition
Clove uses a query language called GraphQL to make data loading easy to understand and maintain. Our query language allows you to use any of our data objects and queries in your hub.
Documentation for the available data definitions is coming soon. We recommend looking at the standard page for the data you're looking to include, or reach out to us if you can't find what you're looking for.
If you enter an invalid data query, you will not be able to save your page definition. This will prevent you from accidentally breaking your hub. We will include an error message indicating the specific problem: