From 8f19384582101ea61a8685d0ed5fb46d57c77915 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 12 Jul 2026 17:49:58 +0800 Subject: [PATCH] fix(homepage): align shell with zibll and restore post stream Move header-slider outside main, render fluid zones once, default the latest stream to plain posts by date, and cut dual-render/perf waste so published posts and hero/banner structure match the zibll contract. --- .../src/schema/sections/page-display/index.js | 10 +- .../css/frontend/header-components/base.css | 1 + footer.php | 10 +- header.php | 47 +++--- .../trait-aksrt-scripts-part-1b.php | 6 +- .../class-aksrt-settings-home-cms.php | 10 +- inc/helpers/aksrt-homepage.php | 155 ++++++++++++------ inc/helpers/aksrt-posts-renderer.php | 24 ++- inc/helpers/aksrt-template-tags.php | 29 ++++ .../parts/home-modules/module-banner.php | 20 ++- templates/parts/home-modules/module-hero.php | 14 +- 11 files changed, 223 insertions(+), 103 deletions(-) diff --git a/assets/admin/src/schema/sections/page-display/index.js b/assets/admin/src/schema/sections/page-display/index.js index ee095f94..0da1e5a1 100644 --- a/assets/admin/src/schema/sections/page-display/index.js +++ b/assets/admin/src/schema/sections/page-display/index.js @@ -931,13 +931,13 @@ export const pageDisplaySchemas = { icon: 'fas fa-home', description: '配置首页内容模型、主列表、分类 Tab、卡片样式与首页交互。实际编辑界面在 HomepageSettings.vue(customPage),此处补齐 page_display 的 schema 契约。', defaults: { - homepage_content_model: 'mixed', + homepage_content_model: 'post', homepage_tabs: [], homepage_card_style: 'default', - homepage_multi_thumb_enabled: true, + homepage_multi_thumb_enabled: false, homepage_multi_thumb_min_images: 3, homepage_sidebar_mini_enabled: true, - homepage_default_sort: 'modified', + homepage_default_sort: 'date', homepage_default_view: 'list', homepage_sort_ajax_enabled: true, homepage_sticky_tabs_enabled: true, @@ -961,7 +961,7 @@ export const pageDisplaySchemas = { key: 'homepage_content_model', label: '首页内容模型', type: 'radio', - default: 'mixed', + default: 'post', options: [ { label: '混合模式', value: 'mixed' }, { label: '纯文章', value: 'post' }, @@ -977,7 +977,7 @@ export const pageDisplaySchemas = { fields: [ { key: 'home_posts_list_s', label: '启用主列表', type: 'switch', default: true }, { key: 'index_list_title', label: '区块标题', type: 'input', default: '最新发布', dependsOn: { key: 'home_posts_list_s', value: true } }, - { key: 'home_list1_orderby_option.orderby', label: '默认排序', type: 'select', default: 'modified', dependsOn: { key: 'home_posts_list_s', value: true }, options: sortOptions }, + { key: 'home_list1_orderby_option.orderby', label: '默认排序', type: 'select', default: 'date', dependsOn: { key: 'home_posts_list_s', value: true }, options: sortOptions }, { key: 'home_list1_orderby_s', label: '启用排序栏', type: 'switch', default: true, dependsOn: { key: 'home_posts_list_s', value: true } }, { key: 'home_list_sort_dropdown', label: '排序栏下拉模式', type: 'switch', default: false, dependsOn: { key: 'home_list1_orderby_s', value: true } }, { key: 'home_list1_orderby_option', label: '可用排序选项', type: 'checkbox', default: ['modified', 'date', 'views', 'likes', 'comments'], dependsOn: { key: 'home_list1_orderby_s', value: true }, options: sortOptions }, diff --git a/assets/css/frontend/header-components/base.css b/assets/css/frontend/header-components/base.css index 1737d5fc..ce9807f7 100644 --- a/assets/css/frontend/header-components/base.css +++ b/assets/css/frontend/header-components/base.css @@ -195,6 +195,7 @@ /* ============================================================ * Container — 三层叠加的父容器 * ============================================================ */ +.header-slider-container, .header-components-container { position: relative; isolation: isolate; /* 创建独立堆叠上下文,内部 z-index 不外泄 */ diff --git a/footer.php b/footer.php index 4c38c4ea..0f6749c6 100644 --- a/footer.php +++ b/footer.php @@ -238,7 +238,15 @@ $render_link_url = function ($raw) { 0) : ?> 'count', 'order' => 'DESC', 'number' => $hot_cat_count, 'hide_empty' => true]); + $_hot_cache_key = 'aksrt_footer_hot_cats_' . (int) $hot_cat_count; + $_hot_cats = wp_cache_get($_hot_cache_key, 'aksrt'); + if (!is_array($_hot_cats)) { + $_hot_cats = get_categories(['orderby' => 'count', 'order' => 'DESC', 'number' => $hot_cat_count, 'hide_empty' => true]); + if (!is_array($_hot_cats)) { + $_hot_cats = []; + } + wp_cache_set($_hot_cache_key, $_hot_cats, 'aksrt', 12 * HOUR_IN_SECONDS); + } if (!empty($_hot_cats)) : ?>