From 33b8f27d45619c4cb03423cd77d30fe8566a7e18 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Fri, 8 Mar 2024 01:47:25 -0500 Subject: Add support for substitution in title and certain meta tags. --- generator/postrenderer.js | 16 ++++++++++++++++ templates/list_template | 36 ++---------------------------------- templates/post_template | 40 +++++----------------------------------- 3 files changed, 23 insertions(+), 69 deletions(-) diff --git a/generator/postrenderer.js b/generator/postrenderer.js index 80991a0..cc29b08 100644 --- a/generator/postrenderer.js +++ b/generator/postrenderer.js @@ -148,6 +148,14 @@ function _style_to_header(doc) for (let s of styles) head.appendChild(s); } +function htmlescape(s) +{ + return s.replace(//g, ">") + .replace(/&/g, "&") + .replace(/"/g, """) + .replace(/'/g, "'"); +} async function _render(inf,outf,np,pp) { const postcont=fs.readFileSync(inf,'utf8'); @@ -192,6 +200,14 @@ async function _render(inf,outf,np,pp) else trd.getElementById('article').innerHTML=contsplit.join('\n'); + //title and meta description + const titlee = trd.querySelector('title'); + titlee.innerHTML = titlee.innerHTML.replace( + /%t/, htmlescape(meta[0].trim()) + ); + const metade = trd.querySelector('meta[name="description"]'); + metade.setAttribute('content', metade.getAttribute('content').replace(/%t/, meta[0].trim())); + //async images trd.getElementById('article').querySelectorAll('img').forEach( (i)=>{if(!i.getAttribute('decoding'))i.setAttribute('decoding','async');} diff --git a/templates/list_template b/templates/list_template index 033dfbd..453a951 100644 --- a/templates/list_template +++ b/templates/list_template @@ -6,6 +6,7 @@ Chrisoft::Blog + @@ -27,41 +28,8 @@ function ol() else unsetevents(); } window.onresize(); + loadTheme(); } -function loadTheme(){ - var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"); - if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz'; - var ent=""; - var d=new Date(); - if(thm[0]=='z') - { - var m=d.getMonth()+1; - if(m>=3&&m<6)thm='0'+thm[1]; - else if(m>=6&&m<9)thm='1'+thm[1]; - else if(m>=9&&m<12)thm='2'+thm[1]; - else thm='3'+thm[1]; - } - if(thm[1]=='z') - {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';} - ent=`theme${thm}`; - var R=new RegExp('theme[0-4][ab]'); - for(var i=0;i diff --git a/templates/post_template b/templates/post_template index 10a93fa..caa87b5 100644 --- a/templates/post_template +++ b/templates/post_template @@ -4,8 +4,11 @@ -Chrisoft::Blog +Chrisoft::Blog(r#"%t") + + + @@ -32,42 +35,9 @@ function ol() else unsetevents(); } window.onresize(); + loadTheme(); _decryptonload(); } -function loadTheme(){ - var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"); - if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz'; - var ent=""; - var d=new Date(); - if(thm[0]=='z') - { - var m=d.getMonth()+1; - if(m>=3&&m<6)thm='0'+thm[1]; - else if(m>=6&&m<9)thm='1'+thm[1]; - else if(m>=9&&m<12)thm='2'+thm[1]; - else thm='3'+thm[1]; - } - if(thm[1]=='z') - {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';} - ent=`theme${thm}`; - var R=new RegExp('theme[0-4][ab]'); - for(var i=0;i -- cgit v1.2.3