search.blade.php 4.3 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 . '" ' . __('library.search_results_title') . ' · WikiPāli' : __('library.search_title') . ' · 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="__('library.search_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. {{ __('library.searching') }} <strong>「{{ $query }}」</strong>
  23. @if ($pagination['total'] > 0)
  24. {{ __('library.results_found_prefix') }} <strong>{{ $pagination['total'] }}</strong> {{ __('library.results_found_suffix') }}
  25. @if ($pagination['last_page'] > 1)
  26. {{ __('library.page_prefix') }} {{ $pagination['current_page'] }} / {{ $pagination['last_page'] }} {{ __('library.page_suffix') }}
  27. @endif
  28. @else
  29. {{ __('library.no_results') }}
  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="__('library.no_results')"
  55. :desc="__('library.try_other_keywords')" />
  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">{{ __('library.filter_by') }}{{ $key }}{{ __('library.filter') }}</div>
  65. <ul class="wiki-cat-list">
  66. <li>
  67. <a href="{{ route('library.search', ['q' => $query]) }}"
  68. class="{{ $category === 'all' ? 'active' : '' }}">
  69. {{ __('library.all') }}
  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">{{ __('library.did_you_mean') }}</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">{{ __('library.browse_categories') }}</div>
  102. <ul class="wiki-cat-list">
  103. <li>
  104. <a href="{{ route('library.search', ['q' => $query]) }}"
  105. class="{{ $category === 'all' ? 'active' : '' }}">
  106. {{ __('library.all') }}
  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