in _includes/config.ts [168:221]
function addShortcodes(eleventyConfig: any) {
// short code
eleventyConfig.addShortcode("cta", async function (msgOverride: any) {
// @ts-ignore
const callToAction = this.ctx.environments.callToAction;
if (callToAction) {
let { title, message, action, url, image } = callToAction;
if (msgOverride) {
message = msgOverride;
}
if (image) {
image = `<figure class="media-left">
<p class="image is-64x64">
<img alt='call to action image' src='${image}'>
</p>
</figure>`;
}
let button = "";
if (action && url) {
const isUrlRelativeToBase = !url.includes("http");
const formattedUrl = isUrlRelativeToBase
? url.endsWith("/")
? url
: `${url}/`
: url;
button = `<p><a href="${formattedUrl}" class="mt-2 button is-info is-rounded" target="_blank">${action}</a></p>`;
}
return `
<article class="message is-info">
<div class="message-header">
<p>${title}</p>
</div>
<div class="message-body">
<div class="media">
${image}
<div class="media-content">
<div class="content">
${message}
${button}
</div>
</div>
</div>
</div>
</article>
`;
} else {
// @ts-ignore
console.error(`missing call to action in: ${this.page.inputPath}`);
}
});
}