search.blade.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. {{-- resources/views/library/search.blade.php
  2. 全站统一搜索结果页。
  3. 路由:/library/search?q=&type=&category=&lang=
  4. 原 wiki/search.blade.php 移至此处,@extends 路径更新,
  5. 搜索框改用 <x-ui.search-input>,空状态改用 <x-ui.empty-state>。
  6. --}}
  7. @extends('library.wiki.layouts.app')
  8. @section('title', $query ? '"' . $query . '" 的搜索结果 · WikiPāli' : '搜索 · WikiPāli')
  9. @section('wiki-content')
  10. {{-- 搜索框 --}}
  11. <div class="wiki-search-bar-wrap">
  12. <x-ui.search-input
  13. :action="route('library.search')"
  14. :value="$query"
  15. placeholder="搜索条目、巴利文、梵文…"
  16. :autofocus="true"
  17. :hidden-fields="array_filter(['category' => $category !== 'all' ? $category : null])" />
  18. </div>
  19. {{-- 结果摘要 --}}
  20. <div class="wiki-search-summary">
  21. @if ($query)
  22. 搜索 <strong>「{{ $query }}」</strong>
  23. @if ($pagination['total'] > 0)
  24. ,共找到 <strong>{{ $pagination['total'] }}</strong> 条结果
  25. @if ($pagination['last_page'] > 1)
  26. (第 {{ $pagination['current_page'] }} / {{ $pagination['last_page'] }} 页)
  27. @endif
  28. @else
  29. ,未找到相关条目
  30. @endif
  31. @endif
  32. </div>
  33. {{-- 结果列表 --}}
  34. @if (count($results) > 0)
  35. <div class="wiki-card wiki-search-results">
  36. @foreach ($results as $result)
  37. <x-wiki.search-result-card :result="$result" :lang="$lang" />
  38. @endforeach
  39. </div>
  40. {{-- 分页 --}}
  41. @if ($pagination['last_page'] > 1)
  42. <x-wiki.pagination
  43. :pagination="$pagination"
  44. routeName="library.search"
  45. :queryParams="array_filter([
  46. 'q' => $query,
  47. 'lang' => $lang,
  48. 'category' => $category !== 'all' ? $category : null,
  49. ])" />
  50. @endif
  51. @else
  52. <div class="wiki-card">
  53. <x-ui.empty-state
  54. title="未找到相关条目"
  55. desc="请尝试其他关键词" />
  56. </div>
  57. @endif
  58. @endsection
  59. @section('wiki-sidebar')
  60. {{-- 分类筛选 --}}
  61. @isset($filters)
  62. @foreach ($filters as $key=>$filter)
  63. <div class="wiki-sidebar-section">
  64. <div class="wiki-sidebar-title">按{{ $key }}筛选</div>
  65. <ul class="wiki-cat-list">
  66. <li>
  67. <a href="{{ route('library.search', ['q' => $query]) }}"
  68. class="{{ $category === 'all' ? 'active' : '' }}">
  69. 全部
  70. </a>
  71. </li>
  72. @foreach ($filter['buckets'] as $bucket)
  73. <li>
  74. <a href="{{ route('library.search', ['q' => $query, $key => $bucket['key']]) }}"
  75. class="{{ $category === $bucket['key'] ? 'active' : '' }}">
  76. {{ $bucket['key'] }}
  77. <span class="wiki-cat-count">{{ $bucket['doc_count'] }}</span>
  78. </a>
  79. </li>
  80. @endforeach
  81. </ul>
  82. </div>
  83. @endforeach
  84. @endisset
  85. {{-- 近似词条(无结果时显示) --}}
  86. @if (count($results) === 0 && $query)
  87. <div class="wiki-sidebar-section">
  88. <div class="wiki-sidebar-title">你可能在找</div>
  89. <ul class="wiki-related-list">
  90. <li>
  91. <a href="{{ route('library.search', ['q' => substr($query, 0, -1), 'lang' => $lang]) }}">
  92. {{ substr($query, 0, -1) }}
  93. </a>
  94. </li>
  95. </ul>
  96. </div>
  97. @endif
  98. @endsection
  99. @section('wiki-sidebar-left')
  100. <div class="wiki-sidebar-section">
  101. <div class="wiki-sidebar-title">分类浏览</div>
  102. <ul class="wiki-cat-list">
  103. <li>
  104. <a href="{{ route('library.search', ['q' => $query]) }}"
  105. class="{{ $category === 'all' ? 'active' : '' }}">
  106. 全部
  107. </a>
  108. </li>
  109. @foreach ($types as $type)
  110. <li>
  111. <a href="{{ route('library.search', ['q' => $query,'resource_type' => $type['slug']]) }}"
  112. class="{{ (request('resource_type', 'all') === $type['slug']) ? 'active' : '' }}">
  113. {{ $type['label'] }}
  114. @if(isset($type['count']))
  115. <span class="wiki-cat-count">{{ $type['count'] }}</span>
  116. @endif
  117. </a>
  118. </li>
  119. @endforeach
  120. </ul>
  121. </div>
  122. @endsection