diff --git a/assets/admin/src/constants/sections/page-display.js b/assets/admin/src/constants/sections/page-display.js index 3af1c64d..7bb773ce 100644 --- a/assets/admin/src/constants/sections/page-display.js +++ b/assets/admin/src/constants/sections/page-display.js @@ -42,10 +42,32 @@ export const pageDisplaySection = { label: '顶部多功能组件', route: '/page-display/header-components', title: '顶部多功能组件', - desc: '顶部轮播、图标卡片、搜索条、公告条等组件配置。', + desc: '配置顶部组件显示范围、轮播参数、搜索覆盖层与图标卡片。幻灯片内容见「Hero 轮播」「Banner 轮播」。', canonicalDomain: 'page_display', section: 'header-components', }), + customPage({ + key: 'page-display-hero', + name: 'PageDisplayHero', + label: 'Hero 轮播', + route: '/page-display/hero', + title: 'Hero 轮播管理', + desc: '管理首页顶部 Hero 幻灯片内容(图片/视频、文案、图层、跳转)。显示开关与搜索/卡片配置见「顶部多功能组件」。', + component: 'HeroManager', + canonicalDomain: 'page_display', + section: 'hero', + }), + customPage({ + key: 'page-display-banner', + name: 'PageDisplayBanner', + label: 'Banner 轮播', + route: '/page-display/banner', + title: 'Banner 管理', + desc: '管理首页内容流 Banner 幻灯片(图片、文案、跳转、启用状态)。', + component: 'BannerManager', + canonicalDomain: 'page_display', + section: 'banner', + }), customPage({ key: 'page-display-footer', name: 'PageDisplayFooter', diff --git a/assets/admin/src/pages/content/HomepageSettings.vue b/assets/admin/src/pages/content/HomepageSettings.vue index c48eb08d..a7550625 100644 --- a/assets/admin/src/pages/content/HomepageSettings.vue +++ b/assets/admin/src/pages/content/HomepageSettings.vue @@ -181,8 +181,15 @@ Hero 与 Banner 已作为固定首页骨架的一部分维护,不再由旧版首页模块编排驱动。 - 如需调整首页首屏运营区,请前往对应 Hero / Banner 管理页,而不是返回旧模块工作台。 + 如需调整首页首屏运营区,请前往对应管理页配置幻灯片内容或顶部组件参数。 + + 管理 Hero 轮播 + 管理 Banner 轮播 + + 顶部多功能组件 + + diff --git a/assets/admin/src/router/component-loaders/core.js b/assets/admin/src/router/component-loaders/core.js index 5d52c129..e35b5325 100644 --- a/assets/admin/src/router/component-loaders/core.js +++ b/assets/admin/src/router/component-loaders/core.js @@ -5,6 +5,8 @@ export const corePageLoaders = { FooterTabbarSettings: () => import('@/pages/content/FooterTabbarSettings.vue'), FooterSettings: () => import('@/pages/content/FooterSettings.vue'), HomepageSettings: () => import('@/pages/content/HomepageSettings.vue'), + HeroManager: () => import('@/pages/content/HeroManager.vue'), + BannerManager: () => import('@/pages/content/BannerManager.vue'), PostPageSettings: () => import('@/pages/post-list/PostPageSettings.vue'), CommentSettings: () => import('@/pages/post-list/CommentSettings.vue'), CommentPermissions: () => import('@/pages/permissions/CommentPermissions.vue'), diff --git a/assets/admin/src/schema/sections/page-display/index.js b/assets/admin/src/schema/sections/page-display/index.js index a56257e4..a3bd4835 100644 --- a/assets/admin/src/schema/sections/page-display/index.js +++ b/assets/admin/src/schema/sections/page-display/index.js @@ -589,7 +589,7 @@ export const pageDisplaySchemas = { key: 'page_display.header-components', title: '顶部多功能组件', icon: 'fas fa-th', - description: '顶部轮播、图标卡片、搜索条、公告条等组件配置。', + description: '配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。', defaults: { header_components_search_enabled: true, header_components_cards_enabled: false, diff --git a/inc/classes/admin/class-aksrt-admin-page-display-controller.php b/inc/classes/admin/class-aksrt-admin-page-display-controller.php index 93031211..21de6c6d 100644 --- a/inc/classes/admin/class-aksrt-admin-page-display-controller.php +++ b/inc/classes/admin/class-aksrt-admin-page-display-controller.php @@ -96,6 +96,7 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base { 'device_visibility' => get_post_meta($post->ID, '_device_visibility', true) ?: 'all', 'enabled' => get_post_meta($post->ID, '_enabled', true) === '1', 'show_text' => get_post_meta($post->ID, '_show_text', true) !== '0', + 'show_meta' => get_post_meta($post->ID, '_show_meta', true) === '1', 'kind' => get_post_meta($post->ID, '_aksrt_kind', true) ?: 'hero', 'sort_order' => $post->menu_order, 'text_size_pc' => get_post_meta($post->ID, '_text_size_pc', true) ?: '', @@ -132,6 +133,7 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base { update_post_meta($post_id, '_device_visibility', in_array($params['device_visibility'] ?? '', ['all', 'pc', 'mobile'], true) ? $params['device_visibility'] : 'all'); update_post_meta($post_id, '_enabled', !array_key_exists('enabled', $params) || !empty($params['enabled']) ? '1' : '0'); update_post_meta($post_id, '_show_text', !array_key_exists('show_text', $params) || !empty($params['show_text']) ? '1' : '0'); + update_post_meta($post_id, '_show_meta', !empty($params['show_meta']) ? '1' : '0'); update_post_meta($post_id, '_aksrt_kind', $kind); update_post_meta($post_id, '_text_size_pc', sanitize_text_field($params['text_size_pc'] ?? '')); update_post_meta($post_id, '_text_size_m', sanitize_text_field($params['text_size_m'] ?? '')); @@ -158,7 +160,10 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base { $kind = $this->normalize_banner_kind($params['kind'] ?? get_post_meta($id, '_aksrt_kind', true) ?: 'hero'); $title = sanitize_text_field($params['title'] ?? ''); if ($title === '') { - return new WP_REST_Response(['code' => 'validation_error', 'message' => __('标题不能为空', 'aksrt')], 422); + $existing = get_the_title($id); + $title = is_string($existing) && $existing !== '' + ? $existing + : ('banner' === $kind ? 'Banner Slide' : 'Hero Slide'); } wp_update_post([ diff --git a/inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php b/inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php index 155deb6b..62b78355 100644 --- a/inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php +++ b/inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php @@ -67,11 +67,12 @@ class AKSRT_Admin_Schema_Page_Display { ], ], 'header-components' => [ - 'key' => 'header-components', - 'title' => '顶部多功能组件', - 'version' => '1.1.0', - 'option_key' => 'aksrt_settings', - 'groups' => [ + 'key' => 'header-components', + 'title' => '顶部多功能组件', + 'description' => '配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。', + 'version' => '1.1.0', + 'option_key' => 'aksrt_settings', + 'groups' => [ ['key' => 'visibility', 'title' => '显示规则', 'fields' => [ ['key' => 'header_components_search_enabled', 'label' => '启用搜索覆盖层', 'type' => 'switch', 'default' => true], ['key' => 'header_components_cards_enabled', 'label' => '启用图标卡片', 'type' => 'switch', 'default' => false], diff --git a/templates/parts/home-modules/module-banner.php b/templates/parts/home-modules/module-banner.php index 1f0d1727..cf7d3068 100644 --- a/templates/parts/home-modules/module-banner.php +++ b/templates/parts/home-modules/module-banner.php @@ -27,7 +27,7 @@ if (empty($banners)) { echo '

' . esc_html__('No Banner slides found. Add banner slides in admin.', 'aksrt') . '

'; if (function_exists('aksrt_render_admin_quick_link')) { echo '
'; - aksrt_render_admin_quick_link('page-display/header-components', __('Header / Banner settings', 'aksrt')); + aksrt_render_admin_quick_link('page-display/banner', __('Banner 轮播管理', 'aksrt')); echo '
'; } echo ''; @@ -110,7 +110,7 @@ $swiper_config = [
- +
diff --git a/templates/parts/home-modules/module-hero.php b/templates/parts/home-modules/module-hero.php index 823c172b..49fb9165 100644 --- a/templates/parts/home-modules/module-hero.php +++ b/templates/parts/home-modules/module-hero.php @@ -296,7 +296,8 @@ if (!empty($hero_banners)) :
- + +
@@ -304,7 +305,6 @@ if (!empty($hero_banners)) :
@@ -314,9 +314,6 @@ if (!empty($hero_banners)) :

- - Hero Components', 'aksrt'); ?> -

@@ -329,7 +326,8 @@ if (!empty($hero_banners)) :
- + +