diff --git a/layouts/default.11ty.js b/layouts/default.11ty.js index c8dfbba..35a1967 100644 --- a/layouts/default.11ty.js +++ b/layouts/default.11ty.js @@ -1,57 +1,94 @@ +import config from '../nuxt.config' + + + +const makeTag = ( tag, tagName = 'meta') => { + + const attributes = Object.entries(tag).map( ([ name, value ]) => `${name}="${value}"` ).join(' ') + + return `<${tagName} ${attributes}>` +} + +const mapMetaTag = ( tag ) => { + + if ( tag.hasOwnProperty('property') ) { + return [ + `property-${tag.property}`, + makeTag(tag) + ] + } + + if ( tag.hasOwnProperty('name') ) { + return [ + `name-${tag.name}`, + makeTag(tag) + ] + } + + if ( tag.hasOwnProperty('charset') ) { + return [ + 'charset', + makeTag(tag) + ] + } +} + +const mapLinkTag = ( tag ) => { + return [ + `type-${tag.type}`, + makeTag(tag, 'link') + ] +} + +const defaultMeta = Object.fromEntries(config.head.meta.map( mapMetaTag )) + +const defaultLinkTags = Object.fromEntries(config.head.link.map( mapLinkTag )) + class DefaultLayout { - // or `async data() {` - // or `get data() {` - // data() { - // return { - // layout: 'default.njk', - // pagination: { - // data: 'video-list', - // size: 1, - // alias: 'video' - // }, + generateMetaTags = ( pageMeta = [] ) => { - // permalink: ({ video }) => { - // // console.log('data', data) - // return `tv/${ video.slug }/` - // } - // } - // } + const meta = { + ...defaultMeta, + ...Object.fromEntries(pageMeta.map(mapMetaTag)) + } - render({ content }) { + return Object.values(meta).join('') + } + + generateLinkTags = ( pageLinkTags = [] ) => { + + const linkTags = { + ...defaultLinkTags, + ...Object.fromEntries(pageLinkTags.map( mapLinkTag )) + } + + return Object.values( linkTags ).join('') + } + + render({ + content, + pageTitle = null + }) { return /* html */` - +
-