olssonm / ampersand
适用于Laravel项目的即插即用扁平文件markdown博客
Requires
- laravel/framework: ^9|^10|^11
- spatie/sheets: ^1.10
Requires (Dev)
- orchestra/testbench: >=6.15
- phpunit/phpunit: <11
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-22 11:39:39 UTC
README
Ampersand
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() }}
文章对象包含所有前缀属性以及 slug
、date
和 contents
。
{{ $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.index
和 ampersand.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的网站
您使用Ampersand并希望您的网站在这里展示吗?提交一个PR!
许可证
MIT许可证(MIT)。有关更多信息,请参阅 LICENSE.md。
© 2021 Marcus Olsson。