diff --git a/assets/admin/src/schema/sections/page-display/index.js b/assets/admin/src/schema/sections/page-display/index.js
index d8a4b7f6..c7e317e4 100644
--- a/assets/admin/src/schema/sections/page-display/index.js
+++ b/assets/admin/src/schema/sections/page-display/index.js
@@ -629,16 +629,18 @@ export const pageDisplaySchemas = {
header_components_nav_color: '#ffffff',
header_components_show_on: ['home'],
header_components_device_visibility: '',
- header_components_filter_blur_devices: [],
+ header_components_filter_blur_devices: ['pc', 'mobile'],
header_components_card_show_devices: ['pc', 'mobile'],
header_components_card_shared_bg: false,
- header_components_card_blur: true,
header_components_card_icon_shape: 'circle',
header_components_icon_cards: [],
header_components_search_pc: true,
header_components_search_mobile: true,
- header_components_search_show_keywords: false,
- header_components_search_popular_limit: 5,
+ header_components_search_show_keywords: true,
+ header_components_search_popular_limit: 6,
+ header_components_search_in_cat: '',
+ header_components_search_in_type: 'post',
+ header_components_search_more_cats: [],
header_components_search_show_input_cat: false,
header_components_search_show_type: false,
header_components_search_before_html: '
更优雅的Wordpress主题
\n这是导航栏幻灯片多功能组件,可在后台进行配置
',
@@ -711,10 +713,18 @@ export const pageDisplaySchemas = {
fields: [
{ key: 'header_components_search_pc', label: 'PC 端显示搜索', type: 'switch', default: true, dependsOn: { key: 'header_components_search_enabled', value: true } },
{ key: 'header_components_search_mobile', label: '移动端显示搜索', type: 'switch', default: true, dependsOn: { key: 'header_components_search_enabled', value: true } },
- { key: 'header_components_search_show_keywords', label: '显示热门搜索词', type: 'switch', default: false, dependsOn: { key: 'header_components_search_enabled', value: true } },
- { key: 'header_components_search_popular_limit', label: '热词数量', type: 'number', default: 5, min: 1, max: 20, dependsOn: { key: 'header_components_search_show_keywords', value: true } },
- { key: 'header_components_search_show_input_cat', label: '显示分类搜索', type: 'switch', default: false, dependsOn: { key: 'header_components_search_enabled', value: true }, help: '搜索框内显示分类选择下拉' },
- { key: 'header_components_search_show_type', label: '显示类型切换', type: 'switch', default: false, dependsOn: { key: 'header_components_search_enabled', value: true }, help: '搜索框内显示内容类型切换' },
+ { key: 'header_components_search_show_keywords', label: '热门搜索', type: 'switch', default: true, dependsOn: { key: 'header_components_search_enabled', value: true }, help: '显示网站热门搜索关键词(移动端不会显示)' },
+ { key: 'header_components_search_popular_limit', label: '关键词最多显示', type: 'number', default: 6, min: 2, max: 50, dependsOn: { key: 'header_components_search_show_keywords', value: true } },
+ { key: 'header_components_search_show_input_cat', label: '分类搜索', type: 'switch', default: false, dependsOn: { key: 'header_components_search_enabled', value: true }, help: '显示分类搜索选择' },
+ { key: 'header_components_search_in_cat', label: '默认搜索的分类', type: 'input', default: '', dependsOn: { key: 'header_components_search_show_input_cat', value: true }, help: '分类 ID,可留空' },
+ { key: 'header_components_search_show_type', label: '显示类型选择', type: 'switch', default: false, dependsOn: { key: 'header_components_search_enabled', value: true }, help: '显示切换搜索类型的按钮(文章、用户、版块、帖子、商品)' },
+ { key: 'header_components_search_in_type', label: '默认搜索类型', type: 'radio', default: 'post', dependsOn: { key: 'header_components_search_show_type', value: true }, options: [
+ { label: '文章', value: 'post' },
+ { label: '用户', value: 'user' },
+ { label: '商品', value: 'product' },
+ { label: '帖子', value: 'forum' },
+ { label: '版块', value: 'plate' },
+ ]},
{
key: 'header_components_search_before_html',
label: '搜索上方额外内容',
@@ -740,20 +750,19 @@ export const pageDisplaySchemas = {
title: '图标卡片样式',
icon: 'fas fa-th-large',
fields: [
- { key: 'header_components_filter_blur_devices', label: '容器模糊设备', type: 'checkbox', default: [], dependsOn: { key: 'header_components_cards_enabled', value: true }, options: [
- { label: 'PC', value: 'pc' },
- { label: '移动端', value: 'mobile' },
- ]},
+ { key: 'header_components_filter_blur_devices', label: '组件高斯模糊特效', type: 'checkbox', default: ['pc', 'mobile'], options: [
+ { label: 'PC端开启', value: 'pc' },
+ { label: '移动端开启', value: 'mobile' },
+ ], help: '搜索组件和卡片组件背景显示高斯模糊特效(较耗性能)' },
{ key: 'header_components_card_show_devices', label: '卡片显示设备', type: 'checkbox', default: ['pc', 'mobile'], dependsOn: { key: 'header_components_cards_enabled', value: true }, options: [
- { label: 'PC', value: 'pc' },
- { label: '移动端', value: 'mobile' },
+ { label: 'PC端显示', value: 'pc' },
+ { label: '移动端显示', value: 'mobile' },
]},
- { key: 'header_components_card_shared_bg', label: '共享卡片背景', type: 'switch', default: false, dependsOn: { key: 'header_components_cards_enabled', value: true }, help: '开启后所有图标卡片共用背景模式' },
- { key: 'header_components_card_blur', label: '启用卡片模糊效果', type: 'switch', default: true, dependsOn: { key: 'header_components_cards_enabled', value: true } },
- { key: 'header_components_card_icon_shape', label: '图标形状', type: 'radio', default: 'circle', dependsOn: { key: 'header_components_cards_enabled', value: true }, options: [
+ { key: 'header_components_card_shared_bg', label: '模块背景', type: 'switch', default: false, dependsOn: { key: 'header_components_cards_enabled', value: true }, help: '整个模块显示背景;关闭后每个卡片各自显示背景(zibll show_widget_bg)' },
+ { key: 'header_components_card_icon_shape', label: '方形图标', type: 'radio', default: 'circle', dependsOn: { key: 'header_components_cards_enabled', value: true }, options: [
{ label: '圆形', value: 'circle' },
{ label: '方形', value: 'square' },
- ]},
+ ], help: '图标显示为正方形,而不是圆形(zibll icon_radius4)' },
],
},
{
@@ -781,23 +790,30 @@ export const pageDisplaySchemas = {
dependsOn: { key: 'header_components_cards_enabled', value: true },
addText: '添加卡片',
fields: [
- { key: 'icon', label: '图标类名', type: 'input', default: 'fas fa-star', placeholder: 'fas fa-star' },
- { key: 'custom_icon', label: '自定义图标 HTML', type: 'textarea', default: '', rows: 2, placeholder: '' },
- { key: 'icon_class', label: '图标配色', type: 'select', default: 'c-blue', options: [
- { label: 'Blue', value: 'c-blue' },
+ { key: 'title', label: '文案标题', type: 'textarea', default: '', rows: 1, help: '第一行文案,字体稍大;支持 HTML(如 badge)' },
+ { key: 'desc', label: '文案简介', type: 'textarea', default: '', rows: 2, help: '第二行文案,字体稍小;支持 HTML' },
+ { key: 'icon', label: '选择图标', type: 'input', default: 'fa fa-magic', placeholder: 'fa fa-magic / fas fa-star' },
+ { key: 'custom_icon', label: '自定义图标', type: 'textarea', default: '', rows: 1, placeholder: '自定义图标 HTML 代码', help: '如使用非自带图标,可输入自定义图标代码' },
+ { key: 'icon_class', label: '图标颜色', type: 'select', default: 'c-yellow', options: [
{ label: 'Yellow', value: 'c-yellow' },
+ { label: 'Blue', value: 'c-blue' },
+ { label: 'Blue-2', value: 'c-blue-2' },
{ label: 'Green', value: 'c-green' },
{ label: 'Red', value: 'c-red' },
- { label: 'Orange', value: 'c-orange' },
+ { label: 'Red-2', value: 'c-red-2' },
{ label: 'Cyan', value: 'c-cyan' },
{ label: 'Pink', value: 'c-pink' },
+ { label: 'Purple', value: 'c-purple' },
+ { label: 'Gray', value: 'c-gray' },
+ { label: 'Gradient Pink', value: 'jb-pink' },
+ { label: 'Gradient Yellow', value: 'jb-yellow' },
+ { label: 'Gradient Blue', value: 'jb-blue' },
{ label: 'Gradient Cyan', value: 'jb-cyan' },
{ label: 'Gradient Green', value: 'jb-green' },
+ { label: 'Gradient Purple', value: 'jb-purple' },
{ label: 'Gradient Orange', value: 'jb-orange' },
]},
- { key: 'title', label: '标题', type: 'input', default: '' },
- { key: 'desc', label: '描述', type: 'input', default: '' },
- { key: 'url', label: '链接 URL', type: 'input', default: '', placeholder: 'https://example.com' },
+ { key: 'url', label: '跳转链接', type: 'input', default: '', placeholder: 'https://example.com' },
{ key: 'target', label: '打开方式', type: 'radio', default: '_self', options: [
{ label: '当前标签页', value: '_self' },
{ label: '新标签页', value: '_blank' },
diff --git a/assets/css/frontend/header-components/search-keywords-row.css b/assets/css/frontend/header-components/search-keywords-row.css
index 9cdae06a..efa82549 100644
--- a/assets/css/frontend/header-components/search-keywords-row.css
+++ b/assets/css/frontend/header-components/search-keywords-row.css
@@ -10,30 +10,52 @@
text-align: center;
}
+/* zibll: .header-slider-search .search_keywords, .header-slider-search .search-type-but-average .but */
.header-components-search__kw-tag,
-.header-slider-search .search_keywords {
+.header-slider-search .search_keywords,
+.header-slider-search .search-keywords .but,
+.header-slider-search .search-type-but-average .but {
+ --this-bg: rgba(255, 255, 255, 0.8);
+ --this-color: #888;
display: inline-block;
padding: 3px 5px;
font-size: 0.85em;
line-height: 1.4;
border-radius: 100px;
- background: rgba(255, 255, 255, 0.8);
- color: #888;
+ background: var(--this-bg);
+ color: var(--this-color);
text-decoration: none;
transition: background 0.2s;
}
+.header-slider-search .search-type-but-average .but.active {
+ --this-bg: var(--focus-color, var(--color-primary));
+ --this-color: #fff;
+}
+
.filter-blur .header-slider-search .search_keywords,
+.filter-blur .header-slider-search .search-keywords .but,
+.filter-blur .header-slider-search .search-type-but-average .but,
.filter-blur .header-components-search__kw-tag {
-webkit-backdrop-filter: saturate(5) blur(20px);
backdrop-filter: saturate(5) blur(20px);
}
.header-components-search__kw-tag:hover,
-.header-slider-search .search_keywords:hover {
+.header-slider-search .search_keywords:hover,
+.header-slider-search .search-keywords .but:hover {
background: rgba(255, 255, 255, 0.95);
}
+/* Hide default keywords title row inside hero overlay (zibll header search has no title line). */
+.header-slider-search .search-keywords > p {
+ display: none;
+}
+
+.header-slider-search .search-keywords {
+ text-align: center;
+}
+
/* zibll mobile (max-width: 767px) search / card offsets */
@media (max-width: 767px) {
.header-components {
diff --git a/assets/css/frontend/header-components/widget-device-visibility.css b/assets/css/frontend/header-components/widget-device-visibility.css
index b7030989..9c2e7b41 100644
--- a/assets/css/frontend/header-components/widget-device-visibility.css
+++ b/assets/css/frontend/header-components/widget-device-visibility.css
@@ -335,3 +335,14 @@
color: rgba(255, 255, 255, 0.85);
text-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
}
+
+
+/* zibll: header-slider-search .search-input-text .line-form-line { display:none } */
+.header-slider-search .search-input-text .line-form-line,
+.header-components-search .search-input-text .line-form-line {
+ display: none;
+}
+
+.header-slider-search .search-type-but-average {
+ margin-bottom: 2em;
+}
diff --git a/inc/helpers/search/aksrt-search-box.php b/inc/helpers/search/aksrt-search-box.php
index df44706e..b86ea6db 100644
--- a/inc/helpers/search/aksrt-search-box.php
+++ b/inc/helpers/search/aksrt-search-box.php
@@ -48,7 +48,7 @@ if (!function_exists('aksrt_get_search_keywords_but')) :
if ($kw === '') {
continue;
}
- $out .= ''
. esc_html($kw) . ' ';
}
diff --git a/src/AKSRT/Admin/Schema/SchemaPageDisplay.php b/src/AKSRT/Admin/Schema/SchemaPageDisplay.php
index d1544a02..0e324064 100644
--- a/src/AKSRT/Admin/Schema/SchemaPageDisplay.php
+++ b/src/AKSRT/Admin/Schema/SchemaPageDisplay.php
@@ -127,8 +127,8 @@ class SchemaPageDisplay {
['key' => 'search', 'title' => '搜索组件', 'fields' => [
['key' => 'header_components_search_pc', 'label' => 'PC 端显示搜索', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
['key' => 'header_components_search_mobile', 'label' => '移动端显示搜索', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
- ['key' => 'header_components_search_show_keywords', 'label' => '显示热门搜索词', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
- ['key' => 'header_components_search_popular_limit', 'label' => '热词数量', 'type' => 'number', 'default' => 5, 'min' => 1, 'max' => 20, 'dependsOn' => ['key' => 'header_components_search_show_keywords', 'value' => true]],
+ ['key' => 'header_components_search_show_keywords', 'label' => '热门搜索', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
+ ['key' => 'header_components_search_popular_limit', 'label' => '关键词最多显示', 'type' => 'number', 'default' => 6, 'min' => 2, 'max' => 50, 'dependsOn' => ['key' => 'header_components_search_show_keywords', 'value' => true]],
['key' => 'header_components_search_show_input_cat', 'label' => '显示分类搜索', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
['key' => 'header_components_search_show_type', 'label' => '显示类型切换', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_search_enabled', 'value' => true]],
[
@@ -152,7 +152,7 @@ class SchemaPageDisplay {
],
]],
['key' => 'cards', 'title' => '图标卡片样式', 'fields' => [
- ['key' => 'header_components_filter_blur_devices', 'label' => '容器模糊设备', 'type' => 'checkbox', 'default' => [], 'dependsOn' => ['key' => 'header_components_cards_enabled', 'value' => true], 'options' => [
+ ['key' => 'header_components_filter_blur_devices', 'label' => '组件高斯模糊特效', 'type' => 'checkbox', 'default' => ['pc', 'mobile'], 'options' => [
['label' => 'PC', 'value' => 'pc'],
['label' => '移动端', 'value' => 'mobile'],
]],
@@ -161,7 +161,6 @@ class SchemaPageDisplay {
['label' => '移动端', 'value' => 'mobile'],
]],
['key' => 'header_components_card_shared_bg', 'label' => '共享卡片背景', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'header_components_cards_enabled', 'value' => true]],
- ['key' => 'header_components_card_blur', 'label' => '启用卡片模糊效果', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'header_components_cards_enabled', 'value' => true]],
['key' => 'header_components_card_icon_shape', 'label' => '图标形状', 'type' => 'radio', 'default' => 'circle', 'dependsOn' => ['key' => 'header_components_cards_enabled', 'value' => true], 'options' => [
['label' => '圆形', 'value' => 'circle'],
['label' => '方形', 'value' => 'square'],
diff --git a/src/AKSRT/Settings/DisplayRuntime.php b/src/AKSRT/Settings/DisplayRuntime.php
index 4596dda6..ea4e545a 100644
--- a/src/AKSRT/Settings/DisplayRuntime.php
+++ b/src/AKSRT/Settings/DisplayRuntime.php
@@ -79,36 +79,76 @@ class DisplayRuntime {
$show = $is_mobile ? $mobile_on : $pc_on;
$show_kw = !empty($settings['header_components_search_show_keywords']);
- $kw_limit = max(1, min(20, (int) ($settings['header_components_search_popular_limit'] ?? 5)));
+ $kw_limit = max(1, min(50, (int) ($settings['header_components_search_popular_limit'] ?? 6)));
$show_cat = !empty($settings['header_components_search_show_input_cat']);
$show_type = !empty($settings['header_components_search_show_type']);
+ $in_cat = sanitize_text_field((string) ($settings['header_components_search_in_cat'] ?? ''));
+ $in_type = sanitize_key((string) ($settings['header_components_search_in_type'] ?? 'post')) ?: 'post';
+ $more_cats = isset($settings['header_components_search_more_cats'])
+ ? array_values(array_filter(array_map('absint', (array) $settings['header_components_search_more_cats'])))
+ : [];
- // Mobile: hide hot keywords to keep the overlay short (zibll parity).
+ // Mobile: hide hot keywords (zibll).
if ($is_mobile) {
$show_kw = false;
}
$keywords = [];
if ($show && $show_kw) {
- $raw = $settings['hot_search_keywords'] ?? '';
- $keywords = is_array($raw) ? $raw : preg_split('/[\s,]+/', (string) $raw, -1, PREG_SPLIT_NO_EMPTY);
- $keywords = array_slice(array_map('sanitize_text_field', $keywords), 0, $kw_limit);
+ if (function_exists('aksrt_get_search_hot_keywords')) {
+ $keywords = (array) aksrt_get_search_hot_keywords();
+ } else {
+ $raw = $settings['hot_search_keywords'] ?? '';
+ $keywords = is_array($raw) ? $raw : preg_split('/[\s,]+/', (string) $raw, -1, PREG_SPLIT_NO_EMPTY);
+ }
+ $keywords = array_slice(array_map('sanitize_text_field', array_values($keywords)), 0, $kw_limit);
}
$categories = [];
if ($show && $show_cat) {
- $cats = get_categories(['hide_empty' => false, 'number' => 50]);
+ $cat_args = ['hide_empty' => true, 'number' => 50];
+ if ($more_cats) {
+ $cat_args['include'] = $more_cats;
+ $cat_args['orderby'] = 'include';
+ $cat_args['hide_empty'] = false;
+ }
+ $cats = get_categories($cat_args);
foreach ($cats as $cat) {
- $categories[] = ['id' => $cat->term_id, 'name' => $cat->name];
+ $categories[] = ['id' => (int) $cat->term_id, 'name' => (string) $cat->name];
}
}
$type_options = [];
if ($show && $show_type) {
$types = Settings::get_search_content_types();
- foreach (($types['enabled'] ?? []) as $type_key => $type_value) {
- if ($type_value) {
- $type_options[] = ['key' => $type_key, 'label' => $type_key];
+ $labels = [
+ 'post' => __('文章', 'aksrt'),
+ 'user' => __('用户', 'aksrt'),
+ 'product' => __('商品', 'aksrt'),
+ 'forum' => __('帖子', 'aksrt'),
+ 'forum_topic' => __('帖子', 'aksrt'),
+ 'plate' => __('版块', 'aksrt'),
+ 'forum_plate' => __('版块', 'aksrt'),
+ 'page' => __('页面', 'aksrt'),
+ ];
+ $enabled = $types['enabled'] ?? $types;
+ if (is_array($enabled)) {
+ foreach ($enabled as $type_key => $type_value) {
+ // Support both map[key=>bool] and list of keys.
+ if (is_int($type_key) && is_string($type_value)) {
+ $k = $type_value;
+ $on = true;
+ } else {
+ $k = (string) $type_key;
+ $on = (bool) $type_value;
+ }
+ if (!$on || $k === '') {
+ continue;
+ }
+ $type_options[] = [
+ 'key' => $k,
+ 'label' => $labels[$k] ?? $k,
+ ];
}
}
}
@@ -128,6 +168,9 @@ class DisplayRuntime {
'popular_limit' => $kw_limit,
'show_input_cat' => $show_cat,
'show_type' => $show_type,
+ 'in_cat' => $in_cat,
+ 'in_type' => $in_type,
+ 'more_cats' => $more_cats,
'keywords' => $keywords,
'categories' => $categories,
'type_options' => $type_options,
@@ -136,9 +179,7 @@ class DisplayRuntime {
];
}
- /**
- * 是否显示顶部组件图标卡片覆盖
- */
+
public static function header_components_cards_enabled(): bool {
$settings = Settings::get_all();
return !empty($settings['header_components_cards_enabled']);
diff --git a/templates/parts/home-modules/module-hero.php b/templates/parts/home-modules/module-hero.php
index 1b8e1806..1aa5eef2 100644
--- a/templates/parts/home-modules/module-hero.php
+++ b/templates/parts/home-modules/module-hero.php
@@ -22,29 +22,94 @@ $hero_banners = function_exists('aksrt_get_banners') ? aksrt_get_banners(8, 'her
$settings = function_exists('aksrt_get_all_settings') ? aksrt_get_all_settings() : [];
$search_cfg = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_header_components_search_config() : [
+ 'pc' => false,
+ 'mobile' => false,
'show' => false,
- 'keywords' => [],
- 'categories' => [],
- 'type_options' => [],
- 'before_html' => '',
- 'after_html' => '',
+ 'show_keywords' => false,
+ 'popular_limit' => 6,
'show_input_cat' => false,
'show_type' => false,
+ 'in_cat' => '',
+ 'in_type' => 'post',
+ 'more_cats' => [],
+ 'before_html' => '',
+ 'after_html' => '',
];
-$show_search = !empty($search_cfg['show']) || !empty($cfg['with_search']);
-$show_cards = !empty($settings['header_components_cards_enabled']);
+
+// zibll zib_m_pc_is_show: checkbox arrays with pc_s / m_s.
+$is_mobile_req = function_exists('wp_is_mobile') && wp_is_mobile();
+$m_pc_show = static function ($opt) use ($is_mobile_req): bool {
+ $opt = (array) $opt;
+ return ($is_mobile_req && in_array('m_s', $opt, true)) || (!$is_mobile_req && in_array('pc_s', $opt, true));
+};
+
+// Search device gate (zibll header_slider_search_s).
+$search_opt = [];
+if (!empty($search_cfg['pc'])) {
+ $search_opt[] = 'pc_s';
+}
+if (!empty($search_cfg['mobile'])) {
+ $search_opt[] = 'm_s';
+}
+// Fallback: master enabled without explicit devices = both (legacy).
+if (!$search_opt && !empty($search_cfg['show'])) {
+ $search_opt = ['pc_s', 'm_s'];
+}
+$show_search = $m_pc_show($search_opt) || !empty($cfg['with_search']);
+
+// Cards device gate (zibll header_slider_card_s).
+$cards_master = !empty($settings['header_components_cards_enabled']);
+$card_show_devices = isset($settings['header_components_card_show_devices'])
+ ? (array) $settings['header_components_card_show_devices']
+ : ['pc', 'mobile'];
+$card_opt = [];
+if (in_array('pc', $card_show_devices, true)) {
+ $card_opt[] = 'pc_s';
+}
+if (in_array('mobile', $card_show_devices, true)) {
+ $card_opt[] = 'm_s';
+}
+if (!$card_opt && $cards_master) {
+ $card_opt = ['pc_s', 'm_s'];
+}
+$show_cards = $cards_master && $m_pc_show($card_opt);
$icon_cards = isset($settings['header_components_icon_cards']) ? (array) $settings['header_components_icon_cards'] : [];
$card_bg_mode = !empty($settings['header_components_card_shared_bg']) ? 'shared' : 'individual';
-$card_blur = !empty($settings['header_components_card_blur']);
-$filter_blur_devices = isset($settings['header_components_filter_blur_devices']) ? (array) $settings['header_components_filter_blur_devices'] : ($card_blur ? ['pc', 'mobile'] : []);
-$card_show_devices = isset($settings['header_components_card_show_devices']) ? (array) $settings['header_components_card_show_devices'] : ['pc', 'mobile'];
$card_icon_shape = $settings['header_components_card_icon_shape'] ?? 'circle';
+// Filter blur (zibll header_slider_filter_blur) — independent of cards.
+$filter_blur_devices = isset($settings['header_components_filter_blur_devices'])
+ ? (array) $settings['header_components_filter_blur_devices']
+ : [];
+// Legacy: header_components_card_blur true without devices → both.
+if (!$filter_blur_devices && !empty($settings['header_components_card_blur'])) {
+ $filter_blur_devices = ['pc', 'mobile'];
+}
+$filter_opt = [];
+if (in_array('pc', $filter_blur_devices, true)) {
+ $filter_opt[] = 'pc_s';
+}
+if (in_array('mobile', $filter_blur_devices, true)) {
+ $filter_opt[] = 'm_s';
+}
+$filter_blur_on = $m_pc_show($filter_opt);
+
$slide_count = count($hero_banners);
-$visible_card_count = ($show_cards && !empty($icon_cards)) ? count($icon_cards) : 0;
+// card-N only counts cards actually rendered on this device (zibll parity).
+$visible_card_count = 0;
+if ($show_cards) {
+ foreach ($icon_cards as $_c) {
+ if (is_array($_c) && (trim((string) ($_c['icon'] ?? '')) !== '' || trim((string) ($_c['custom_icon'] ?? '')) !== '' || trim((string) ($_c['customize_icon'] ?? '')) !== '')) {
+ $visible_card_count++;
+ } elseif (is_array($_c) && trim((string) ($_c['title'] ?? '')) !== '') {
+ // Count entries even if icon missing so layout still allocates.
+ $visible_card_count++;
+ }
+ }
+}
$container_classes = ['header-slider-container', 'header-components-container', 'relative', 'mb20', 'card-' . $visible_card_count];
-if (in_array('pc', $filter_blur_devices, true) || in_array('mobile', $filter_blur_devices, true)) {
+if ($filter_blur_on) {
$container_classes[] = 'filter-blur';
}
if (in_array('pc', $filter_blur_devices, true)) {
@@ -53,99 +118,50 @@ if (in_array('pc', $filter_blur_devices, true)) {
if (in_array('mobile', $filter_blur_devices, true)) {
$container_classes[] = 'has-blur-mobile';
}
-if (!in_array('pc', $card_show_devices, true)) {
- $container_classes[] = 'hide-cards-pc';
-}
-if (!in_array('mobile', $card_show_devices, true)) {
- $container_classes[] = 'hide-cards-mobile';
-}
-
-$search_placeholder = function_exists('aksrt_get_search_placeholder') ? aksrt_get_search_placeholder() : __('开启精彩搜索', 'aksrt');
-$search_value = trim((string) get_search_query());
-$search_type = function_exists('aksrt_get_search_form_type') ? aksrt_get_search_form_type() : 'post';
/**
* Search overlay = zibll .header-slider-search.abs-center
+ * Uses aksrt_get_search_box() (zib_get_search_box parity) for form / keywords / type / cat.
* Title/subtitle live in before_html (same flow stack as the form).
*/
-$render_hero_search = static function (string $search_id) use ($search_placeholder, $search_value, $search_type, $search_cfg): void {
- $_kw = $search_cfg['keywords'] ?? [];
- $_cats = $search_cfg['categories'] ?? [];
- $_types = $search_cfg['type_options'] ?? [];
- $_show_cat = !empty($search_cfg['show_input_cat']) && !empty($_cats);
- $_show_type = !empty($search_cfg['show_type']) && !empty($_types);
- $_before = isset($search_cfg['before_html']) ? (string) $search_cfg['before_html'] : '';
- $_after = isset($search_cfg['after_html']) ? (string) $search_cfg['after_html'] : '';
- ?>
-
- '',
+ 'show_keywords' => !empty($search_cfg['show_keywords']),
+ 'popular_limit' => max(0, (int) ($search_cfg['popular_limit'] ?? 6)),
+ 'show_history' => false,
+ 'show_posts' => false,
+ 'show_input_cat' => !empty($search_cfg['show_input_cat']),
+ 'more_cats' => !empty($search_cfg['more_cats']) ? (array) $search_cfg['more_cats'] : [],
+ 'in_cat' => (string) ($search_cfg['in_cat'] ?? ''),
+ 'show_type' => !empty($search_cfg['show_type']),
+ 'in_type' => (string) ($search_cfg['in_type'] ?? 'post'),
+ 'in_user' => '',
+ 's' => is_search() ? (string) get_search_query() : '',
+ ];
+ // Mobile: never show hot keywords (zibll).
+ if ($is_mobile_req) {
+ $search_args['show_keywords'] = false;
+ }
+
+ $search_html = function_exists('aksrt_get_search_box')
+ ? (string) aksrt_get_search_box($search_args)
+ : '';
+
+ $before_html = trim($_before) !== ''
+ ? ''
+ : '';
+ $after_html = trim($_after) !== ''
+ ? ''
+ : '';
+ echo '';
};
$render_icon_cards = static function () use ($show_cards, $icon_cards, $card_bg_mode, $card_icon_shape): void {
@@ -206,7 +222,7 @@ if (!empty($hero_banners)) :
$slider_cfg = function_exists('aksrt_get_slider_config') ? aksrt_get_slider_config() : [];
$_nav_color_for_header = sanitize_hex_color((string) ($slider_cfg['nav_color'] ?? '')) ?: '';
if ($_nav_color_for_header !== '' && strtolower($_nav_color_for_header) !== '#ffffff') {
- echo '';
+ echo '';
}
$swiper_config = [
@@ -345,7 +361,7 @@ if (!empty($hero_banners)) :
-
+
@@ -381,7 +397,7 @@ if (!empty($hero_banners)) :
-
+