Files
wordpress-theme-aksrt/templates/pages/page-documentnav.php
T
kate522 7bf0bc81b7 feat(pages): 1:1 文档导航 + 文章归档 (zibll documentnav/archives)
Category accordion + AJAX cat/search posts for documentnav; archives
month lists with view/comment/like meta, sidebar and comments shell.
2026-07-18 21:54:02 +08:00

117 lines
4.1 KiB
PHP

<?php
/**
* Template Name: AKSRT - 文档导航
* Template Post Type: page
*
* Zibll pages/documentnav.php 1:1 — category accordion + search + AJAX posts.
*
* @package AKSRT
*/
defined('ABSPATH') || exit;
use AKSRT\Core\DocumentNav;
$post_id = (int) get_queried_object_id();
$opt = class_exists(DocumentNav::class)
? DocumentNav::get_options($post_id)
: ['cat' => 0, 'initial_content' => 'updated_posts'];
$one_cat = (int) ($opt['cat'] ?? 0);
$initial = (string) ($opt['initial_content'] ?? 'updated_posts');
get_header();
?>
<main class="container page-template-documentnav">
<div class="content-wrap">
<div class="content-layout">
<div class="theme-box radius8 main-bg main-shadow box-body mb20">
<h1 class="article-title"><?php echo esc_html(get_the_title() ?: __('文档导航', 'aksrt')); ?></h1>
</div>
<div class="row document-nav-row">
<div class="col-sm-4 document-nav-aside">
<div class="theme-box zib-widget dosc-nav document-nav">
<?php
if ($one_cat > 0 && class_exists(DocumentNav::class)) {
$open = true;
echo DocumentNav::render_panels($one_cat, 'accordion', 'panel', $open); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
} elseif (current_user_can('edit_pages')) {
echo '<p class="muted-2-color box-body">' . esc_html__('请在页面设置中选择一级分类。', 'aksrt') . '</p>';
} else {
echo '<p class="muted-2-color box-body">' . esc_html__('暂无文档分类', 'aksrt') . '</p>';
}
?>
</div>
</div>
<div class="col-sm-8 document-nav-main" role="main">
<div class="theme-box zib-widget document-search relative-h">
<form class="document-search-form" action="javascript:;" method="get">
<div class="line-form">
<input type="search" name="s" class="line-form-input document-search-input" placeholder="<?php esc_attr_e('搜索文档…', 'aksrt'); ?>" autocomplete="off" required minlength="2">
<button type="submit" class="abs-right null" aria-label="<?php esc_attr_e('搜索', 'aksrt'); ?>">
<i class="fa fa-search" aria-hidden="true"></i>
</button>
</div>
</form>
<div class="history-search mt10">
<div>
<?php
if (class_exists(DocumentNav::class)) {
echo DocumentNav::get_instance()->history_buttons_html(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
?>
</div>
</div>
<div class="search-loading absolute main-bg flex jc" hidden>
<i class="loading mr10 em12" aria-hidden="true"></i> <?php esc_html_e('正在搜索', 'aksrt'); ?>
</div>
</div>
<div class="document-nav-container" data-one-cat="<?php echo (int) $one_cat; ?>">
<?php
if ($initial === 'page_content') {
while (have_posts()) {
the_post();
echo '<div class="nopw-sm box-body theme-box radius8 main-bg main-shadow">';
echo '<article class="article wp-posts-content">';
the_content();
echo '</article></div>';
}
} elseif ($one_cat > 0 && class_exists(DocumentNav::class)) {
$args = [
'cat' => $one_cat,
'order' => 'DESC',
'orderby' => 'modified',
'posts_per_page' => 12,
'no_found_rows' => true,
'ignore_sticky_posts' => true,
'post_status' => 'publish',
];
if ($initial === 'date_posts') {
$args['orderby'] = 'date';
} elseif ($initial === 'views_posts') {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = 'aksrt_post_views';
}
$q = new WP_Query($args);
echo DocumentNav::render_posts_html($q); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
} else {
echo '<div class="zib-widget"><p class="muted-2-color text-center">' . esc_html__('请配置文档分类', 'aksrt') . '</p></div>';
}
?>
</div>
</div>
</div>
<?php
if (comments_open() || get_comments_number()) {
comments_template();
}
?>
</div>
</div>
<?php get_sidebar(); ?>
</main>
<?php
get_footer();