fix(page-display): connect header component visibility settings
This commit is contained in:
@@ -50,8 +50,11 @@ final class PageConfigMetaBox {
|
||||
@media(max-width:782px){.aksrt-page-config-grid{grid-template-columns:1fr}.aksrt-page-config-wide{grid-column:auto}}
|
||||
</style>
|
||||
<div class="aksrt-page-config-grid">
|
||||
<label for="aksrt-header-slider-show"><?php esc_html_e('启用顶部多功能组件', 'aksrt'); ?></label>
|
||||
<div><label><input id="aksrt-header-slider-show" type="checkbox" name="page_config[header_slider_show]" value="1" <?php checked(!empty($config['header_slider_show'])); ?>> <?php esc_html_e('为当前页面使用独立配置', 'aksrt'); ?></label></div>
|
||||
<label for="aksrt-header-slider-show"><?php esc_html_e('独立配置顶部多功能组件', 'aksrt'); ?></label>
|
||||
<div>
|
||||
<label><input id="aksrt-header-slider-show" type="checkbox" name="page_config[header_slider_show]" value="1" <?php checked(!empty($config['header_slider_show'])); ?>> <?php esc_html_e('为当前页面使用独立内容和显示规则', 'aksrt'); ?></label>
|
||||
<p class="description"><?php esc_html_e('仅当主题设置的“顶部多功能组件”已勾选当前页面所属类型时生效;此处不能单独启用组件。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
|
||||
<label><?php esc_html_e('显示规则', 'aksrt'); ?></label>
|
||||
<div>
|
||||
|
||||
@@ -54,7 +54,6 @@ class SchemaPageDisplay {
|
||||
self::field('nav_newposts_radius', '按钮圆角', 'switcher', true, ['dependsOn' => self::enabled('nav_newposts')]),
|
||||
self::field('nav_newposts_class', '按钮颜色', 'palette', 'jb-blue', ['dependsOn' => self::enabled('nav_newposts'), 'options' => self::zib_palette()]),
|
||||
self::field('nav_newposts_text', '按钮文案', 'textarea', '<i class="fa fa-fw fa-pencil"></i>发布', ['dependsOn' => self::enabled('nav_newposts'), 'sanitize_type' => 'html', 'rows' => 1]),
|
||||
self::field('nav_newposts_btns', '需显示的按钮', 'async_select', ['post'], ['dependsOn' => self::enabled('nav_newposts'), 'multiple' => true, 'sortable' => true, 'source' => 'publish-types', 'options' => self::options(['post' => '文章'])]),
|
||||
self::field('nav_user_newposts_btn', '导航栏用户卡片发布按钮', 'select', 'post', ['options' => self::options(['post' => '文章'])]),
|
||||
self::field('nav_user_newposts_btn_text', '按钮文字', 'text', '发布文章'),
|
||||
]);
|
||||
@@ -63,16 +62,16 @@ class SchemaPageDisplay {
|
||||
private static function header_components(): array {
|
||||
return self::section('header-components', '顶部多功能组件', [
|
||||
self::notice('顶部多功能组件显示在导航栏下方,支持视频、图片、幻灯片、搜索和图标卡片;各组件可按电脑端、移动端单独启用。'),
|
||||
self::field('header_slider_show', '启用顶部多功能组件', 'checkbox', [], ['options' => self::options(['home' => '首页', 'category' => '分类页', 'tag' => '标签页', 'author' => '用户页', 'single' => '文章页', 'search' => '搜索页', 'page' => '其它页面'])]),
|
||||
self::field('header_slider_show', '启用顶部多功能组件', 'checkbox', [], ['description' => '选择允许显示组件的页面;未选择任何页面时,前端不会显示。', 'options' => self::options(['home' => '首页', 'category' => '分类页', 'tag' => '标签页', 'author' => '公开用户主页', 'user_center' => '用户中心', 'single' => '文章页', 'search' => '搜索页', 'page' => '其它页面'])]),
|
||||
self::field('header_slider_show_type', '顶部多功能组件的显示规则', 'radio', '', ['dependsOn' => self::not_empty('header_slider_show'), 'inline' => true, 'options' => self::options(['' => '全部显示', 'only_pc' => '仅在PC端显示', 'only_sm' => '仅在移动端显示'])]),
|
||||
self::field('header_slider_nav_color', '导航栏文字颜色', 'color', '#ffffff', ['dependsOn' => self::not_empty('header_slider_show')]),
|
||||
self::field('header_slider', '背景内容', 'group', self::header_slider_defaults(), ['dependsOn' => self::not_empty('header_slider_show'), 'min' => 1, 'button_title' => '添加背景项目', 'fields' => self::slider_item_fields()]),
|
||||
self::field('header_slider_option', '背景显示设置', 'fieldset', self::slider_options_defaults(), ['dependsOn' => self::not_empty('header_slider_show'), 'fields' => self::slider_option_fields()]),
|
||||
self::field('header_slider_search_s', '叠加搜索组件', 'checkbox', ['pc_s', 'm_s'], ['options' => self::device_options()]),
|
||||
self::field('header_slider_search_option', '搜索组件设置', 'fieldset', self::search_defaults(), ['dependsOn' => self::not_empty('header_slider_search_s'), 'fields' => self::search_fields()]),
|
||||
self::field('header_slider_card_s', '叠加封面卡片组件', 'checkbox', ['pc_s', 'm_s'], ['options' => self::device_options()]),
|
||||
self::field('header_slider_card_option', '图标卡片设置', 'fieldset', self::card_defaults(), ['dependsOn' => self::not_empty('header_slider_card_s'), 'fields' => self::card_fields()]),
|
||||
self::field('header_slider_filter_blur', '组件高斯模糊特效', 'checkbox', ['pc_s', 'm_s'], ['options' => self::options(['pc_s' => 'PC端开启', 'm_s' => '移动端开启'])]),
|
||||
self::field('header_slider_search_s', '叠加搜索组件', 'checkbox', ['pc_s', 'm_s'], ['dependsOn' => self::not_empty('header_slider_show'), 'options' => self::device_options()]),
|
||||
self::field('header_slider_search_option', '搜索组件设置', 'fieldset', self::search_defaults(), ['dependsOn' => ['all' => [self::not_empty('header_slider_show'), self::not_empty('header_slider_search_s')]], 'fields' => self::search_fields()]),
|
||||
self::field('header_slider_card_s', '叠加封面卡片组件', 'checkbox', ['pc_s', 'm_s'], ['dependsOn' => self::not_empty('header_slider_show'), 'options' => self::device_options()]),
|
||||
self::field('header_slider_card_option', '图标卡片设置', 'fieldset', self::card_defaults(), ['dependsOn' => ['all' => [self::not_empty('header_slider_show'), self::not_empty('header_slider_card_s')]], 'fields' => self::card_fields()]),
|
||||
self::field('header_slider_filter_blur', '组件高斯模糊特效', 'checkbox', ['pc_s', 'm_s'], ['dependsOn' => self::not_empty('header_slider_show'), 'options' => self::options(['pc_s' => 'PC端开启', 'm_s' => '移动端开启'])]),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,13 +56,18 @@ trait DisplayPageGroups {
|
||||
'category',
|
||||
'tag',
|
||||
'author',
|
||||
'user_center',
|
||||
'single',
|
||||
'search',
|
||||
'page',
|
||||
];
|
||||
$show_on = isset($s['header_slider_show']) ? (array) $s['header_slider_show'] : [];
|
||||
$show_on = array_map(static function ($type): string {
|
||||
$type = sanitize_key((string) $type);
|
||||
return $type === 'user_home' ? 'author' : $type;
|
||||
}, $show_on);
|
||||
$show_on = array_values(array_intersect(
|
||||
array_map('sanitize_key', $show_on),
|
||||
$show_on,
|
||||
$allowed_page_types
|
||||
));
|
||||
$show_type = $s['header_slider_show_type'] ?? '';
|
||||
|
||||
Reference in New Issue
Block a user