Dynamic pages from external data
In a site of any significant size, especially sites that are data-driven, you won't want to create a composition for each possible page. Uniform enables you to create dynamic pages that act as templates for how to display data from an external source without requiring you to create individual compositions.
For this exercise you will configure a dynamic page in your project that acts as a catch-all for any article that exists in the CMS. During the lesson you will:
Goals
- Build a dynamic article page that can display data from any article without an author having to manually a separate page for each and every article.
- Configure a data type that will provide data to the dynamic article page.
- Test the dynamic article page.
Add dynamic page#
- In Uniform, navigate to Experience > Project Map.
- Duplicate the node Home > Articles > The Golden Ratio of Coffee.
About this step
A new node is created with the a path segment
/the-golden-ratio-of-coffee-copy1
. - On the new node, click > Edit.
- Enter the following values:
Field Value Name Article
Path Segment Type Dynamic Path Segment article
- Click Save.
- In the project map, navigate to the node Home > Articles > Article.
- Open the composition by clicking on the name of the node.
- Change the following values on the composition:
Field Value Composition Name Article
Connect data resource#
- In the side rail, click .
- Delete the resource Single Article Content.
- Click Add a data resource.
- Click add above the drop down of data types to create a new one.
- Enter the following values:
Field Value Data Source Contentful > Contentful Archetype Entries by Field Filter by content type Article Field to search Slug Name Article by Slug
Public ID articleBySlug
- Click Save.
- Under the field Article by slug settings, click the chip icon to insert a variable.
- Select article.
- Click Save.
- In the upper right-hand corner of the data resources drawer, click to close the drawer.
- At the top of the page, in Attached To the field showing the slug path, click *article.
- In the field article, enter the following value:the-right-bean-for-pour-over-coffee-makers
- Click Save.
About this step
This value is only used so the components displayed within Canvas have a value during the authoring process.
Configure components#
Page component#
- Select the Page component.
- For the following parameters, clear any existing value and insert the specified dynamic token:
Parameter name External field Page Title Article by slug Content > items > 1 > fields > title - Click Connect.
Hero component#
- Replace the existing Hero component with a new component using the component type Hero.
About this step
You have to do this because the current Hero component is based on a pattern, which provides instructions for how the different parameters on the Hero are populated. You want to populate those parameters yourself, so you need to remove the Hero component based on a pattern and replace it with the plain Hero component.
- Add the Hero component, set the following parameters:
Parameter name Value Display Variant Image Left Title Style H2 - On the Hero component, map the following parameters:
Parameter name External field Title Article by slug Content > items > 1 > fields > title Description Article by slug Content > items > 1 > fields > description Image Article by slug Content > items > 1 > fields > thumbnail > fields > file > url If you get an error message about the value not being a valid image URL, click in the URL field before the purple text and enter
https:
. After you do this, the image should appear properly.
Content component#
- Select the Content component.
- For the following parameters, clear any existing value and insert the specified dynamic token:
Parameter name External field Text Article by slug Content > items > 1 > fields > content > 1 > content > 1 > value - Click Connect.
Publish & test the composition#
A new composition is not available to visitors until it is published.
- Click Publish... to publish the composition.
- In a new browser tab, open http://localhost:3000/articles/the-right-bean-for-pour-over-coffee-makers