Initial baseline: LaraBlog core with plugin commerce surface.

Captures the current working tree after theme slots, ArticleAccess, and the payment / paid-content plugins so subsequent work has a reviewable git history.
This commit is contained in:
ak
2026-08-12 01:15:38 +08:00
commit 263b98b218
337 changed files with 31393 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call(DemoBlogSeeder::class);
}
}
+122
View File
@@ -0,0 +1,122 @@
<?php
namespace Database\Seeders;
use App\Domain\Blog\ContentFormat;
use App\Domain\Plugin\PluginManager;
use App\Models\Article;
use App\Models\Category;
use App\Models\Comment;
use App\Models\Link;
use App\Models\Stylevar;
use App\Models\Tag;
use App\Models\User;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
class DemoBlogSeeder extends Seeder
{
public function run(): void
{
Role::findOrCreate('admin');
Role::findOrCreate('editor');
Role::findOrCreate('member');
$plugins = app(PluginManager::class);
$plugins->syncDiscoveredPlugins();
try {
$plugins->enable('larablog/ai-comment-moderation');
} catch (\Throwable) {
//
}
$admin = User::query()
->where('email', 'admin@larablog.test')
->orWhere('username', 'admin')
->first();
if ($admin === null) {
$admin = User::query()->create([
'email' => 'admin@larablog.test',
'name' => 'Admin',
'username' => 'admin',
'password' => 'password',
]);
} else {
$admin->forceFill([
'email' => 'admin@larablog.test',
'name' => 'Admin',
'username' => 'admin',
'password' => 'password',
])->save();
}
$admin->assignRole('admin');
$category = Category::query()->updateOrCreate(
['id' => 1],
['name' => '随笔', 'display_order' => 0, 'articles_count' => 2]
);
$html = Article::query()->updateOrCreate(
['id' => 1],
[
'category_id' => $category->id,
'user_id' => $admin->id,
'title' => '欢迎使用 LaraBlogHTML 样例)',
'content' => '<p>这是一篇 <strong>HTML</strong> 正文,来自旧站风格。</p><p>你可以在后台切换主题、启停插件,并用 Markdown 继续写作。</p>',
'content_format' => ContentFormat::HTML,
'description' => 'HTML 格式演示',
'published_at' => now()->subDay(),
'visible' => true,
'stick' => true,
]
);
$md = Article::query()->updateOrCreate(
['id' => 2],
[
'category_id' => $category->id,
'user_id' => $admin->id,
'title' => 'Markdown 才是未来',
'content' => "# Hello Markdown\n\n这是 **Markdown** 正文。\n\n- 主题可切换\n- 插件可启停\n- SEO / llms.txt 已就绪\n",
'content_format' => ContentFormat::MARKDOWN,
'description' => 'Markdown 格式演示',
'published_at' => now(),
'visible' => true,
]
);
$tag = Tag::query()->updateOrCreate(['name' => 'larablog'], ['use_count' => 2]);
$tag->articles()->syncWithoutDetaching([$html->id, $md->id]);
Comment::query()->updateOrCreate(
['id' => 1],
[
'article_id' => $md->id,
'author' => '访客',
'content' => '看起来不错',
'moderation_status' => Comment::STATUS_APPROVED,
'published_at' => now(),
]
);
Link::query()->updateOrCreate(
['id' => 1],
[
'name' => 'Laravel',
'url' => 'https://laravel.com',
'note' => 'PHP 框架',
'visible' => true,
]
);
Stylevar::query()->updateOrCreate(
['id' => 1],
[
'title' => 'sidebar_note',
'value' => 'LaraBlog · 现代博客引擎',
'visible' => true,
]
);
}
}