فهرست منبع

支持子目录下面的书列表

visuddhinanda 1 روز پیش
والد
کامیت
27c8b211c0

+ 25 - 2
api-v13/app/Http/Controllers/Library/TipitakaController.php

@@ -79,7 +79,16 @@ class TipitakaController extends Controller
             $categories,
             fn($cat) => $cat['parent_id'] == $id
         ));
-
+        if (count($subCategories) === 0 && !$request->has('book')) {
+            $paliBooks = $this->getPaliBooks($categories, $id);
+            foreach ($paliBooks as  $value) {
+                $subCategories[] = [
+                    'id' => $id,
+                    'name' => $value->text,
+                    'book' => "{$value->book}-{$value->paragraph}"
+                ];
+            }
+        }
         $allNames = array_map(fn($item) => $item['name'], $subCategories);
 
         // 去重
@@ -119,6 +128,9 @@ class TipitakaController extends Controller
             'author' => $selectedAuthor,
             'sort'   => $selectedSort,
         ];
+        if ($request->has('book')) {
+            $selected['book'] = $request->get('book');
+        }
 
         // ── 书籍列表(过滤+排序,真实实现替换此处) ──────────────
         $categoryBooks = $this->getBooks($categories, $id, $selected);
@@ -275,10 +287,21 @@ class TipitakaController extends Controller
         }
         return $chapters;
     }
+    private function getPaliBooks(array $categories, string $id)
+    {
+        $chapters = $this->getBooksIdInCat($categories, $id);
+
+        $books = PaliText::whereIns(['book', 'paragraph'], $chapters)->get();
+        return $books;
+    }
     private function getBooks(array $categories, ?string $id, array $filters)
     {
         //根据分类获取书号
-        $chapters = $this->getBooksIdInCat($categories, $id);
+        if (isset($filters['book'])) {
+            $chapters = [explode('-', $filters['book'])];
+        } else {
+            $chapters = $this->getBooksIdInCat($categories, $id);
+        }
 
         $table = ProgressChapter::with('channel.owner')
             ->whereHas('channel', function ($query) use ($filters) {

+ 2 - 2
api-v13/resources/views/library/tipitaka/category.blade.php

@@ -151,9 +151,9 @@
             <div class="wiki-card tipitaka-subcategories">
                 <div class="tipitaka-subcategory-grid">
                     @foreach($subCategories as $sub)
-                    <a href="{{ route('library.tipitaka.category', ['id' => $sub['id']]) }}"
+                    <a href="{{ route('library.tipitaka.category', array_filter(['id' => $sub['id'], 'book' => $sub['book'] ?? null])) }}"
                         class="tipitaka-subcategory-item">
-                        <i class="ti ti-folder tipitaka-subcategory-icon" aria-hidden="true"></i>
+                        <i class="ti {{ !empty($sub['book']) ? 'ti-book' : 'ti-folder' }} tipitaka-subcategory-icon" aria-hidden="true"></i>
                         <span class="tipitaka-subcategory-name">{{ $sub['name'] }}</span>
                     </a>
                     @endforeach