Merge pull request 'fix(admin): close hero/banner config chain in page-display IA' (#111) from worktree-hero-banner-chain into main
Reviewed-on: CYL/wordpress-theme-aksrt#111
This commit is contained in:
commit
32c213c9a1
8 files changed
+52
-17
No files matched your search
@@ -42,10 +42,32 @@ export const pageDisplaySection = {
|
|||||||
label: '顶部多功能组件',
|
label: '顶部多功能组件',
|
||||||
route: '/page-display/header-components',
|
route: '/page-display/header-components',
|
||||||
title: '顶部多功能组件',
|
title: '顶部多功能组件',
|
||||||
desc: '顶部轮播、图标卡片、搜索条、公告条等组件配置。',
|
desc: '配置顶部组件显示范围、轮播参数、搜索覆盖层与图标卡片。幻灯片内容见「Hero 轮播」「Banner 轮播」。',
|
||||||
canonicalDomain: 'page_display',
|
canonicalDomain: 'page_display',
|
||||||
section: 'header-components',
|
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({
|
customPage({
|
||||||
key: 'page-display-footer',
|
key: 'page-display-footer',
|
||||||
name: 'PageDisplayFooter',
|
name: 'PageDisplayFooter',
|
||||||
|
|||||||
@@ -181,8 +181,15 @@
|
|||||||
Hero 与 Banner 已作为固定首页骨架的一部分维护,不再由旧版首页模块编排驱动。
|
Hero 与 Banner 已作为固定首页骨架的一部分维护,不再由旧版首页模块编排驱动。
|
||||||
</n-alert>
|
</n-alert>
|
||||||
<n-alert type="info" :show-icon="false">
|
<n-alert type="info" :show-icon="false">
|
||||||
如需调整首页首屏运营区,请前往对应 Hero / Banner 管理页,而不是返回旧模块工作台。
|
如需调整首页首屏运营区,请前往对应管理页配置幻灯片内容或顶部组件参数。
|
||||||
</n-alert>
|
</n-alert>
|
||||||
|
<n-space>
|
||||||
|
<n-button tag="a" href="#/page-display/hero" secondary type="primary">管理 Hero 轮播</n-button>
|
||||||
|
<n-button tag="a" href="#/page-display/banner" secondary type="primary">管理 Banner 轮播</n-button>
|
||||||
|
<n-button tag="a" href="#/page-display/header-components" secondary>
|
||||||
|
顶部多功能组件
|
||||||
|
</n-button>
|
||||||
|
</n-space>
|
||||||
</n-space>
|
</n-space>
|
||||||
</n-card>
|
</n-card>
|
||||||
</n-spin>
|
</n-spin>
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ export const corePageLoaders = {
|
|||||||
FooterTabbarSettings: () => import('@/pages/content/FooterTabbarSettings.vue'),
|
FooterTabbarSettings: () => import('@/pages/content/FooterTabbarSettings.vue'),
|
||||||
FooterSettings: () => import('@/pages/content/FooterSettings.vue'),
|
FooterSettings: () => import('@/pages/content/FooterSettings.vue'),
|
||||||
HomepageSettings: () => import('@/pages/content/HomepageSettings.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'),
|
PostPageSettings: () => import('@/pages/post-list/PostPageSettings.vue'),
|
||||||
CommentSettings: () => import('@/pages/post-list/CommentSettings.vue'),
|
CommentSettings: () => import('@/pages/post-list/CommentSettings.vue'),
|
||||||
CommentPermissions: () => import('@/pages/permissions/CommentPermissions.vue'),
|
CommentPermissions: () => import('@/pages/permissions/CommentPermissions.vue'),
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ export const pageDisplaySchemas = {
|
|||||||
key: 'page_display.header-components',
|
key: 'page_display.header-components',
|
||||||
title: '顶部多功能组件',
|
title: '顶部多功能组件',
|
||||||
icon: 'fas fa-th',
|
icon: 'fas fa-th',
|
||||||
description: '顶部轮播、图标卡片、搜索条、公告条等组件配置。',
|
description: '配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。',
|
||||||
defaults: {
|
defaults: {
|
||||||
header_components_search_enabled: true,
|
header_components_search_enabled: true,
|
||||||
header_components_cards_enabled: false,
|
header_components_cards_enabled: false,
|
||||||
|
|||||||
@@ -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',
|
'device_visibility' => get_post_meta($post->ID, '_device_visibility', true) ?: 'all',
|
||||||
'enabled' => get_post_meta($post->ID, '_enabled', true) === '1',
|
'enabled' => get_post_meta($post->ID, '_enabled', true) === '1',
|
||||||
'show_text' => get_post_meta($post->ID, '_show_text', true) !== '0',
|
'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',
|
'kind' => get_post_meta($post->ID, '_aksrt_kind', true) ?: 'hero',
|
||||||
'sort_order' => $post->menu_order,
|
'sort_order' => $post->menu_order,
|
||||||
'text_size_pc' => get_post_meta($post->ID, '_text_size_pc', true) ?: '',
|
'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, '_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, '_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_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, '_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_pc', sanitize_text_field($params['text_size_pc'] ?? ''));
|
||||||
update_post_meta($post_id, '_text_size_m', sanitize_text_field($params['text_size_m'] ?? ''));
|
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');
|
$kind = $this->normalize_banner_kind($params['kind'] ?? get_post_meta($id, '_aksrt_kind', true) ?: 'hero');
|
||||||
$title = sanitize_text_field($params['title'] ?? '');
|
$title = sanitize_text_field($params['title'] ?? '');
|
||||||
if ($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([
|
wp_update_post([
|
||||||
|
|||||||
@@ -67,11 +67,12 @@ class AKSRT_Admin_Schema_Page_Display {
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
'header-components' => [
|
'header-components' => [
|
||||||
'key' => 'header-components',
|
'key' => 'header-components',
|
||||||
'title' => '顶部多功能组件',
|
'title' => '顶部多功能组件',
|
||||||
'version' => '1.1.0',
|
'description' => '配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。',
|
||||||
'option_key' => 'aksrt_settings',
|
'version' => '1.1.0',
|
||||||
'groups' => [
|
'option_key' => 'aksrt_settings',
|
||||||
|
'groups' => [
|
||||||
['key' => 'visibility', 'title' => '显示规则', 'fields' => [
|
['key' => 'visibility', 'title' => '显示规则', 'fields' => [
|
||||||
['key' => 'header_components_search_enabled', 'label' => '启用搜索覆盖层', 'type' => 'switch', 'default' => true],
|
['key' => 'header_components_search_enabled', 'label' => '启用搜索覆盖层', 'type' => 'switch', 'default' => true],
|
||||||
['key' => 'header_components_cards_enabled', 'label' => '启用图标卡片', 'type' => 'switch', 'default' => false],
|
['key' => 'header_components_cards_enabled', 'label' => '启用图标卡片', 'type' => 'switch', 'default' => false],
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ if (empty($banners)) {
|
|||||||
echo '<p class="muted-2-color">' . esc_html__('No Banner slides found. Add banner slides in admin.', 'aksrt') . '</p>';
|
echo '<p class="muted-2-color">' . esc_html__('No Banner slides found. Add banner slides in admin.', 'aksrt') . '</p>';
|
||||||
if (function_exists('aksrt_render_admin_quick_link')) {
|
if (function_exists('aksrt_render_admin_quick_link')) {
|
||||||
echo '<div class="home-module__admin-tools">';
|
echo '<div class="home-module__admin-tools">';
|
||||||
aksrt_render_admin_quick_link('page-display/header-components', __('Header / Banner settings', 'aksrt'));
|
aksrt_render_admin_quick_link('page-display/banner', __('Banner 轮播管理', 'aksrt'));
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -110,7 +110,7 @@ $swiper_config = [
|
|||||||
</div>
|
</div>
|
||||||
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
||||||
<div class="home-module__admin-tools">
|
<div class="home-module__admin-tools">
|
||||||
<?php aksrt_render_admin_quick_link('page-display/header-components', __('顶部组件设置', 'aksrt')); ?>
|
<?php aksrt_render_admin_quick_link('page-display/banner', __('Banner 轮播管理', 'aksrt')); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@@ -296,7 +296,8 @@ if (!empty($hero_banners)) :
|
|||||||
<?php $render_icon_cards(); ?>
|
<?php $render_icon_cards(); ?>
|
||||||
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
||||||
<div class="home-module__admin-tools">
|
<div class="home-module__admin-tools">
|
||||||
<?php aksrt_render_admin_quick_link('page-display/header-components', __('顶部组件设置', 'aksrt')); ?>
|
<?php aksrt_render_admin_quick_link('page-display/hero', __('Hero 轮播管理', 'aksrt')); ?>
|
||||||
|
<?php aksrt_render_admin_quick_link('page-display/header-components', __('顶部多功能组件', 'aksrt')); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@@ -304,7 +305,6 @@ if (!empty($hero_banners)) :
|
|||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<?php
|
<?php
|
||||||
$is_admin_user = current_user_can('manage_options');
|
$is_admin_user = current_user_can('manage_options');
|
||||||
$hero_admin_url = admin_url('admin.php?page=aksrt-settings#/content/hero');
|
|
||||||
?>
|
?>
|
||||||
<div class="<?php echo esc_attr(implode(' ', $container_classes)); ?>" id="aksrt-header-components">
|
<div class="<?php echo esc_attr(implode(' ', $container_classes)); ?>" id="aksrt-header-components">
|
||||||
<div class="header-components slide-header header-components--gradient">
|
<div class="header-components slide-header header-components--gradient">
|
||||||
@@ -314,9 +314,6 @@ if (!empty($hero_banners)) :
|
|||||||
<?php if ($is_admin_user) : ?>
|
<?php if ($is_admin_user) : ?>
|
||||||
<p class="header-components__admin-hint" role="note">
|
<p class="header-components__admin-hint" role="note">
|
||||||
<?php esc_html_e('No Hero slides found. Showing fallback site info.', 'aksrt'); ?>
|
<?php esc_html_e('No Hero slides found. Showing fallback site info.', 'aksrt'); ?>
|
||||||
<a class="header-components__admin-link" href="<?php echo esc_url($hero_admin_url); ?>">
|
|
||||||
<?php esc_html_e('Go to Content -> Hero Components', 'aksrt'); ?>
|
|
||||||
</a>
|
|
||||||
</p>
|
</p>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@@ -329,7 +326,8 @@ if (!empty($hero_banners)) :
|
|||||||
<?php $render_icon_cards(); ?>
|
<?php $render_icon_cards(); ?>
|
||||||
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
<?php if (function_exists('aksrt_render_admin_quick_link')) : ?>
|
||||||
<div class="home-module__admin-tools">
|
<div class="home-module__admin-tools">
|
||||||
<?php aksrt_render_admin_quick_link('page-display/header-components', __('顶部组件设置', 'aksrt')); ?>
|
<?php aksrt_render_admin_quick_link('page-display/hero', __('Hero 轮播管理', 'aksrt')); ?>
|
||||||
|
<?php aksrt_render_admin_quick_link('page-display/header-components', __('顶部多功能组件', 'aksrt')); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user