Files
ai-web/resources/views/public/tools/list.blade.php

110 lines
5.6 KiB
PHP
Raw Normal View History

2026-02-12 10:57:53 +08:00
@extends('layouts.site')
@section('page_class', 'page-tools-list')
@section('title', 'AI工具列表 - AIWeb')
@section('meta_description', 'AI工具独立列表页支持关键词、分类、价格、API能力等筛选。')
@section('canonical', route('tools.list'))
@section('content')
<section class="module-hero">
<div class="position-relative">
<span class="hero-chip"><i class="bi bi-grid-1x2-fill"></i> 工具列表</span>
<h1 class="h2 fw-bold mt-2">AI工具独立列表页</h1>
<p class="hero-subtext">从工具集首页点击“更多”进入,支持完整筛选与分页浏览。</p>
</div>
</section>
<div class="channel-body">
<section class="channel-panel">
<form class="channel-search mb-3" method="get" action="{{ route('tools.list') }}" role="search" aria-label="筛选 AI 工具列表">
<input type="hidden" name="tab" value="{{ $activeTab }}">
<input type="search" name="q" value="{{ $filters['q'] ?? '' }}" placeholder="搜索工具名称或能力" autocomplete="off" spellcheck="false">
<select name="category" aria-label="按分类筛选">
<option value="">全部分类</option>
@foreach($categories as $category)
<option value="{{ $category->slug }}" @selected(($filters['category'] ?? '') === $category->slug)>{{ $category->name }}</option>
@endforeach
</select>
<select name="pricing" aria-label="按价格筛选">
<option value="">价格类型</option>
<option value="free" @selected(($filters['pricing'] ?? '') === 'free')>免费</option>
<option value="freemium" @selected(($filters['pricing'] ?? '') === 'freemium')>免费增值</option>
<option value="paid" @selected(($filters['pricing'] ?? '') === 'paid')>付费</option>
<option value="open_source" @selected(($filters['pricing'] ?? '') === 'open_source')>开源</option>
</select>
<select name="api" aria-label="按 API 筛选">
<option value="">接口能力</option>
<option value="1" @selected(($filters['api'] ?? '') === '1')>支持 API</option>
<option value="0" @selected(($filters['api'] ?? '') === '0')> API</option>
</select>
<button class="btn btn-primary" type="submit"><i class="bi bi-search"></i> 搜索</button>
</form>
<nav class="channel-tabs mb-3" aria-label="列表排序">
@foreach($tabOptions as $tab)
<a class="channel-tab @if($activeTab === $tab['key']) active @endif" href="{{ route('tools.list', array_filter(array_merge($filters, ['tab' => $tab['key']]))) }}">{{ $tab['label'] }}</a>
@endforeach
</nav>
@if($items->isNotEmpty())
<div class="entity-grid">
@foreach($items as $tool)
<article class="entity-card">
<a class="entity-title" href="{{ route('tools.show', $tool->slug) }}">{{ $tool->name }}</a>
<div class="entity-meta">{{ $tool->category?->name ?? '未分类' }} · {{ $tool->pricing_type }}</div>
<p class="entity-desc line-clamp-2">{{ $tool->summary }}</p>
<div class="d-flex align-items-center justify-content-between gap-2">
<span class="chip">{{ $tool->has_api ? '支持 API' : '无 API' }}</span>
<a class="btn btn-sm btn-outline-primary" href="{{ route('tools.show', $tool->slug) }}">详情</a>
</div>
</article>
@endforeach
</div>
<div class="mt-3">{{ $items->links() }}</div>
@else
<p class="text-muted-soft mb-0">没有找到匹配工具,请尝试调整筛选条件。</p>
@endif
</section>
<aside class="channel-list">
<section class="channel-panel">
<header class="channel-panel-head">
<h3 class="channel-panel-title">站点概览</h3>
</header>
<article class="side-list-item">
<a href="{{ route('tools.index') }}">返回工具集首页</a>
<small>支持分类定位导航</small>
</article>
<article class="side-list-item">
<a href="{{ route('models.index') }}">模型推荐</a>
<small>综合评分维度筛选</small>
</article>
<article class="side-list-item">
<a href="{{ route('news.index') }}">资讯文章</a>
<small>追踪行业动态</small>
</article>
<article class="side-list-item">
<a href="{{ route('guides.index') }}">教程学习</a>
<small>入门到实战路径</small>
</article>
</section>
<section class="channel-panel">
<header class="channel-panel-head">
<h3 class="channel-panel-title">数据统计</h3>
</header>
<article class="side-list-item"><a href="#">收录工具</a><small>{{ $toolStats['total'] ?? 0 }}</small></article>
<article class="side-list-item"><a href="#">支持 API</a><small>{{ $toolStats['api'] ?? 0 }}</small></article>
<article class="side-list-item"><a href="#">免费可用</a><small>{{ $toolStats['free'] ?? 0 }}</small></article>
<article class="side-list-item"><a href="#">7天更新</a><small>{{ $toolStats['updated_7d'] ?? 0 }}</small></article>
</section>
</aside>
</div>
@endsection