Z-Blog 主题设置页:main.php 与 Filter_Plugin_Admin_ThemeMng_SubMenu
摘要
主题想给用户留几个开关,不必写插件,主题本身就能带设置页。核心是两个文件一加一个钩子。第一步:在 include.php 挂菜单function theme_setting_menu(){ global $zbp; $zbp
主题想给用户留几个开关,不必写插件,主题本身就能带设置页。核心是两个文件一加一个钩子。
第一步:在 include.php 挂菜单
function theme_setting_menu(){
global $zbp;
$zbp->LoadLanguage('theme/你的主题');
$zbp->Add_Filter_Plugin('Filter_Plugin_Admin_ThemeMng_SubMenu', 'theme_setting_page');
}
function theme_setting_page(){
echo '<li><a href="?act=theme&id=你的主题">主题设置</a></li>';
}第二步:建 main.php 输出表单
<?php
require '../../../zb_system/function/c_system_base.php';
require '../../../zb_system/function/c_system_admin.php';
$zbp->Load();
if (!$zbp->CheckRights('ThemeMng')) { $zbp->ShowError(6); die(); }
if (isset($_POST['save'])) {
CheckIsRefererValid();
$zbp->Config('你的主题')->Set('show_banner', (int)$_POST['show_banner']);
$zbp->SaveConfig('你的主题');
$zbp->SetHint('保存成功');
Redirect($_SERVER['HTTP_REFERER']);
}
?>关键点
CheckRights('ThemeMng')不能省,否则任何登录用户都能改主题配置CheckIsRefererValid()防 CSRF,不加的话表单谁都能伪造提交SaveConfig('主题ID')的 ID 必须和目录名一致,写错不报错但值存不进
读取配置
模板里直接用 {$zbp->Config('你的主题')->show_banner},建议先在 include.php 里取出赋给模板变量,避免模板里反复调用。
2026年10月20日 14:59
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日