AMP integration with AEM - CaaS Model(Content as a service) demo
I was receiving requests for writing sample code to showcase Third party AMP page which retrieve data from AEM (Content as a service).
What is AMP?
The AMP Project is an open-source Google-run website publishing technology initiative aiming to make the web better for all. The project enables the creation of websites and ads that are consistently fast, beautiful and high-performing across devices and distribution platforms. More details on https://www.ampproject.org/
How can I develop AMP websites?
You need to refer the above url for implementing AMP Projects, which has detailed information about syntax of AMP.
AMP integration with AEM
Step 1: To work with AMP and AEM, create an AMP file as shown below and deploy it on any server.
(You can refer PWA implementation & deployment article for the same: Set-up PWA running environment).
A sample AMP Structure is given below.
Save below file as 'Sample_AMP.html'
<!doctype html>
<html ⚡>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<title>AMP demo with AEM</title>
<link rel="canonical" href="index.html" />
<script async src="https://cdn.ampproject.org/v0.js"></script>
<script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>
<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
<noscript>
<style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style>
</noscript>
</head>
<body>
<amp-list width="auto"
height="100"
layout="fixed-height" src="test.json">
<template type="amp-mustache">
<div class="url-entry">
<a href="{{url}}">{{title}}</a>
</div>
</template>
</amp-list>
</body>
</html>
It takes a JSON input file(src="test.json") and publish data on page.
Step 2: Author a content fragment in AEM which has JSON format as below.
Follow this link for Creating & Authoring Content Fragments: Create & Author Content Fragments in AEM
{
"items": [
{
"title": "AMP YouTube",
"url": "https://www.youtube.com/"
},
{
"title": "AMPproject.org",
"url": "https://www.ampproject.org/"
},
{
"title": "AEM Tutorial Blog",
"url": "http://aem-cq-tutorials.blogspot.com/"
},
{
"title": "Solr with AEM Totorial",
"url": "http://aemsolr.blogspot.in/"
}
]
}
Step 3: Now, update the 'Sample_AMP.html' for src="test.json"with publish url of content fragment authored page
Step 4: Ensure CORS is enabled in AEM. (Confused? Refer https://aem-cq-tutorials.blogspot.com/2018/12/integrate-pwa-aem-and-retrieve-aem.html to updated CORS)
Step 5: Now invoke the AMP file, from server, you can see that data is appearing as shown below.
AMP with AEM - click on it to see big |
*(I haven't done styling just Functionality is tested).
Notes:
AMP - uses specific tags and syntax which needs to be validated after each change in code. You can use online AMP validator(https://validator.ampproject.org/) for this purpose.
Related Posts
>Step 1: Set-up PWA running environment
>Step 2: How to create & Deploy a Progressive Web Application
>Step 3: Create & Author Content Fragments in AEM
>Step 4: Integrate PWA & AEM and retrieve the AEM content from PWA.
AEM Content Fragments Demo: Integrate AMP with AEM
Thank You for this implementation
ReplyDeleteHi,
ReplyDeleteI am facing issues with implementation of AMP forms in AEM.Can you brief
about submitting AMP form data to backend sling servlet in AEM.
Thanks and Regards.