迅睿模板改了不生效,我花了半天才想起缓存这回事

· 迅睿CMS · 阅读 8
摘要

改 template/default/home/index.html,保存,刷新——页面还是老的。清浏览器缓存、换手机开,一样。那一刻我甚至怀疑是不是 FTP 传错目录了。 其实是模板编译缓存没清。 迅睿的模板是编译过的 它不像某些 CMS

改 template/default/home/index.html,保存,刷新——页面还是老的。清浏览器缓存、换手机开,一样。那一刻我甚至怀疑是不是 FTP 传错目录了。

其实是模板编译缓存没清。

迅睿的模板是编译过的

它不像某些 CMS 那样每次都读原始 html,而是把模板编译成 PHP 再执行,编译结果落在 cache/ 目录里。所以你改的是源文件,跑的是旧 PHP。

最省事的做法是后台右上角那个「更新缓存」,点一下基本能解决。命令行环境下我一般直接删目录:

# 站点根目录执行,别删漏了也别多删
rm -rf cache/template/
rm -rf cache/data/

具体子目录名我记不太准,可能是 cache/views 也可能是 cache/template,跟你装的版本有关。不确定就先 ls cache/ 看一眼,肉眼认得出的那个就是,别硬背我的命令。

另一种情况:你改的是子站点模板

迅睿支持多站点,每个站点可以绑自己的模板目录。这事儿我刚接手时完全没概念,改了半天主站模板,发现生效的是另一个目录。

后台「站点管理」里能看到每个站点对应的模板路径,注意 template/<站点模板目录>/ 这一层。同一套模板复制给不同站点用,是很常见的部署方式,也最容易改错。

标签写错了不会报错,只会输出空

这点比缓存更烦。比如:

{dr_cat(1)}

如果 1 这个分类不存在,它不会给你一个醒目的红色报错,页面上就是空着。你得回头看 HTML 源码里那个位置是不是啥都没有。

调试时我习惯在标签旁边加一句固定文本:

测试点A:{dr_cat(1)}

刷新后能看到「测试点A:」但后面没东西,说明标签执行了但取不到数据;连「测试点A」都看不到,说明你改的这个模板压根没被加载——又回到前面缓存或者模板目录的问题上了。

这招土,但管用。比在后台瞎点强。