feat: 文章/分类/评论关联细节完善

- 文章列表:会员插件注入「付费」徽章列(会员/付费¥xx,停插件即消失)
- 分类:真实文章数(withCount)、名称点击跳文章列表并按分类筛选(ListPosts booted 预置筛选)
- 分类:新增封面(medialibrary)+ 介绍(description 字段/表单);前台分类页顶部展示介绍区;SEO description + BreadcrumbList 结构化数据(GEO)
- 文章编辑:MarkdownEditor 内容区加大(26rem);文章编辑页新增「评论」关系管理页(可审/拒)
- 评论列表:文章列带摘要
- 三套主题补 .category-intro 样式
- 测试更新(付费徽章列)
This commit is contained in:
ak
2026-08-12 22:44:16 +08:00
parent a22175d5b7
commit 5f74dd76e4
18 changed files with 276 additions and 34 deletions
+12 -2
View File
@@ -2,22 +2,25 @@
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
class Category extends Model
class Category extends Model implements HasMedia
{
use HasFactory;
use InteractsWithMedia;
protected $fillable = [
'name',
'slug',
'display_order',
'post_count',
'description',
];
public function posts(): HasMany
@@ -29,4 +32,11 @@ class Category extends Model
{
return route('category.show', $this->slug ?? $this->id);
}
public function registerMediaCollections(): void
{
$this->addMediaCollection('cover')
->useDisk(\App\Support\MediaDisk::name())
->singleFile();
}
}