diff --git a/assets/admin/src/schema/sections/global/logo.js b/assets/admin/src/schema/sections/global/logo.js index 384e9a44..6c42307b 100644 --- a/assets/admin/src/schema/sections/global/logo.js +++ b/assets/admin/src/schema/sections/global/logo.js @@ -1,3 +1,8 @@ +const themeRoot = typeof window !== 'undefined' && window.jioAdminData?.themeUri + ? String(window.jioAdminData.themeUri).replace(/\/$/, '') + : '' +const defaultFavicon = themeRoot ? `${themeRoot}/assets/img/favicon.png` : '' + export const logoSchema = { key: 'global.logo', title: 'LOGO & 品牌', @@ -6,8 +11,8 @@ export const logoSchema = { defaults: { site_logo: '', site_logo_dark: '', - site_favicon: '', - site_icon: '', + site_favicon: defaultFavicon, + site_icon: defaultFavicon, logo_width: 150, logo_text: '', }, @@ -28,8 +33,8 @@ export const logoSchema = { title: '站点图标', icon: 'fa fas fa-id-badge', fields: [ - { key: 'site_favicon', label: '浏览器图标 (Favicon)', type: 'media', help: '建议 32x32 或 16x16 的 ICO/PNG 文件' }, - { key: 'site_icon', label: '移动端图标', type: 'media', help: '建议 192x192 的 PNG,用于移动端添加到桌面' }, + { key: 'site_favicon', label: '浏览器图标 (Favicon)', type: 'media', default: defaultFavicon, help: '建议 32x32 或 16x16 的 ICO/PNG 文件' }, + { key: 'site_icon', label: '移动端图标', type: 'media', default: defaultFavicon, help: '建议 192x192 的 PNG,用于移动端添加到桌面' }, ], }, ], diff --git a/assets/img/favicon.png b/assets/img/favicon.png new file mode 100644 index 00000000..f8d856a6 Binary files /dev/null and b/assets/img/favicon.png differ diff --git a/src/Admin/Schema/GlobalSchema.php b/src/Admin/Schema/GlobalSchema.php index 5220880f..5cd1a7d8 100644 --- a/src/Admin/Schema/GlobalSchema.php +++ b/src/Admin/Schema/GlobalSchema.php @@ -162,8 +162,8 @@ class GlobalSchema { ['key' => 'logo_text', 'label' => 'Logo 文字', 'type' => 'input', 'default' => ''], ]], ['key' => 'favicon', 'title' => '站点图标', 'fields' => [ - ['key' => 'site_favicon', 'label' => '浏览器图标', 'type' => 'media', 'default' => ''], - ['key' => 'site_icon', 'label' => '移动端图标', 'type' => 'media', 'default' => ''], + ['key' => 'site_favicon', 'label' => '浏览器图标', 'type' => 'media', 'default' => get_template_directory_uri() . '/assets/img/favicon.png'], + ['key' => 'site_icon', 'label' => '移动端图标', 'type' => 'media', 'default' => get_template_directory_uri() . '/assets/img/favicon.png'], ]], ], ], diff --git a/src/Core/SEOHead.php b/src/Core/SEOHead.php index c0cb8162..345b17f6 100644 --- a/src/Core/SEOHead.php +++ b/src/Core/SEOHead.php @@ -236,11 +236,17 @@ class SEOHead { echo "\n\n"; - // Favicon(无站点图标时回退)。 + // Favicon(无站点图标时回退);移动端图标走 apple-touch-icon。 if (function_exists('jio_get_favicon_url')) { $favicon = (string) jio_get_favicon_url(); if ($favicon !== '' && !has_site_icon()) { printf('' . "\n", esc_url($favicon)); + if (class_exists('\Jio\Settings\Settings')) { + $mobile_icon = \Jio\Settings\Settings::mobile_icon_url(); + if ($mobile_icon !== '') { + printf('' . "\n", esc_url($mobile_icon)); + } + } } } diff --git a/src/Settings/FacadeBulk.php b/src/Settings/FacadeBulk.php index 3b3fb9f2..110c6649 100644 --- a/src/Settings/FacadeBulk.php +++ b/src/Settings/FacadeBulk.php @@ -222,7 +222,15 @@ trait FacadeBulk { } $site_icon = get_site_icon_url(512); - return $site_icon ? (string) $site_icon : self::default_asset_url('default-favicon.svg'); + return $site_icon ? (string) $site_icon : get_template_directory_uri() . '/assets/img/favicon.png'; + } + + + + /** 移动端添加到桌面的图标 URL(留空时跟随浏览器图标) */ + public static function mobile_icon_url(): string { + $custom = trim((string) self::get_value('site_icon', '')); + return $custom !== '' ? $custom : self::favicon_url(); }