123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Http\Controllers;
- use App\Services\LiquidRenderer;
- use Illuminate\Http\Request;
- use App\Models\SitePage;
- use App\Models\SitePageTag;
- class CollectionController extends Controller
- {
- protected $liquidRenderer;
- public function __construct(LiquidRenderer $liquidRenderer)
- {
- $this->liquidRenderer = $liquidRenderer;
- }
- public function index()
- {
- //模板支持多级目录,需要目录符号
- $output = LiquidRenderer::render('collection_list.liquid', [
- ]);
- return response($output);
- }
- public function detail($slug)
- {
- // Find the tag by either slug or id
- $tag = SitePageTag::where('dist_id', getDistId())
- ->where(function ($query) use ($slug) {
- $query->where('slug', $slug)
- ->orWhere('id', $slug);
- })
- ->first();
- if (!$tag) {
- abort('404','tag not found.');
- }
- // 获取关联的 pages
- $perPage = 12;
- $pages = $tag->pages($perPage); // 使用分页
- // 创建分页数据结构
- $paginator = [
- 'previous_page' => $pages->previousPageUrl() ? true : false, // 是否有上一页
- 'previous_page_url' => $pages->previousPageUrl(), // 上一页的 URL
- 'next_page' => $pages->nextPageUrl() ? true : false, // 是否有下一页
- 'next_page_url' => $pages->nextPageUrl(), // 下一页的 URL
- 'current_page' => $pages->currentPage(), // 当前页
- 'total_pages' => $pages->lastPage(), // 总页数
- 'pages' => range(1, $pages->lastPage()), // 页码数组
- 'page_url' => array_combine(
- range(1, $pages->lastPage()),
- array_map(fn($page) => $pages->url($page), range(1, $pages->lastPage()))
- ), // 每页的 URL
- ];
- // 构建导航数据 开始
- $breadcrumbs = [
- [
- 'url' => '/',
- 'name' => 'Home',
- ]
- ];
- $breadcrumbs[] = [
- 'url' => '#',
- 'name' => $tag->name,
- ];
- // 构建导航数据 结束
- // 构建缓存键
- $cacheKey = "collection_tag_{$tag->id}_page_{$pages->currentPage()}";
- //模板支持多级目录,需要目录符号
- $output = LiquidRenderer::render('collection_list.liquid', [
- 'tag' => $tag,
- 'pages' => $pages,
- 'paginator' => $paginator, // 分页信息
- 'breadcrumbs' => $breadcrumbs,
- ],$cacheKey);
- return response($output);
- }
- }
|