den1n / nova-blog
Laravel Nova 博客资源。
Requires
- php: >=7.2
- laravel/scout: ^v8.0
- pmatseykanets/laravel-scout-postgres: ^v7.0
README
Laravel Nova 博客资源。
安装
使用Composer安装包。
composer require den1n/nova-blog
发布包资源。
php artisan vendor:publish --provider="Den1n\NovaBlog\ServiceProvider"
这将发布以下资源
- 配置文件
config/nova-blog.php
- 迁移文件
database/migrations/*_create_blog_tables.php
- 翻译
resources/lang/vendor/nova-blog
- 视图
resources/views/vendor/nova-blog
- JavaScript 资产
resources/js/vendor/nova-blog
- CSS 资产
resources/sass/vendor/nova-blog
在 Vue
初始化之前,将包提供的 noba-blog
组件添加到文件 resources\js\app.js
中。
require('./vendor/nova-blog');
将包提供的 noba-blog
样式添加到文件 resources\sass\app.scss
中。
@import './vendor/nova-blog';
迁移数据库。
php artisan migrate
将 Den1n\NovaBlog\Tool
类的实例添加到您的 App\Providers\NovaServiceProvider::tools()
方法中,以在您的 Nova 资源中显示博客文章、评论、分类和标签。
/** * Get the tools that should be listed in the Nova sidebar. * * @return array */ public function tools() { return [ new \Den1n\NovaBlog\Tool, ]; }
服务博客文章
将此路由追加到您的 routes/web.php
文件中。
Route::novaBlogRoutes();
您可以使用前缀定义路由。
Route::novaBlogRoutes('/blog');
您可以使用 Laravel route
助手获取现有帖子的 URL。
use \Den1n\NovaPosts\Models\Post; $url = route('nova-blog.post', [ 'post' => Post::find(1), ]); // Or you can pass a post slug. $url = route('nova-blog.post', [ 'post' => 'my-post-slug', ]);
默认模板
博客控制器将使用 default
模板提供帖子。
模板发布到视图目录 resources/views/vendor/nova-blog/templates/default.blade.php
。
模板处理时会接收这些变量
- $post:
Post
模型的实例。 - $sidebarPosts:
Post
模型的集合。 - $sidebarCategories:
Category
模型的集合。 - $sidebarTags:
Tag
模型的集合。
您可以自由修改 default
模板。
创建自定义模板
首先在 resources/views/vendor/nova-blog/templates
目录中创建一个自定义 blade 模板。
例如, rich.blade.php
。
然后在配置文件 config/nova-blog.php
中注册它。
/** * Array of templates used by controller. */ 'templates' => [ // ... [ 'name' => 'rich', 'description' => 'A rich template', ], ],
之后,您的自定义模板将在创建博客文章或更新现有文章时可供选择。
所见即所得编辑器
默认情况下,包使用 Nova 提供的默认所见即所得编辑器 (Trix 字段)。
您可以替换默认编辑器。例如,使用 froala/nova-froala-field
。
为此,安装该包 并更新 config/nova-pages.php
文件中的 editor
设置。
/** * Settings for WYSIWYG editor. */ 'editor' => [ /** * Nova field class name. */ 'class' => \Froala\NovaFroalaField\Froala::class, /** * Options which will be applied to te field instance. * Key: name of field method. * Value: list of method arguments. */ 'options' => [ 'withFiles' => ['public', 'nova-pages'], // Froala options. 'options' => [[ 'heightMax' => 800, 'heightMin' => 300, ]], ], ],
截图
帖子
帖子表单
帖子详情
博客示例
贡献
- 分支。
- 创建您的功能分支:
git checkout -b my-new-feature
。 - 提交您的更改:
git commit -am 'Add some feature'
。 - 推送到分支:
git push origin my-new-feature
。 - 提交拉取请求。
支持
如果您需要任何支持,请在此存储库中打开一个问题。
许可
MIT