副标题允许为空:清空后前台不再回退显示默认文案
根因:setting() 把「空串」当成「从未配置」,于是后台删掉副标题后前台照样 显示默认的「个人网站导航」——删不掉。 改动: - config.php: setting() 改为「只有键不存在才回退 default」;空串是一等公民。 site_name() 改为唯一显式「空则回退 APP_NAME」的设置(页面不能没名字)。 - index.php: 副标题按空串读取(默认值取 ),hero 与 <title> 两处都判空; 空时不输出 <p>、不拼「·」分隔符。 - admin/index.php: 输入框回显不传默认文案(清空后不回弹),加 placeholder 与说明。
This commit is contained in:
+18
-4
@@ -65,10 +65,16 @@ function url(string $path = ''): string
|
||||
return app_base() . '/' . ltrim($path, '/');
|
||||
}
|
||||
|
||||
/** 站点名(可在后台设置里覆盖) */
|
||||
/** 站点名(可在后台设置里覆盖)
|
||||
*
|
||||
* ⚠️ 这是**唯一**允许「空则回退默认」的设置:站点名留空会让 <title> / <h1> / alt
|
||||
* 变成空白,页面连名字都没有。
|
||||
* 这里显式写出来,而不是指望 setting() 全局回退 —— 那正是「副标题删不掉」的病根。
|
||||
*/
|
||||
function site_name(): string
|
||||
{
|
||||
return setting('site_name', APP_NAME);
|
||||
$n = setting('site_name');
|
||||
return $n !== '' ? $n : APP_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,9 +108,17 @@ function settings_reload(): void
|
||||
settings_cache(true);
|
||||
}
|
||||
|
||||
/** 读取设置项 */
|
||||
/**
|
||||
* 读取设置项。
|
||||
*
|
||||
* ⚠️ 空串是一等公民:**只有「这一行不存在」才回退 $default**。
|
||||
* 曾经这里写的是 `$cache[$key] !== ''`,把「用户主动清空」和「从未配置过」当成一回事,
|
||||
* 于是后台删掉副标题后前台照样显示默认的「个人网站导航」——删不掉。
|
||||
* 需要「空则回退」的设置请在自己的读取点显式写明(如 site_name()),
|
||||
* 不要把这个语义塞回函数里。
|
||||
*/
|
||||
function setting(string $key, string $default = ''): string
|
||||
{
|
||||
$cache = settings_cache();
|
||||
return array_key_exists($key, $cache) && $cache[$key] !== '' ? $cache[$key] : $default;
|
||||
return array_key_exists($key, $cache) ? $cache[$key] : $default;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user