Files
sachgiaokhoaorg e6b265db99 Sách Giáo Khoa Việt Nam - sachgiaokhoa.org
CodeIgniter 4 website:
- Catalog 999 SGK (lớp 1-12) từ API, lọc theo lớp/môn/NXB, tìm kiếm
- Trang chủ grouped browse (bậc học -> lớp -> môn, ưu tiên môn quan trọng)
- Chi tiết sách: metadata đầy đủ, cover nghệ thuật /thumb/{W}x{H}/
- Đọc online qua gate captcha + countdown, PDF viewer pdf.js
- Download: captcha + token một lần + auto cache-bust version
- Tự đồng bộ catalog/cover khi API thay đổi (refresh:catalog)
- Legal: DMCA, miễn trừ trách nhiệm, điều khoản, bảo mật, liên hệ
2026-08-23 07:05:49 +00:00

58 lines
2.5 KiB
PHP

<?= $this->extend('layouts/main') ?>
<?= $this->section('content') ?>
<div class="hero">
<h1>Sách Giáo Khoa Việt Nam — Lớp 1 đến lớp 12</h1>
<p>Kho tra cứu đầy đủ <?= number_format($total) ?> đầu sách giáo khoa thuộc mọi bộ sách: Kết nối tri thức với cuộc sống, Chân trời sáng tạo, Cánh Diều, Giáo dục Việt Nam... Chọn lớp hoặc môn học để bắt đầu.</p>
<div class="stats">
<div class="stat"><b><?= number_format($total) ?></b><span>Đầu sách</span></div>
<div class="stat"><b>12</b><span>Khoảng lớp</span></div>
<div class="stat"><b><?= count($publishers) ?></b><span>Nhà xuất bản / bộ sách</span></div>
</div>
</div>
<?php foreach ($levels as $lv): ?>
<section class="level-section">
<h2 class="level-title"><?= esc($lv['label']) ?></h2>
<div class="grade-grid">
<?php foreach ($lv['grades'] as $g): ?>
<div class="grade-card">
<div class="grade-covers">
<?php foreach (array_slice($g['covers'], 0, 5) as $c): ?>
<a href="/sach/<?= esc($c['id']) ?>" title="<?= esc($c['title']) ?>">
<img loading="lazy" src="/thumb/240x320/<?= esc($c['id']) ?>.jpg?v=<?= media_version() ?>" alt="<?= esc($c['title']) ?>"
onerror="this.parentNode.style.display='none'">
</a>
<?php endforeach; ?>
</div>
<a class="grade-head" href="/?lop=<?= $g['grade'] ?>">
<span class="grade-num">Lớp <?= $g['grade'] ?></span>
<span class="grade-count"><?= $g['total'] ?> sách</span>
</a>
<div class="subject-pills">
<?php $i = 0; foreach ($g['subjects'] as $s => $n): if ($i++ >= 8): ?>
<a class="pill more" href="/?lop=<?= $g['grade'] ?>">+ <?= count($g['subjects']) - 8 ?> môn khác</a>
<?php break; endif; ?>
<a class="pill" href="/?lop=<?= $g['grade'] ?>&mon=<?= urlencode($s) ?>"><?= esc($s) ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endforeach; ?>
</div>
</section>
<?php endforeach; ?>
<section class="level-section">
<h2 class="level-title">Theo nhà xuất bản / bộ sách</h2>
<div class="pub-grid">
<?php foreach ($publishers as $p => $n): ?>
<a class="pub-card" href="/?nxb=<?= urlencode($p) ?>">
<span class="pub-name"><?= esc($p) ?></span>
<span class="pub-count"><?= $n ?> đầu sách</span>
</a>
<?php endforeach; ?>
</div>
</section>
<?= $this->endSection() ?>