From 06589a1955884dd60129720a6757d528e19f9d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Sko=C5=99epov=C3=A1?= <isabella@skorepova.info> Date: Tue, 7 Jan 2020 20:18:51 +0100 Subject: [PATCH] Working redirect --- sitegin/templates.js | 45 ++++++++++++++++++++---------- theme-source/templates/redirect.js | 30 ++++++++++++++++++++ 2 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 theme-source/templates/redirect.js diff --git a/sitegin/templates.js b/sitegin/templates.js index 564ccba6..584c5811 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 00000000..64def24a --- /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> + `, + }, +] -- GitLab