Hexo Landscape主题修改header.ejs后占位符未解析问题咨询
问题分析与解决思路
Hexo完全支持EJS模板的占位符解析,出现这种情况不是Hexo的问题,大概率是你修改模板的方式有误,常见原因和解决方法如下:
模板语法使用错误:EJS有不同的标签用途,要输出Front Matter里的变量,必须用
<%= 变量名 %>标签,比如你想调用文章Front Matter里的banner变量,得写<%= page.banner %>。如果直接写占位符文本,或者用了<% %>(仅执行逻辑不输出内容),Hexo就不会解析,直接把代码原样输出到HTML里。变量调用路径错误:Front Matter里的变量属于
page对象,必须加上page.前缀才能访问。比如你的Markdown文件Front Matter写的是banner: "/images/my-banner.jpg",模板里就得写成<%= page.banner %>,漏加前缀会导致变量未定义,占位符无法替换。Hexo缓存未清理:修改模板后,Hexo可能还在使用旧的缓存文件生成页面。执行
hexo clean命令清除缓存,再重新执行hexo generate生成静态文件,就能加载最新的模板修改。修改的文件路径错误:确认你修改的是当前激活的Landscape主题下的文件,也就是
themes/landscape/layout/partial/header.ejs,如果误改了其他主题的文件,自然不会生效。
内容的提问来源于stack exchange,提问作者eng-nashar
相关产品推荐
相关产品推荐

