olssonm/ampersand

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

v1.3 2024-03-22 10:35 UTC

This package is auto-updated.

Last update: 2024-09-22 11:39:39 UTC


README

Ampersand – Blogging for Laravel

Ampersand

Latest Version on Packagist Build Status Software License

Ampersand 是一个为您的Laravel项目提供的即插即用扁平文件markdown博客工具。您可以在不设置表格、模型或自己的扁平文件系统的情况下轻松创建文章或博客部分。

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

注意:此包旨在快速简便地设置和使用 – 不要期望它是一个功能齐全的内容管理系统。

🛠 安装和配置

要求包

$ composer require olssonm/ampersand

发布配置文件和视图

$ php artisan vendor:publish --provider="Olssonm\Ampersand\AmpersandServiceProvider"

config/ampersand.php 中,您现在可以按需自定义设置。视图位于 resources/views/vendor/ampersand

✏️ 编写文章

文件名格式

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

缩略名将决定文章在哪个URL上可用。

Artisan命令

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

php artisan ampersand:new

YAML前缀

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

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

My post in **Markdown**

🖥 显示文章

此包附带两个视图;索引视图和显示视图(用于单个文章)。它们位于安装后的 /resources/vendor/views/ampersand,并且可以完全自定义。

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://amazingimages.com/my-cover.jpg

检索应用中的文章

您可以使用Post模型在应用的任何地方检索和过滤文章集合

use Olssonm\Ampersand\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();

🚦 路由

包的路由是 ampersand.indexampersand.show

{{ route('ampersand.index') }} // http://mysite.test/blog

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

定义自己的路由

默认路由已使用ampersand名称和默认web中间件组注册。

如果您有任何原因想要覆盖此操作(例如,如果您的文章在登录之后或在您不使用标准web中间件组的情况下),您可以将ampersand.php中的register_routes设置为false,然后自己注册它们

// /routes/web.php
use Olssonm\Ampersand\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

看看它的实际应用

使用Ampersand的网站

designering.se/blogg

您使用Ampersand并希望您的网站在这里展示吗?提交一个PR!

许可证

MIT许可证(MIT)。有关更多信息,请参阅 LICENSE.md

© 2021 Marcus Olsson