ingress-it-solutions/ultim8e-blogger

适用于您的Laravel项目的即插即用扁平文件Markdown博客

dev-main 2023-02-18 10:59 UTC

This package is not auto-updated.

Last update: 2024-09-29 16:31:30 UTC


README

适用于您的Laravel项目的即插即用扁平文件Markdown博客工具。在您的网站上创建文章或博客部分,无需设置表格、模型或自己的扁平文件系统。

基于spatie/sheets构建,用于处理Markdown文件和YAML前序解析。

注意:此软件包旨在快速、轻松设置和使用 – 不要期望完整的CMS功能。

🛠 安装和配置

需要包

$ composer require ingress-it-solutions/ultim8e-blogger

发布配置文件和视图

$ php artisan vendor:publish --provider="IngressITSolutions\Ultim8eBlogger\Ultim8eBloggerServiceProvider"

config/ultim8e-blogger.php 中,您现在可以自定义设置以符合您的喜好。视图位于 resources/views/vendor/ultim8e-blogger

✏️ 写文章

文件名格式

所有文章应存储在您的 posts_path 目录中,文件名为 2021-03-30.my-post.md,即 {date:Y-m-d}.{slug}.md

slug 决定了文章将在哪个URL下可用。

Artisan命令

您可以通过Artisan命令快速创建新文章

php artisan ultim8e-blogger:new

YAML前序

文章可以通过YAML前序包含任意数量的属性

---
title: This is a new post
date: '2020-01-01 20:00:01'
cover: https://ultim8e.com/my-cover.jpg
---

My post in **Markdown**

🖥 显示文章

此软件包包含两个视图;索引视图和显示视图(用于单篇文章)。安装后,它们位于 /resources/vendor/views/ultim8e-blogger,并且可以完全自定义。

index.blade.php 中,通过 $posts 变量可以获得文章对象的集合。它的工作方式类似于标准Eloquent集合。

@foreach ($posts as $post)
    <h2>{{ $post->title }}</h2>
    <div>
        {!! $post->contents !!}
    </div>
@endforeach

还有分页链接可用

{{ $posts->links() }}

文章对象包含所有前序属性以及 slugdatecontents

{{ $post->slug }} // my-post
{{ $post->date->format('Y-m-d') }} // 2021-03-30
{{ $post->contents }} // <p>My post in <strong>markdown</strong></p>
{{ $post->cover }} // https://ultim8e.com/my-cover.jpg

在您的应用程序中检索文章

您可以在应用程序的任何位置使用Post模型检索文章并过滤它们作为集合

use IngressITSolutions\Ultim8eBlogger\Models\Post;

// Reject posts where is_draft is true or has a date in the future
$posts = Post::all()->reject(function ($item) {
  return $item->is_draft || $post->date->lessThan(now());
});

默认情况下,文章按降序日期排序,因此要获取最新文章

// Get first post
$post = Post::all()->first();

🚦 路由

软件包路由为 ultim8e-blogger.indexultim8e-blogger.show

{{ route('ultim8e-blogger.index') }} // http://mysite.test/blog

@foreach ($posts as $post)
    // The show-route accepts either a IngressITSolutions\Ultim8eBlogger\Models\Post-object
    // or a string; the post's slug
    {{ route('ultim8e-blogger.show', $post) }} // http://mysite.test/blog/post-slug
    {{ route('ultim8e-blogger.show', 'post-slug') }} // http://mysite.test/blog/post-slug
@endforeach

定义自己的路由

默认路由使用ultim8e-blogger名称和默认web中间件组进行注册。

如果您出于任何原因想要覆盖此(例如,如果您希望文章位于登录之后,或者您不使用标准的web中间件组),您可以将ultim8e-blogger.php中的register_routes设置为false,然后自行注册它们

// /routes/web.php
use IngressITSolutions\Ultim8eBlogger\Http\Controllers\PostController;

Route::group(['middleware' => 'can:read', function() {
    Route::get('/articles', [PostController::class, 'index'])->name('article.index');
    Route::get('/articles/{post}', [PostController::class, 'show'])->name('article.show');
}]);

// A link to the blog index in some view
{{ route('article.index') }} // http://mysite.test/articles

看看实际效果

使用Ultim8eBlogger的野生动态网站

Ingress IT Solutions已经开发了各种Laravel产品,我们希望将所有这些产品都集中在一个屋檐下,因此我们决定推出Ultim8e Apps

此Ultim8eBlogger软件包目前正在Ultim8e.com中使用

您使用Ultim8eBlogger并希望您的网站在此处展示?提交PR!

许可

MIT许可(MIT)。请参阅LICENSE.md获取更多信息。

© 2023 Ingress IT Solutions