diff --git a/assets/css/routes/user-home.css b/assets/css/routes/user-home.css index 3c7e67f4..cec8bb34 100644 --- a/assets/css/routes/user-home.css +++ b/assets/css/routes/user-home.css @@ -404,10 +404,10 @@ animation: panel-fade-in 0.25s ease; } -/* Public author posts follow Zibll's author-tab list +/* Public author posts/favorites follow Zibll's author-tab list * (zibll css/main.css: .author-tab .posts-item + the ≥992px no-sidebar * two-column rule .site-layout-1 .posts-item:not(.card)). */ -.aksrt-user-home #panel-posts .aksrt-user-home__post-list .posts-item { +.aksrt-user-home .aksrt-user-home__post-list .posts-item { background: transparent; box-shadow: none; } @@ -415,7 +415,7 @@ /* 宽屏双列:无侧边栏全文宽时文章卡片并排两列,视觉同 zibll site-layout-1 * (zibll 用 inline-flex+calc(50%),对标记空白敏感,此处用等几何的 grid) */ @media (min-width: 992px) { - .aksrt-user-home #panel-posts .aksrt-user-home__post-list { + .aksrt-user-home .aksrt-user-home__post-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; @@ -424,14 +424,14 @@ margin-left: 0; } - .aksrt-user-home #panel-posts .aksrt-user-home__post-list > .posts-item { + .aksrt-user-home .aksrt-user-home__post-list > .posts-item { width: auto; /* 覆盖 vendored site-layout-1 的 width: calc(50% - 16px),让卡片填满网格单元 */ margin: 0 !important; /* 抵消 vendored .posts-row > * 的 8px !important 边距 */ } } @media (max-width: 767px) { - .aksrt-user-home #panel-posts .aksrt-user-home__post-list .posts-item { + .aksrt-user-home .aksrt-user-home__post-list .posts-item { padding: 10px 0; } } diff --git a/templates/parts/user-home/panels-core.php b/templates/parts/user-home/panels-core.php index df1c1ab3..cb460f01 100644 --- a/templates/parts/user-home/panels-core.php +++ b/templates/parts/user-home/panels-core.php @@ -11,17 +11,9 @@ $args = is_array($args ?? null) ? $args : []; extract($args, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract ?> - -
> + $user_id, - 'posts_per_page' => $per_page, - 'post_status' => 'publish', - 'paged' => $posts_page, - 'no_found_rows' => false, - ]); - $author_render_config = aksrt_resolve_post_list_render_config([ + $user_home_render_config = aksrt_resolve_post_list_render_config([ 'context' => 'author', 'overrides' => [ 'type' => 'list', @@ -29,16 +21,29 @@ extract($args, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_ext 'no_margin' => true, ], ]); - aksrt_render_post_list(array_merge($author_render_config, ['wrapper_class' => 'aksrt-user-home__post-list']), $author_posts); - aksrt_render_pagination($author_posts, [ - 'query_context' => 'author', - 'render_config' => $author_render_config, - 'page_var' => 'posts_page', - 'current_page' => $posts_page, - ]); - wp_reset_postdata(); ?> -
+ + + +
> + $user_id, + 'posts_per_page' => $per_page, + 'post_status' => 'publish', + 'paged' => $posts_page, + 'no_found_rows' => false, + ]); + aksrt_render_post_list(array_merge($user_home_render_config, ['wrapper_class' => 'aksrt-user-home__post-list']), $author_posts); + aksrt_render_pagination($author_posts, [ + 'query_context' => 'author', + 'render_config' => $user_home_render_config, + 'page_var' => 'posts_page', + 'current_page' => $posts_page, + ]); + wp_reset_postdata(); + ?> +
@@ -72,46 +77,33 @@ extract($args, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_ext -
> - - 'post', - 'post_status' => 'publish', - 'post__in' => $favorite_post_ids, - 'orderby' => 'post__in', - 'posts_per_page' => $per_page, - 'paged' => $favorites_page, - 'ignore_sticky_posts' => true, - 'no_found_rows' => false, - 'update_post_meta_cache' => false, - ]); - if ($favorites_query->have_posts()) : - ?> -
- have_posts()) : $favorites_query->the_post(); ?> - [ - 'type' => 'view', - 'url' => get_permalink(), - 'label' => __('阅读', 'aksrt'), - ], - ]); - ?> - -
+
> + max_num_pages, $favorites_page, 'favorites_page'); + $favorites_query = new WP_Query([ + 'post_type' => 'post', + 'post_status' => 'publish', + 'post__in' => $favorite_post_ids, + 'orderby' => 'post__in', + 'posts_per_page' => $per_page, + 'paged' => $favorites_page, + 'ignore_sticky_posts' => true, + 'no_found_rows' => false, + 'update_post_meta_cache' => false, + ]); + aksrt_render_post_list(array_merge($user_home_render_config, ['wrapper_class' => 'aksrt-user-home__post-list']), $favorites_query); + aksrt_render_pagination($favorites_query, [ + 'query_context' => 'author', + 'render_config' => $user_home_render_config, + 'page_var' => 'favorites_page', + 'current_page' => $favorites_page, + ]); wp_reset_postdata(); - else : - aksrt_render_profile_empty($svg_empty_favorite, __('TA 还没有收藏文章', 'aksrt')); - endif; - ?> - - - -
+ ?> + + + +
diff --git a/tests/widget-system/post-visual-contract.test.cjs b/tests/widget-system/post-visual-contract.test.cjs index 244d3507..04459a60 100644 --- a/tests/widget-system/post-visual-contract.test.cjs +++ b/tests/widget-system/post-visual-contract.test.cjs @@ -321,10 +321,14 @@ test('profile routes load versioned leaf styles and keep dialogs hidden initiall assert.match(accountModals, /id="email-modal" class="aksrt-modal" hidden/); assert.match(userCenterJs, /function closeModal\(m\)[\s\S]*?m\.hidden = true;/); assert.match(userHomeCss, /\.aksrt-profile-details-modal\[hidden\]\s*\{\s*display:\s*none\s*!important;\s*\}/); - assert.match(userHomeCss, /\.aksrt-user-home #panel-posts \.aksrt-user-home__post-list \.posts-item\s*\{[^}]*background:\s*transparent;[^}]*box-shadow:\s*none;/); - assert.match(userHomeCss, /@media \(min-width: 992px\)\s*\{[\s\S]*?\.aksrt-user-home #panel-posts \.aksrt-user-home__post-list\s*\{[^}]*display:\s*grid;[^}]*grid-template-columns:\s*repeat\(2,\s*minmax\(0,\s*1fr\)\);/); - assert.match(userHomeCss, /@media \(min-width: 992px\)\s*\{[\s\S]*?\.aksrt-user-home #panel-posts \.aksrt-user-home__post-list > \.posts-item\s*\{[^}]*width:\s*auto;[^}]*margin:\s*0 !important;/); - assert.match(userHomeCss, /@media \(max-width: 767px\)\s*\{[\s\S]*?\.aksrt-user-home #panel-posts \.aksrt-user-home__post-list \.posts-item\s*\{[^}]*padding:\s*10px 0;/); + assert.match(userHomeCss, /\.aksrt-user-home \.aksrt-user-home__post-list \.posts-item\s*\{[^}]*background:\s*transparent;[^}]*box-shadow:\s*none;/); + assert.match(userHomeCss, /@media \(min-width: 992px\)\s*\{[\s\S]*?\.aksrt-user-home \.aksrt-user-home__post-list\s*\{[^}]*display:\s*grid;[^}]*grid-template-columns:\s*repeat\(2,\s*minmax\(0,\s*1fr\)\);/); + assert.match(userHomeCss, /@media \(min-width: 992px\)\s*\{[\s\S]*?\.aksrt-user-home \.aksrt-user-home__post-list > \.posts-item\s*\{[^}]*width:\s*auto;[^}]*margin:\s*0 !important;/); + assert.match(userHomeCss, /@media \(max-width: 767px\)\s*\{[\s\S]*?\.aksrt-user-home \.aksrt-user-home__post-list \.posts-item\s*\{[^}]*padding:\s*10px 0;/); + const panelsCore = read('templates/parts/user-home/panels-core.php'); + assert.match(panelsCore, /'page_var'\s*=>\s*'favorites_page'/); + assert.match(panelsCore, /array_merge\(\$user_home_render_config, \['wrapper_class' => 'aksrt-user-home__post-list'\]\), \$favorites_query\)/); + assert.doesNotMatch(panelsCore, /profile-list-item/); assert.match(profileLayoutCss, /\.aksrt-cover-menu__panel\[hidden\]\s*\{\s*display:\s*none\s*!important;\s*\}/); assert.match(profileLayoutCss, /#aksrt-bg-file-input\[hidden\],[\s\S]*?#aksrt-avatar-file-input\[hidden\][\s\S]*?display:\s*none\s*!important;/); assert.match(settingsSecurity, /data-modal="email-modal"[\s\S]*?<\/button>\s*<\/div>\s*
[\s\S]*?data-modal="phone-modal"/);