feat(admin): replicate reference post-page settings page 1:1

- rewrite post_list.page schema (JS+PHP 2.0.0) with the reference field set:
  three cover types with option fieldsets (image 20-200% / slide CFS_Module::slide
  full config with nested dependsOn / video 0-200%), hide-time, p_indent,
  breadcrumbs (home-text as switcher), prevnext, authordesc, maxheight slider,
  yiyan block, copyright, button toptext, front/after content, related posts
- migrate share_s to share page basic group and post_rewards_* to users
  features rewards group (runtime keys unchanged)
- remap get_post_page_settings() to reference keys, normalize slide cover
  option, hardcode non-reference runtime flags (reading progress, favorites,
  author card), drop dual-path legacy aliases
- wire slide option into aksrt_render_slider (effect/direction/spaceBetween/
  speed/interval/loop/autoplay/nav/pagination, scale vs fixed-height modes),
  clamp image scale 20-200 and video scale 0-200 with 16:9 fallback,
  wire p_indent container class + CSS, resync frontend-tags fallback and
  FacadeBulk fallback, remap PostMetaBox cover keys
- add post-page reference contract test; update stale cover-height and
  user-features contract tests

Validation: node --test 464/464 pass, audit-admin-contracts errors=0,
vite build ok, build-public-assets ok, php -l clean.
This commit is contained in:
kate522 committed 2026-09-24 16:13:00 +08:00
1 parent a8060fa71d
commit 66f8bb933d
17 files changed
+797 -267

No files matched your search

+13 -3
View File
@@ -165,10 +165,20 @@ trait FacadeBulk {
}
$settings = self::get_all();
// 参考主题语义:switcher 开 = 面包屑用“首页”替代网站名称。
$breadcrumbs_home_replace = !isset($settings['breadcrumbs_home_text']) || !empty($settings['breadcrumbs_home_text']);
return [
'reading_progress' => !isset($settings['post_reading_progress']) || !empty($settings['post_reading_progress']),
'breadcrumbs' => !isset($settings['breadcrumbs_single_s']) || !empty($settings['breadcrumbs_single_s']),
'breadcrumbs_home' => trim((string) ($settings['breadcrumbs_home_text'] ?? '')) ?: __('首页', 'aksrt'),
'reading_progress' => true,
'breadcrumbs' => !isset($settings['breadcrumbs_single_s']) || !empty($settings['breadcrumbs_single_s']),
'breadcrumbs_home' => $breadcrumbs_home_replace ? __('首页', 'aksrt') : (string) get_bloginfo('name'),
'breadcrumbs_home_replace' => $breadcrumbs_home_replace,
'p_indent' => !empty($settings['post_p_indent_s']),
'article_image_cover' => !isset($settings['article_image_cover']) || !empty($settings['article_image_cover']),
'article_image_cover_scale' => 35,
'article_slide_cover' => !isset($settings['article_slide_cover']) || !empty($settings['article_slide_cover']),
'article_slide_cover_option'=> [],
'article_video_cover' => !isset($settings['article_video_cover']) || !empty($settings['article_video_cover']),
'article_video_cover_scale' => 0,
'related_enabled' => !isset($settings['post_related_s']) || !empty($settings['post_related_s']),
'related_count' => max(4, min(12, (int) ($settings['post_related_n'] ?? 6))),
'related_style' => in_array(($settings['post_related_type'] ?? 'img'), ['img', 'list', 'text'], true) ? (string) $settings['post_related_type'] : 'img',