airdev / blog
此包最新版本(v1.3)没有可用的许可证信息。
Airdev应用程序的博客
v1.3
2021-08-17 09:25 UTC
Requires
- php: ^7.3|^8.0
- airdev/medias: ^v1.3
- ebess/advanced-nova-media-library: ^3.6
- eminiarts/nova-tabs: ^1.4
- khalin/nova-link-field: ^1.2
- kraftbit/nova-tinymce5-editor: ^1.0
- laravel/framework: ^8.0.0
- simplesquid/nova-advanced-number-field: ^2.0
- spatie/laravel-medialibrary: ^9.0.0
README
一个快速提供博客系统的包。
它仅适用于Airdev基于Web的项目。
安装
composer require airdev/blog
接下来,将其添加到Laravel的package providers中config/app.php
/* * Package Service Providers... */ Airdev\Blog\AirdevBlogProvider::class,
发布迁移,如有需要,配置它,然后迁移。
php artisan vendor:publish --tag=airdev-blog-migrations php artisan migrate
发布TiniMCE配置文件
php artisan vendor:publish --provider="Kraftbit\NovaTinymce5Editor\FieldServiceProvider"
在此处添加您的TinyMCE云API密钥,或将其添加到.env文件中,如下所示
TINYMCE_API_KEY=your-key-here
然后,发布airdev/blog配置文件
php artisan vendor:publish --tag=airdev-blog-config
您现在可以编辑一些配置。
return [ 'user-nova-resource' => \App\Nova\User::class, 'user-model' => \App\Models\User::class, // Preview url for posts // for exemple : example.com/blog/your-post-slug 'blog-preview-route' => '/blog', // Str::limit to shorten the intro text // If set to 'null', it will not short it 'blog_intro_limit' => 200, ];
使用方法
您现在可以通过Nova界面访问博客资源。
您现在可以创建获取文章的路由。别忘了创建视图。
Route::get('/blog', function() { // If no number of posts specified, it will take all posts return view('blog', ['posts' => AirdevPostController::get_posts(5)]); })->name('blog'); Route::get('/blog/{slug}', function($slug) { $post = AirdevPostController::get_post_by_slug($slug); // Post doesn't exists if ($post == null) abort(404); // Post exists but isn't active if (!$post->isPublishable) return redirect(route('blog'), 302); return view('post', ['post' => $post]); })->name('blog.post');
列出所有可用文章的示例
@foreach ($posts as $post) <div class="col-4"> <div class="card"> <x-airdev-picture :media="$post->getFirstMedia('post_image')" slug="{{ $post->slug }}" class="card-img-top"></x-airdev-picture> <div class="card-body"> <h3 class="card-title">{{ $post->title }}</h3> <div class="card-text">{{ $post->intro }}</div> <a href="{{ route('blog.post', $post->slug) }}">En savoir plus</a> </div> </div> </div> @endforeach