Merge pull request 'Schema 收口第五轮:补齐 page_display 的 homepage / float-btn 契约' (#15) from worktree-zibll-streams-cdj into main
Reviewed-on: CYL/wordpress-theme-aksrt#15
This commit is contained in:
@@ -55,14 +55,25 @@ export const pageDisplaySection = {
|
||||
desc: '页脚布局、友链、版权信息配置。',
|
||||
component: 'FooterSettings',
|
||||
}),
|
||||
customPage({
|
||||
schemaPage({
|
||||
key: 'page-display-homepage',
|
||||
name: 'PageDisplayHomepage',
|
||||
label: '首页配置',
|
||||
route: '/page-display/homepage',
|
||||
title: '首页配置',
|
||||
desc: '首页模块、布局、推荐位配置。',
|
||||
component: 'HomepageSettings',
|
||||
desc: '首页内容模型、主列表、分类 Tab 与首页交互配置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'homepage',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-float-btn',
|
||||
name: 'PageDisplayFloatBtn',
|
||||
label: '悬浮按钮',
|
||||
route: '/page-display/float-btn',
|
||||
title: '悬浮按钮',
|
||||
desc: '悬浮按钮的显示规则、样式与滚动隐藏设置。',
|
||||
canonicalDomain: 'page_display',
|
||||
section: 'float-btn',
|
||||
}),
|
||||
schemaPage({
|
||||
key: 'page-display-category',
|
||||
|
||||
@@ -21,7 +21,7 @@ export const pageDisplaySchemas = {
|
||||
header_nav_style: 'default',
|
||||
header_max_width: 1200,
|
||||
header_scroll_down_hide: false,
|
||||
header_layout: '2',
|
||||
header_layout: '1',
|
||||
mobile_header_layout: 'center',
|
||||
mobile_navbar_align: 'left',
|
||||
header_newposts_enabled: true,
|
||||
@@ -731,8 +731,73 @@ export const pageDisplaySchemas = {
|
||||
},
|
||||
|
||||
/**
|
||||
* Footer settings (already has a real Vue page)
|
||||
* Floating button settings
|
||||
*/
|
||||
'float-btn': {
|
||||
key: 'page_display.float-btn',
|
||||
title: '悬浮按钮',
|
||||
icon: 'fas fa-circle-chevron-up',
|
||||
description: '配置页面悬浮按钮的显示规则、样式和滚动隐藏行为。',
|
||||
defaults: {
|
||||
float_btn_style: 'round',
|
||||
float_btn_position: 'bottom',
|
||||
float_btn_scroll_hide: false,
|
||||
float_btn_scroll_down_hide: true,
|
||||
float_btn_max: 5,
|
||||
float_btn_size: 44,
|
||||
float_btn_spacing: 10,
|
||||
float_btn_shadow: true,
|
||||
float_btn_animation: true,
|
||||
float_btn_opacity: 100,
|
||||
float_btn_active_color: '',
|
||||
float_btn_bg_color: '',
|
||||
float_btn_pc_s: true,
|
||||
float_btn_m_s: true,
|
||||
float_btn_filter_css: '',
|
||||
},
|
||||
groups: [
|
||||
{
|
||||
key: 'basic',
|
||||
title: '悬浮按钮设置',
|
||||
icon: 'fas fa-circle-notch',
|
||||
fields: [
|
||||
{
|
||||
key: 'float_btn_style',
|
||||
label: '按钮风格',
|
||||
type: 'radio',
|
||||
default: 'round',
|
||||
options: [
|
||||
{ label: '圆形', value: 'round' },
|
||||
{ label: '方形', value: 'square' },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'float_btn_position',
|
||||
label: '按钮位置',
|
||||
type: 'radio',
|
||||
default: 'bottom',
|
||||
options: [
|
||||
{ label: '底部', value: 'bottom' },
|
||||
{ label: '居中', value: 'center' },
|
||||
],
|
||||
},
|
||||
{ key: 'float_btn_scroll_hide', label: '滚动时隐藏', type: 'switch', default: false },
|
||||
{ key: 'float_btn_scroll_down_hide', label: '下滑时隐藏', type: 'switch', default: true },
|
||||
{ key: 'float_btn_max', label: '最大显示数', type: 'number', default: 5, min: 1, max: 10 },
|
||||
{ key: 'float_btn_size', label: '按钮尺寸', type: 'number', default: 44, min: 32, max: 64 },
|
||||
{ key: 'float_btn_spacing', label: '按钮间距', type: 'number', default: 10, min: 4, max: 24 },
|
||||
{ key: 'float_btn_shadow', label: '显示阴影', type: 'switch', default: true },
|
||||
{ key: 'float_btn_animation', label: '悬停动画', type: 'switch', default: true },
|
||||
{ key: 'float_btn_opacity', label: '按钮透明度', type: 'number', default: 100, min: 30, max: 100 },
|
||||
{ key: 'float_btn_active_color', label: '激活颜色', type: 'color', default: '' },
|
||||
{ key: 'float_btn_bg_color', label: '背景颜色', type: 'color', default: '' },
|
||||
{ key: 'float_btn_pc_s', label: 'PC端显示', type: 'switch', default: true },
|
||||
{ key: 'float_btn_m_s', label: '移动端显示', type: 'switch', default: true },
|
||||
{ key: 'float_btn_filter_css', label: '过滤 CSS', type: 'textarea', default: '' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
key: 'page_display.footer',
|
||||
title: '底部页脚',
|
||||
@@ -852,9 +917,113 @@ export const pageDisplaySchemas = {
|
||||
key: 'page_display.homepage',
|
||||
title: '首页配置',
|
||||
icon: 'fas fa-home',
|
||||
description: '首页模块、布局、推荐位配置。',
|
||||
defaults: {},
|
||||
groups: [],
|
||||
description: '配置首页内容模型、主列表、分类 Tab、卡片样式与首页交互。实际编辑界面在 HomepageSettings.vue(customPage),此处补齐 page_display 的 schema 契约。',
|
||||
defaults: {
|
||||
homepage_content_model: 'mixed',
|
||||
homepage_tabs: [],
|
||||
homepage_card_style: 'default',
|
||||
homepage_multi_thumb_enabled: true,
|
||||
homepage_multi_thumb_min_images: 3,
|
||||
homepage_sidebar_mini_enabled: true,
|
||||
homepage_default_sort: 'modified',
|
||||
homepage_default_view: 'list',
|
||||
homepage_sort_ajax_enabled: true,
|
||||
homepage_sticky_tabs_enabled: true,
|
||||
home_posts_list_enabled: true,
|
||||
home_list_title: '最新发布',
|
||||
home_list_sort_enabled: true,
|
||||
home_list_sort_options: ['modified', 'date', 'views', 'likes', 'comments'],
|
||||
home_list_sort_dropdown: false,
|
||||
home_exclude_post_ids: [],
|
||||
home_exclude_category_ids: [],
|
||||
homepage_tab_posts_per_page: 6,
|
||||
homepage_tab_limit: 4,
|
||||
},
|
||||
groups: [
|
||||
{
|
||||
key: 'content-model',
|
||||
title: '内容模型',
|
||||
icon: 'fas fa-stream',
|
||||
fields: [
|
||||
{
|
||||
key: 'homepage_content_model',
|
||||
label: '首页内容模型',
|
||||
type: 'radio',
|
||||
default: 'mixed',
|
||||
options: [
|
||||
{ label: '混合模式', value: 'mixed' },
|
||||
{ label: '纯文章', value: 'post' },
|
||||
],
|
||||
help: '混合模式显示文章 + 资源,纯文章模式仅显示标准文章。',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'main-stream',
|
||||
title: '主列表',
|
||||
icon: 'fas fa-list',
|
||||
fields: [
|
||||
{ key: 'home_posts_list_enabled', label: '启用主列表', type: 'switch', default: true },
|
||||
{ key: 'home_list_title', label: '区块标题', type: 'input', default: '最新发布', dependsOn: { key: 'home_posts_list_enabled', value: true } },
|
||||
{ key: 'homepage_default_sort', label: '默认排序', type: 'select', default: 'modified', dependsOn: { key: 'home_posts_list_enabled', value: true }, options: sortOptions },
|
||||
{ key: 'home_list_sort_enabled', label: '启用排序栏', type: 'switch', default: true, dependsOn: { key: 'home_posts_list_enabled', value: true } },
|
||||
{ key: 'home_list_sort_dropdown', label: '排序栏下拉模式', type: 'switch', default: false, dependsOn: { key: 'home_list_sort_enabled', value: true } },
|
||||
{ key: 'home_list_sort_options', label: '可用排序选项', type: 'checkbox', default: ['modified', 'date', 'views', 'likes', 'comments'], dependsOn: { key: 'home_list_sort_enabled', value: true }, options: sortOptions },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'exclude',
|
||||
title: '排除规则',
|
||||
icon: 'fas fa-filter',
|
||||
fields: [
|
||||
{ key: 'home_exclude_post_ids', label: '排除文章 ID', type: 'array', default: [], help: '主列表和 Tab 查询均排除这些文章。' },
|
||||
{ key: 'home_exclude_category_ids', label: '排除分类 ID', type: 'array', default: [], help: '主列表排除这些分类。' },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'tabs',
|
||||
title: '首页 Tab',
|
||||
icon: 'fas fa-tags',
|
||||
fields: [
|
||||
{ key: 'homepage_tabs', label: '首页 Tab', type: 'array', default: [], help: '分类 Tab 由 HomepageSettings.vue 中的可视化编辑器维护。' },
|
||||
{ key: 'homepage_tab_limit', label: 'Tab 数量上限', type: 'number', default: 4, min: 1, max: 12 },
|
||||
{ key: 'homepage_tab_posts_per_page', label: '每 Tab 文章数', type: 'number', default: 6, min: 1, max: 20 },
|
||||
{ key: 'homepage_sticky_tabs_enabled', label: 'Tab 吸顶', type: 'switch', default: true },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'cards-sidebar',
|
||||
title: '卡片与侧栏',
|
||||
icon: 'fas fa-columns',
|
||||
fields: [
|
||||
{
|
||||
key: 'homepage_card_style',
|
||||
label: '卡片风格',
|
||||
type: 'radio',
|
||||
default: 'default',
|
||||
options: [
|
||||
{ label: '默认', value: 'default' },
|
||||
{ label: '风格 2', value: 'style2' },
|
||||
{ label: '风格 3', value: 'style3' },
|
||||
],
|
||||
},
|
||||
{ key: 'homepage_multi_thumb_enabled', label: '多图卡片', type: 'switch', default: true },
|
||||
{ key: 'homepage_multi_thumb_min_images', label: '最少图片数', type: 'number', default: 3, min: 2, max: 4, dependsOn: { key: 'homepage_multi_thumb_enabled', value: true } },
|
||||
{
|
||||
key: 'homepage_default_view',
|
||||
label: '默认视图',
|
||||
type: 'radio',
|
||||
default: 'list',
|
||||
options: [
|
||||
{ label: '列表', value: 'list' },
|
||||
{ label: '卡片', value: 'card' },
|
||||
],
|
||||
},
|
||||
{ key: 'homepage_sidebar_mini_enabled', label: '迷你侧栏列表', type: 'switch', default: true },
|
||||
{ key: 'homepage_sort_ajax_enabled', label: '排序栏 AJAX', type: 'switch', default: true },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -49,7 +49,7 @@ class AKSRT_Admin_Schema_Page_Display {
|
||||
['key' => 'header_theme_color_custom', 'label' => '自定义文字颜色', 'type' => 'color', 'default' => ''],
|
||||
]],
|
||||
['key' => 'layout-type', 'title' => '布局类型', 'fields' => [
|
||||
['key' => 'header_layout', 'label' => '桌面端布局', 'type' => 'radio', 'default' => '2', 'options' => [
|
||||
['key' => 'header_layout', 'label' => '桌面端布局', 'type' => 'radio', 'default' => '1', 'options' => [
|
||||
['label' => '布局 1(经典)', 'value' => '1'],
|
||||
['label' => '布局 2(内联搜索)', 'value' => '2'],
|
||||
['label' => '布局 3(紧凑)', 'value' => '3'],
|
||||
@@ -95,16 +95,16 @@ class AKSRT_Admin_Schema_Page_Display {
|
||||
['key' => 'header_components_nav_color', 'label' => '导航栏文字颜色', 'type' => 'color', 'default' => '#ffffff'],
|
||||
]],
|
||||
['key' => 'slider-config', 'title' => '幻灯片配置', 'fields' => [
|
||||
['key' => 'slider_config_direction', 'label' => '滑动方向', 'type' => 'radio', 'default' => 'horizontal', 'options' => [
|
||||
['key' => 'slider_config_direction', 'label' => '滑动方向', 'type' => 'radio', 'default' => 'horizontal', 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []], 'options' => [
|
||||
['label' => '水平', 'value' => 'horizontal'],
|
||||
['label' => '垂直', 'value' => 'vertical'],
|
||||
]],
|
||||
['key' => 'slider_config_speed', 'label' => '切换速度(ms)', 'type' => 'number', 'default' => 300, 'min' => 100, 'max' => 3000],
|
||||
['key' => 'slider_config_button', 'label' => '显示前进后退按钮', 'type' => 'switch', 'default' => true],
|
||||
['key' => 'slider_config_scale_height', 'label' => '缩放高度', 'type' => 'switch', 'default' => false],
|
||||
['key' => 'slider_config_scale', 'label' => '缩放效果', 'type' => 'switch', 'default' => false],
|
||||
['key' => 'slider_config_max_height', 'label' => '最大高度', 'type' => 'input', 'default' => ''],
|
||||
['key' => 'slider_config_min_height', 'label' => '最小高度', 'type' => 'input', 'default' => ''],
|
||||
['key' => 'slider_config_speed', 'label' => '切换速度(ms)', 'type' => 'number', 'default' => 300, 'min' => 100, 'max' => 3000, 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
['key' => 'slider_config_button', 'label' => '显示前进后退按钮', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
['key' => 'slider_config_scale_height', 'label' => '缩放高度', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
['key' => 'slider_config_scale', 'label' => '缩放效果', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
['key' => 'slider_config_max_height', 'label' => '最大高度', 'type' => 'input', 'default' => '', 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
['key' => 'slider_config_min_height', 'label' => '最小高度', 'type' => 'input', 'default' => '', 'dependsOn' => ['key' => 'header_components_show_on', 'not' => []]],
|
||||
]],
|
||||
['key' => 'search', 'title' => '搜索组件', 'fields' => [
|
||||
['key' => 'header_components_search_pc', 'label' => 'PC 端显示搜索', 'type' => 'switch', 'default' => true],
|
||||
|
||||
Reference in New Issue
Block a user