给 Z-Blog 主题加一个设置页:Config 存值 + 后台菜单挂载

· zblog · 阅读 16
摘要

主题做完了,总有些东西该让用户自己调。首页显示几篇、要不要开侧栏、页脚写什么。硬编码能跑,但不能交付。值存哪存 Config。主题的 Config 和插件的一样,挂在模块 ID 下面,后台一保存就写进数据库。读取用 $zbp->Config

主题做完了,总有些东西该让用户自己调。首页显示几篇、要不要开侧栏、页脚写什么。

硬编码能跑,但不能交付。

值存哪

存 Config。主题的 Config 和插件的一样,挂在模块 ID 下面,后台一保存就写进数据库。

读取用 $zbp->Config('framehome')->xxx。模块 ID 就是主题 ID。

这里有个细节。没设置过的字段读出来是 null,不是空字符串。用之前判断一下类型。

后台菜单从哪进

主题设置页的入口在主题管理里。挂载靠 Filter_Plugin_Admin_ThemeMng_SubMenu 这个钩子。

钩子回调里往数组塞一个元素,就多一个标签页。数组里要写标题、链接、以及这个设置页的模板文件名。

模板放主题目录下的 include 里,加载时用相对路径。

表单提交走哪

后台设置页的提交不是自己写接口。Z-Blog 有现成的表单处理流程,把处理函数挂在对应的保存钩子上,拿 POST 值、写 Config、SaveConfig,三步。

记住一定要 SaveConfig。只改对象不保存,刷新就没了。

一个容易忽略的点

设置页里的字段名和 Config 字段名要对上。我见过有人表单写 show_count,读取时写的 showcount,页面一直显示默认值,查了两小时。

字段名统一用小写下划线,别混驼峰。

做完验收三件事

改一个值,保存,刷新设置页,值还在。

前台页面按新值渲染。

清缓存后依然生效。

三个都过,才算真的存进去了。少一个都是假成功。