airdev / blog

此包最新版本(v1.3)没有可用的许可证信息。

Airdev应用程序的博客

v1.3 2021-08-17 09:25 UTC

This package is auto-updated.

Last update: 2024-09-17 16:34:35 UTC


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