fix(sidebar): collapse empty sidebar column on every scene

Sidebar visibility had two disconnected decisions: the body site-layout-*
class (via aksrt_is_show_sidebar_filter) only checked widget activity for
singles, while the homepage aside renderer skipped the column and
sidebar.php rendered an empty one. With the toggle on and no widgets, the
homepage kept a reserved gutter and squeezed the main content aside.

- collapse every scene to no-sidebar when the sidebar widget stack is empty
- resolve home_sidebar before the page branch so a static front page is
  checked against the zones the homepage renders
- guard the homepage aside with aksrt_is_show_sidebar() alone and drop the
  duplicate aksrt_homepage_has_sidebar gate
- early-return sidebar.php instead of rendering an empty column
- drop dead code: archive helper $preferred param, wp_is_mobile fallback,
  container--no-sidebar class, unreachable front-page fallback
- update post-visual-contract to pin the single visibility decision

Verification: php -l on all changed files; node --test
tests/widget-system/*.test.cjs 242/243 (the toast-contract failure is
pre-existing and unrelated).
This commit is contained in:
2026-09-05 15:40:11 +08:00
parent 2bf9b00022
commit 1839150ecb
10 changed files with 64 additions and 70 deletions
+1 -16
View File
@@ -11,21 +11,6 @@
get_header();
if (function_exists('aksrt_homepage_render_layout')) {
aksrt_homepage_render_layout();
} else {
?>
<main id="main-content" class="site-main content-shell" tabindex="-1">
<div class="content-layout content-layout--no-sidebar">
<div class="content-layout__primary">
<section class="widget widget-card box-body">
<h1 class="entry-title"><?php esc_html_e('首页骨架未加载', 'aksrt'); ?></h1>
<p><?php esc_html_e('固定首页骨架当前不可用,请检查主题加载链路。', 'aksrt'); ?></p>
</section>
</div>
</div>
</main>
<?php
}
aksrt_homepage_render_layout();
get_footer();