48 lines
2.4 KiB
PHP
48 lines
2.4 KiB
PHP
<?php
|
|
require_once __DIR__ . "/includes/config.php";
|
|
require_once __DIR__ . "/includes/functions.php";
|
|
$pageName = "archive";
|
|
$pageTitle = "归档";
|
|
record_visit("archive");
|
|
$ym = isset($_GET["ym"]) ? trim($_GET["ym"]) : "";
|
|
$archives = get_archives();
|
|
$perPage = 10;
|
|
if ($ym) {
|
|
$st = db()->prepare("SELECT COUNT(*) c FROM articles WHERE status=? AND DATE_FORMAT(created_at,'%Y年%m月')=?");
|
|
$st->execute(["published",$ym]);
|
|
} else {
|
|
$st = db()->query("SELECT COUNT(*) c FROM articles WHERE status='published'");
|
|
}
|
|
$pg = paginate((int)$st->fetch()["c"], isset($_GET["page"])?(int)$_GET["page"]:1, $perPage);
|
|
$sql = "SELECT a.*, c.name cat_name FROM articles a LEFT JOIN categories c ON a.category_id=c.id WHERE a.status=? ";
|
|
$params = ["published"];
|
|
if ($ym) { $sql .= "AND DATE_FORMAT(a.created_at,'%Y年%m月')=? "; $params[] = $ym; }
|
|
$sql .= "ORDER BY a.created_at DESC LIMIT ? OFFSET ?";
|
|
$stmt = db()->prepare($sql);
|
|
$i = 1;
|
|
foreach ($params as $p) { $stmt->bindValue($i++, $p, PDO::PARAM_STR); }
|
|
$stmt->bindValue($i++, $pg["perPage"], PDO::PARAM_INT);
|
|
$stmt->bindValue($i, $pg["offset"], PDO::PARAM_INT);
|
|
$stmt->execute();
|
|
$articles = $stmt->fetchAll();
|
|
require_once __DIR__ . "/includes/header.php";
|
|
?>
|
|
<div class="page-head">
|
|
<h1>归档</h1>
|
|
<div class="desc"><?php echo $ym ? "浏览 " . e($ym) . " 的文章" : "全部文章按月归档"; ?></div>
|
|
</div>
|
|
<div class="card glass" style="padding:16px;margin-bottom:20px;">
|
|
<div class="chip-row">
|
|
<?php foreach ($archives as $a) { ?>
|
|
<a class="glass-chip<?php echo $ym===$a["ym"]?" active":""; ?>" href="?ym=<?php echo e($a["ym"]); ?>"><?php echo e($a["ym"]); ?> (<?php echo (int)$a["cnt"]; ?>)</a>
|
|
<?php } ?>
|
|
</div>
|
|
</div>
|
|
<?php foreach ($articles as $a) { ?>
|
|
<article class="card glass clickable" onclick="location.href='<?php echo e(SITE_URL); ?>article.php?id=<?php echo (int)$a["id"]; ?>'">
|
|
<div class="card-meta"><span><?php echo e(substr($a["created_at"],0,10)); ?></span><span><?php echo (int)$a["views"]; ?> 次阅读</span></div>
|
|
<h2><?php echo e($a["title"]); ?></h2>
|
|
</article>
|
|
<?php } ?>
|
|
<?php if ($pg["pages"]>1) { ?><div class="pagination"><?php for($i=1;$i<=$pg["pages"];$i++){ ?><a class="page-btn<?php echo $i===$pg["page"]?" active":""; ?>" href="?ym=<?php echo e($ym); ?>&page=<?php echo $i; ?>"><?php echo $i; ?></a><?php } ?></div><?php } ?>
|
|
<?php require_once __DIR__ . "/includes/footer.php"; ?>
|