From 6bcfbfb25274c5b7e4056b2cdedc894daf3fbec1 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Nov 2026 18:02:51 +0800 Subject: [PATCH] feat(branding): default both site logos to assets/img/logo.png MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Point 站点 Logo / 暗色模式 Logo schema defaults (PHP + VUE) and the Settings::logo_url() fallback at assets/img/logo.png. - Point the footer night image default at the same file. - Remove logo_dark.png and the now-unreferenced assets/icons/default-logo.svg along with the private default_asset_url() helper that was its only reader. Co-Authored-By: Claude Opus 5 (1M context) --- assets/admin/src/schema/sections/global/logo.js | 9 +++++---- assets/icons/default-logo.svg | 9 --------- assets/img/logo_dark.png | Bin 2871 -> 0 bytes src/Admin/Schema/GlobalSchema.php | 4 ++-- src/Admin/Schema/SchemaPageDisplay.php | 2 +- src/Settings/AuthReader.php | 7 +------ .../widget-system/icon-picker-contract.test.cjs | 4 ++-- 7 files changed, 11 insertions(+), 24 deletions(-) delete mode 100644 assets/icons/default-logo.svg delete mode 100644 assets/img/logo_dark.png diff --git a/assets/admin/src/schema/sections/global/logo.js b/assets/admin/src/schema/sections/global/logo.js index 313138cf..16eb82dd 100644 --- a/assets/admin/src/schema/sections/global/logo.js +++ b/assets/admin/src/schema/sections/global/logo.js @@ -1,6 +1,7 @@ const themeRoot = typeof window !== 'undefined' && window.jioAdminData?.themeUri ? String(window.jioAdminData.themeUri).replace(/\/$/, '') : '' +const defaultLogo = themeRoot ? `${themeRoot}/assets/img/logo.png` : '' const defaultFavicon = themeRoot ? `${themeRoot}/assets/img/favicon.png` : '' export const logoSchema = { @@ -9,8 +10,8 @@ export const logoSchema = { icon: 'fa fas fa-image', description: '管理站点 Logo、站点图标和品牌标识。', defaults: { - site_logo: '', - site_logo_dark: '', + site_logo: defaultLogo, + site_logo_dark: defaultLogo, site_favicon: defaultFavicon, site_icon: defaultFavicon, logo_text: '', @@ -21,8 +22,8 @@ export const logoSchema = { title: 'Logo 设置', icon: 'fa fas fa-image', fields: [ - { key: 'site_logo', label: '站点 Logo', type: 'media', help: '建议尺寸 300x80,支持 PNG/SVG 透明背景' }, - { key: 'site_logo_dark', label: '暗色模式 Logo', type: 'media', help: '暗色模式下显示的 Logo,留空则使用默认 Logo' }, + { key: 'site_logo', label: '站点 Logo', type: 'media', default: defaultLogo, help: '建议尺寸 300x80,支持 PNG/SVG 透明背景' }, + { key: 'site_logo_dark', label: '暗色模式 Logo', type: 'media', default: defaultLogo, help: '暗色模式下显示的 Logo,留空则使用默认 Logo' }, { key: 'logo_text', label: 'Logo 文字', type: 'input', placeholder: '当无 Logo 图片时显示的文字', help: '同时作为首页标题和 alt 文本使用' }, ], }, diff --git a/assets/icons/default-logo.svg b/assets/icons/default-logo.svg deleted file mode 100644 index 1b938713..00000000 --- a/assets/icons/default-logo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - Jio - diff --git a/assets/img/logo_dark.png b/assets/img/logo_dark.png deleted file mode 100644 index 759dd1b3ca09ff786c435f8266b3663058cae5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2871 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 diff --git a/src/Admin/Schema/GlobalSchema.php b/src/Admin/Schema/GlobalSchema.php index 52a41290..4292f4c1 100644 --- a/src/Admin/Schema/GlobalSchema.php +++ b/src/Admin/Schema/GlobalSchema.php @@ -156,8 +156,8 @@ class GlobalSchema { 'option_key' => 'jio_settings', 'groups' => [ ['key' => 'logo', 'title' => 'Logo 设置', 'fields' => [ - ['key' => 'site_logo', 'label' => '站点 Logo', 'type' => 'media', 'default' => ''], - ['key' => 'site_logo_dark', 'label' => '暗色模式 Logo', 'type' => 'media', 'default' => ''], + ['key' => 'site_logo', 'label' => '站点 Logo', 'type' => 'media', 'default' => get_template_directory_uri() . '/assets/img/logo.png'], + ['key' => 'site_logo_dark', 'label' => '暗色模式 Logo', 'type' => 'media', 'default' => get_template_directory_uri() . '/assets/img/logo.png'], ['key' => 'logo_text', 'label' => 'Logo 文字', 'type' => 'input', 'default' => ''], ]], ['key' => 'favicon', 'title' => '站点图标', 'fields' => [ diff --git a/src/Admin/Schema/SchemaPageDisplay.php b/src/Admin/Schema/SchemaPageDisplay.php index 964b1529..32ff9bf0 100644 --- a/src/Admin/Schema/SchemaPageDisplay.php +++ b/src/Admin/Schema/SchemaPageDisplay.php @@ -83,7 +83,7 @@ class SchemaPageDisplay { self::field('fcode_template', '页脚布局模板选择', 'image_select', 'template_1', ['previewWidth' => 240, 'options' => [['label' => '模板一', 'value' => 'template_1', 'image' => self::asset('assets/images/footer/fcode_template_1.png')]]]), self::field('footer_t1_m_s', '版块一移动端显示', 'switcher', false), self::field('footer_t1_img', '日间模式图片', 'upload', $img . 'logo.png'), - self::field('footer_t1_img_dark', '夜间模式图片', 'upload', $img . 'logo_dark.png'), + self::field('footer_t1_img_dark', '夜间模式图片', 'upload', $img . 'logo.png'), self::field('footer_t1_t', '首行文字', 'text', ''), self::field('fcode_t1_code', '更多内容', 'textarea', 'Jio 主题专为博客、自媒体、资讯类的网站设计开发,简约优雅的设计风格,全面的前端用户功能,简单的模块化配置,欢迎您的体验', ['sanitize_type' => 'html', 'rows' => 3]), self::field('fcode_t2_code_1', '版块二第一行', 'textarea', '友链申请' . "\n" . '免责声明' . "\n" . '广告合作' . "\n" . '关于我们', ['sanitize_type' => 'html', 'rows' => 4]), diff --git a/src/Settings/AuthReader.php b/src/Settings/AuthReader.php index 837edd31..239c5a44 100644 --- a/src/Settings/AuthReader.php +++ b/src/Settings/AuthReader.php @@ -20,15 +20,10 @@ trait AuthReader { return !self::close_signup(); } - /** 主题内置默认图片 URL */ - private static function default_asset_url(string $filename): string { - return get_template_directory_uri() . '/assets/icons/' . $filename; - } - /** 获取 Logo URL(留空时使用内置默认) */ public static function logo_url(): string { $url = trim((string) self::get_value('site_logo', '')); - return $url !== '' ? $url : self::default_asset_url('default-logo.svg'); + return $url !== '' ? $url : get_template_directory_uri() . '/assets/img/logo.png'; } /** 获取暗色模式 Logo URL(留空时跟随浅色模式) */ diff --git a/tests/widget-system/icon-picker-contract.test.cjs b/tests/widget-system/icon-picker-contract.test.cjs index 625d4e43..22992334 100644 --- a/tests/widget-system/icon-picker-contract.test.cjs +++ b/tests/widget-system/icon-picker-contract.test.cjs @@ -164,10 +164,10 @@ test('brand icons render despite the legacy fa-fab double prefix', () => { }); test('icon assets are consolidated and dead icon assets are gone', () => { - for (const file of ['assets/icons/upload-add.svg', 'assets/icons/default-favicon.svg', 'assets/icons/default-logo.svg', 'assets/icons/playing.svg', 'assets/icons/user-certification.svg']) { + for (const file of ['assets/icons/upload-add.svg', 'assets/icons/default-favicon.svg', 'assets/icons/playing.svg', 'assets/icons/user-certification.svg']) { assert.ok(fs.existsSync(path.join(root, file)), `${file} exists`); } - for (const file of ['assets/img/upload-add.svg', 'assets/img/vip-1.svg', 'assets/img/vip-2.svg', 'assets/img/404.svg', 'assets/img/msg-system.svg', 'assets/fonts/img-code.ttf', 'assets/js/runtime/gutenberg-extend.js', 'assets/fontawesome5/webfonts/fa-solid-900.ttf']) { + for (const file of ['assets/img/upload-add.svg', 'assets/img/logo_dark.png', 'assets/icons/default-logo.svg', 'assets/img/vip-1.svg', 'assets/img/vip-2.svg', 'assets/img/404.svg', 'assets/img/msg-system.svg', 'assets/fonts/img-code.ttf', 'assets/js/runtime/gutenberg-extend.js', 'assets/fontawesome5/webfonts/fa-solid-900.ttf']) { assert.ok(!fs.existsSync(path.join(root, file)), `${file} removed`); } const mainCss = read('assets/css/main.css');