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();
}