daniel-cintra / modular-blog
模块化应用博客模块。
Requires
- cviebrock/eloquent-sluggable: ^11.0
- daniel-cintra/modular: ^0.3.0
Requires (Dev)
- laravel/pint: ^1.13
- orchestra/testbench: 9.x-dev
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Modular的博客模块
Modular博客模块是向使用Modular项目构建的应用程序添加博客的全面解决方案。
博客模块的CMS(内容管理系统)端具有以下功能
- 帖子管理
- 分类管理
- 标签管理
- 作者管理
您可以使用功能齐全的WYSIWYG编辑器轻松创建帖子,并通过简单直观的界面创建、编辑和删除帖子、分类、标签和作者,同时还可以通过发布日期管理帖子的状态和可见性。
博客模块的公共视图提供了以下功能
- 存档选择器:自动按月和年分组帖子,允许用户按特定时间段过滤帖子。
- 标签选择器:允许通过特定标签过滤帖子。默认情况下,仅显示与相关帖子关联的标签。
- 搜索帖子:在模块中集成了简单的搜索功能。
作为一个轻量级但健壮的基础,Modular博客模块提供了对自定义和功能扩展的灵活性(例如帖子评论和评分)。这使得它成为开发人员将全面博客功能集成到应用程序中的多功能工具,满足各种需求。
准备安装Modular博客模块
在安装Modular博客模块之前,请确保完成以下步骤
-
Modular项目安装:确认Modular项目已安装在您的Laravel应用程序中。如果此步骤未完成,请参阅Modular项目的安装指南以获取帮助。
-
站点文件发布:在Modular项目设置完成后,按照文档中的说明发布站点文件。此步骤对于成功集成Modular博客模块至关重要。
现在一切就绪,请继续安装Modular博客模块。
安装
要安装Modular博客模块,您需要使用Composer要求它
composer require daniel-cintra/modular-blog
然后,启动模块安装
php artisan modular:blog-install
此操作会发布必要文件并运行迁移,并提供将默认数据填充到数据库中的选项。
检查npm依赖项
博客模块依赖于Pinia Store npm包。如果您项目中没有安装它,请按照以下步骤操作
1 - 在项目根目录运行
npm install -D pinia
2 - 打开文件resources/js/app.js
并添加Pinia的import { createPinia } from 'pinia'
和.use(createPinia())
代码块。
... import { createPinia } from 'pinia' createInertiaApp({ ... setup({ el, App, props, plugin }) { return createApp({ render: () => h(App, props) }) .use(createPinia()) .use(plugin) ... } })
最终配置步骤
1 - BlogServiceProvider
将BlogServiceProvider
添加到/bootstrap/providers.php
中的提供者数组中
return [ ... Modules\Blog\BlogServiceProvider::class, ];
2 - 后端菜单项
将菜单项添加到resources/js/Configs/menu.js
中的items数组
export default { // Main Navigation - Side Menu items: [ ... { label: 'Blog', permission: 'Blog', children: [ { label: 'Posts', permission: 'Blog: Post - List', icon: 'ri-draft-line', link: route('blogPost.index') }, { label: 'Categories', permission: 'Blog: Category - List', icon: 'ri-folders-line', link: route('blogCategory.index') }, { label: 'Tags', permission: 'Blog: Tag - List', icon: 'ri-price-tag-3-line', link: route('blogTag.index') }, { label: 'Authors', permission: 'Blog: Author - List', icon: 'ri-team-line', link: route('blogAuthor.index') } ] }, ... ] }
3 - 前端
在vite.config.js
中手动将resources-site/js/blog-app.js
条目添加到laravel插件的input
数组
plugins: [ laravel({ input: [ ... 'resources-site/js/blog-app.js' ], refresh: [ ] }), ... ],
按照概述的安装步骤完成后,博客模块现在应该在您的应用程序中完全可用。这标志着设置过程的完成,您现在可以开始使用模块的功能来管理和发布博客内容。
编译资产
要在项目中查看更改,请运行
npm run dev
博客CMS
要访问博客模块的CMS(内容管理系统),使用在您的 config/modular.php
文件中配置的路径在 login-url
键处登录(例如 /admin
)。博客管理链接将列在侧边栏菜单中。
博客站点视图
默认情况下,您可以通过模块注册的 /blog
路由访问博客文章控制器。
博客种子器(可选步骤)
博客模块包括两个内置种子器
-
BlogSeeder:此种子器将
posts
、authors
、categories
和tags
填充到您的数据库中。它还从网络上获取图片以丰富posts
、authors
和categories
。由于它从互联网检索图片,种子过程可能需要几秒钟。种子器内包含进度条指示器,允许您监控操作进度。 -
BlogAclSeeder:此种子器创建与博客模块相关的访问控制列表(ACL)权限。然后可以通过应用程序界面将这些权限与所需的
ACL 角色
关联,从而方便在博客模块中管理用户权限。
您可以选择手动运行种子器或将它们包含在 database/seeders/DatabaseSeeder.php
文件中以便自动执行。这种灵活性允许您根据应用程序的需求调整种子过程,确保博客模块用初始数据填充,或在项目整体数据库种子策略中将必要的ACL权限配置为部分。
将种子器添加到DatabaseSeeder文件中
要将种子器集成到应用程序的种子过程中,请将它们添加到位于 database/seeders
的 DatabaseSeeder.php
文件中。以下是操作方法
- 在
DatabaseSeeder.php
文件顶部导入BlogSeeder
和BlogAclSeeder
。 - 在您的
DatabaseSeeder
的run
方法内部,通过调用各自的run
方法来调用种子器。
此设置确保当您运行数据库种子命令时,BlogSeeder 和 BlogAclSeeder 都会执行,将初始博客数据填充到您的数据库中,并相应地设置ACL权限。
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Modules\Blog\Database\Seeders\BlogAclSeeder; use Modules\Blog\Database\Seeders\BlogSeeder; public function run(): void { $this->call(BlogAclSeeder::class); $this->call(BlogSeeder::class); }
手动执行种子器
要手动运行种子器,请在您的终端中执行以下命令
对于 BlogSeeder
php artisan db:seed --class="Modules\\Blog\\Database\\Seeders\\BlogSeeder"
对于 BlogAclSeeder
php artisan db:seed --class="Modules\\Blog\\Database\\Seeders\\BlogAclSeeder"
这些命令允许您选择性地将博客模块的内容和ACL权限填充到数据库中,提供了一个更可控的设置过程。
许可证
Modular项目是开源软件,根据 MIT许可证 许可。