|
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
use App\Services\LiquidRenderer;
|
|
use App\Services\LiquidRenderer;
|
|
use App\Models\DistVideo ;
|
|
use App\Models\DistVideo ;
|
|
|
|
+use App\Models\DistVideoCategory ;
|
|
class VideoController extends Controller
|
|
class VideoController extends Controller
|
|
{
|
|
{
|
|
protected $liquidRenderer;
|
|
protected $liquidRenderer;
|
|
@@ -25,16 +26,69 @@ class VideoController extends Controller
|
|
return $this->liquidRenderer->render('videos.index', ['videos' => $videos]);
|
|
return $this->liquidRenderer->render('videos.index', ['videos' => $videos]);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * Display the specified video.
|
|
|
|
- *
|
|
|
|
- * @param int $id
|
|
|
|
- * @return \Illuminate\Http\Response
|
|
|
|
- */
|
|
|
|
- public function show($id)
|
|
|
|
|
|
+ public function category($slug)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 获取分类信息
|
|
|
|
+ $category = DistVideoCategory::findOrFail($slug);
|
|
|
|
+ // 获取分类下的所有产品,并按 is_pinned 排序,然后进行分页
|
|
|
|
+ $videos = DistVideo::where('category_id', $category->id)
|
|
|
|
+ ->where('dist_id', getDistId())
|
|
|
|
+ ->where('enabled', 1)
|
|
|
|
+
|
|
|
|
+ ->orderBy('order', 'desc') // 按 is_pinned 降序排序
|
|
|
|
+ ->paginate(12);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 创建分页数据结构
|
|
|
|
+ $paginator = [
|
|
|
|
+ 'previous_page' => $videos->previousPageUrl() ? true : false, // 是否有上一页
|
|
|
|
+ 'previous_page_url' => $videos->previousPageUrl(), // 上一页的 URL
|
|
|
|
+ 'next_page' => $videos->nextPageUrl() ? true : false, // 是否有下一页
|
|
|
|
+ 'next_page_url' => $videos->nextPageUrl(), // 下一页的 URL
|
|
|
|
+ 'current_page' => $videos->currentPage(), // 当前页
|
|
|
|
+ 'total_pages' => $videos->lastPage(), // 总页数
|
|
|
|
+ 'pages' => range(1, $videos->lastPage()), // 页码数组
|
|
|
|
+ 'page_url' => array_combine(
|
|
|
|
+ range(1, $videos->lastPage()),
|
|
|
|
+ array_map(fn($page) => $videos->url($page), range(1, $videos->lastPage()))
|
|
|
|
+ ), // 每页的 URL
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ // 构建导航数据 开始
|
|
|
|
+ $breadcrumbs = [
|
|
|
|
+ [
|
|
|
|
+ 'url' => '/',
|
|
|
|
+ 'name' => 'Home',
|
|
|
|
+ ]
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ $breadcrumbs[] = [
|
|
|
|
+ 'url' => '#',
|
|
|
|
+ 'name' => 'Video',
|
|
|
|
+ ];
|
|
|
|
+ $breadcrumbs[] = [
|
|
|
|
+ 'url' => '#',
|
|
|
|
+ 'name' => $category->name,
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ // 渲染模板并传递数据
|
|
|
|
+ return $this->liquidRenderer->render('videos_categories.liquid', [
|
|
|
|
+ 'category' => $category, // 分类名称
|
|
|
|
+ 'videos' => $videos, // 分类下的产品
|
|
|
|
+ 'paginator' => $paginator, // 分页信息
|
|
|
|
+ 'breadcrumbs' => $breadcrumbs,
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public function detail($slug)
|
|
{
|
|
{
|
|
|
|
|
|
- $video = DistVideo::findOrFail($id);
|
|
|
|
|
|
+ $video = DistVideo::where('dist_id', getDistId())->where('slug', $slug)->orWhere('id', $slug)->first();
|
|
|
|
+
|
|
|
|
|
|
// 构建导航数据 开始
|
|
// 构建导航数据 开始
|
|
$breadcrumbs = [
|
|
$breadcrumbs = [
|
|
@@ -47,7 +101,7 @@ class VideoController extends Controller
|
|
$category=$video->distVideoCategory;
|
|
$category=$video->distVideoCategory;
|
|
|
|
|
|
$breadcrumbs[] = [
|
|
$breadcrumbs[] = [
|
|
- 'url' => "/videos/{$category->name}",
|
|
|
|
|
|
+ 'url' => '#',
|
|
'name' => $category->name,
|
|
'name' => $category->name,
|
|
];
|
|
];
|
|
|
|
|
|
@@ -56,6 +110,12 @@ class VideoController extends Controller
|
|
'name' => $video->title,
|
|
'name' => $video->title,
|
|
];
|
|
];
|
|
|
|
|
|
- return $this->liquidRenderer->render('videos.show', ['video' => $video, 'breadcrumbs' => $breadcrumbs]);
|
|
|
|
|
|
+
|
|
|
|
+ return $this->liquidRenderer->render('videos_detail.liquid',
|
|
|
|
+ [
|
|
|
|
+ 'video' => $video,
|
|
|
|
+ // 'csrf_token' => csrf_token(),
|
|
|
|
+ 'breadcrumbs' => $breadcrumbs,
|
|
|
|
+ ]);
|
|
}
|
|
}
|
|
}
|
|
}
|