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"/);