fix(list): wire Zibll list/card display chain end-to-end
Resolve post list mode from global list_type + surface card overrides so homepage/archives/AJAX honor admin list and card style settings.
This commit is contained in:
1 parent
b2815614d1
commit
d73a7af25e
17 files changed
+444
-151
No files matched your search
@@ -384,11 +384,18 @@ if (!function_exists('aksrt_homepage_render_sortbar')) {
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
$view_mode = 'list';
|
||||
if (function_exists('aksrt_resolve_post_list_render_config')) {
|
||||
$home_view_cfg = aksrt_resolve_post_list_render_config(['context' => 'home']);
|
||||
$view_mode = (($home_view_cfg['mode'] ?? 'list') === 'card') ? 'card' : 'list';
|
||||
}
|
||||
?>
|
||||
<div class="aksrt-homepage__view-toggle" data-aksrt-view-toggle>
|
||||
<button type="button" class="aksrt-homepage__view-btn is-active" data-view-mode="list" aria-label="<?php esc_attr_e('列表视图', 'aksrt'); ?>">
|
||||
<button type="button" class="aksrt-homepage__view-btn<?php echo $view_mode === 'list' ? ' is-active' : ''; ?>" data-view-mode="list" aria-label="<?php esc_attr_e('列表视图', 'aksrt'); ?>">
|
||||
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1 3h14v2H1V3zm0 4h14v2H1V7zm0 4h14v2H1v-2z"/></svg>
|
||||
</button>
|
||||
<button type="button" class="aksrt-homepage__view-btn" data-view-mode="card" aria-label="<?php esc_attr_e('卡片视图', 'aksrt'); ?>">
|
||||
<button type="button" class="aksrt-homepage__view-btn<?php echo $view_mode === 'card' ? ' is-active' : ''; ?>" data-view-mode="card" aria-label="<?php esc_attr_e('卡片视图', 'aksrt'); ?>">
|
||||
<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1 1h4v4H1V1zm5 0h4v4H6V1zm5 0h4v4h-4V1zM1 6h4v4H1V6zm5 0h4v4H6V6zm5 0h4v4h-4V6zM1 11h4v4H1v-4zm5 0h4v4H6v-4zm5 0h4v4h-4v-4z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
@@ -589,10 +596,12 @@ if (!function_exists('aksrt_homepage_get_latest_panel_contract')) {
|
||||
|
||||
unset($query_vars['paged'], $query_vars['page']);
|
||||
|
||||
$render_config = [
|
||||
'mode' => 'list',
|
||||
'context' => 'home',
|
||||
];
|
||||
$render_config = function_exists('aksrt_resolve_post_list_render_config')
|
||||
? aksrt_resolve_post_list_render_config(['context' => 'home'])
|
||||
: [
|
||||
'mode' => 'list',
|
||||
'context' => 'home',
|
||||
];
|
||||
|
||||
return [
|
||||
'query_context' => 'homepage_latest',
|
||||
@@ -753,10 +762,12 @@ if (!function_exists('aksrt_homepage_render_post_card')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$config = [
|
||||
'mode' => 'list',
|
||||
'context' => 'home',
|
||||
];
|
||||
$config = function_exists('aksrt_resolve_post_list_render_config')
|
||||
? aksrt_resolve_post_list_render_config(['context' => 'home'])
|
||||
: [
|
||||
'mode' => 'list',
|
||||
'context' => 'home',
|
||||
];
|
||||
|
||||
echo aksrt_render_post($config); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
}
|
||||
@@ -768,15 +779,23 @@ if (!function_exists('aksrt_homepage_render_posts_grid')) {
|
||||
*/
|
||||
function aksrt_homepage_render_posts_grid(?WP_Query $query = null, bool $with_pagination = false): void {
|
||||
$query = $query instanceof WP_Query ? $query : aksrt_homepage_get_latest_query();
|
||||
$config = function_exists('aksrt_resolve_post_list_render_config')
|
||||
? aksrt_resolve_post_list_render_config(['context' => 'home'])
|
||||
: [
|
||||
'mode' => 'list',
|
||||
'context' => 'home',
|
||||
];
|
||||
$config['skip_wrapper'] = true;
|
||||
$view = (($config['mode'] ?? 'list') === 'card') ? 'card' : 'list';
|
||||
|
||||
if (function_exists('aksrt_render_post_list')) {
|
||||
// Panel already provides posts-row.ajaxpager; avoid nested wrapper.
|
||||
aksrt_render_post_list($query, ['mode' => 'list', 'context' => 'home', 'skip_wrapper' => true], true);
|
||||
aksrt_render_post_list($query, $config, true);
|
||||
} else {
|
||||
if (!$query->have_posts()) {
|
||||
echo '<div class="no-results"><p>' . esc_html__('暂无文章', 'aksrt') . '</p></div>';
|
||||
} else {
|
||||
echo '<div class="posts-row aksrt-homepage__posts" data-view="list">';
|
||||
echo '<div class="posts-row aksrt-homepage__posts" data-view="' . esc_attr($view) . '">';
|
||||
while ($query->have_posts()) {
|
||||
$query->the_post();
|
||||
aksrt_homepage_render_post_card();
|
||||
|
||||
Reference in new issue
Block a user