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)) :