diff --git a/sitegin/templates.js b/sitegin/templates.js index 564ccba6e1208f9b3b170670d5fd007f4437cce8..584c58115ccb6f1afc53aaacc7797dcceebaed98 100644 --- a/sitegin/templates.js +++ b/sitegin/templates.js @@ -10,26 +10,43 @@ const config = require('./config') module.exports = async (data, type_) => { try { // eslint-disable-next-line import/no-dynamic-require,global-require - const Template = require(path.join( + const templates = require(path.join( process.cwd(), config.themeDir, 'templates', `${type_}.js`, )).default - return [ - { - content: ReactDOM.renderToStaticMarkup( - React.createElement(Template, { - ...data, - config: { - ...data.config, - baseurl: config ? config.options.baseurl : '', - }, - }), - ), - type: 'html', + return (Array.isArray(templates) ? templates : [templates]).map( + Template => { + const props = { + ...data, + config: { + ...data.config, + baseurl: config ? config.options.baseurl : '', + }, + } + if ('type' in Template && Template.type === 'template') { + return { + content: Template.value(props), + type: Template.ext || 'html', + } + } + if ('type' in Template && Template.type === 'component') { + return { + content: ReactDOM.renderToStaticMarkup( + React.createElement(Template, props), + ), + type: Template.ext || 'html', + } + } + return { + content: ReactDOM.renderToStaticMarkup( + React.createElement(Template, props), + ), + type: 'html', + } }, - ] + ) } catch (e) { // temporary until I implement all templates if (e.code === 'MODULE_NOT_FOUND') return [] diff --git a/theme-source/templates/redirect.js b/theme-source/templates/redirect.js new file mode 100644 index 0000000000000000000000000000000000000000..64def24a9526336ea06aa9a59adacb047556979b --- /dev/null +++ b/theme-source/templates/redirect.js @@ -0,0 +1,30 @@ +export default [ + { + type: 'template', + ext: 'php', + value: ({ config, content }) => { + return `<?php +header("HTTP/1.1 301 Moved Permanently"); +header('location: ${config.baseurl}/${content}');` + }, + }, + { + type: 'template', + ext: 'html', + value: ({ config, content }) => `<!DOCTYPE HTML> + <html lang="en-US"> + <head> + <meta charset="UTF-8"> + <meta http-equiv="refresh" content="1;url=${config.baseurl}/${content}"> + <script type="text/javascript"> + window.location.href = "${config.baseurl}/${content}" + </script> + <title>PĹ™esmÄ›rovánĂ...</title> + </head> + <body> + Pokud nebudete pĹ™esmÄ›rováni automaticky tak následujte <a href='${config.baseurl}/${content}'>tento odkaz</a> + </body> + </html> + `, + }, +]