roelofjan-elsinga / aloia-cms
为Laravel设计的即插式扁平文件CMS。
Requires
- php: >=8.1
- ext-dom: *
- illuminate/console: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
- roelofjan-elsinga/content-to-html-parser: ^0.5
- roelofjan-elsinga/sitemap-generator: ^0.5.1
- spatie/yaml-front-matter: ^2.0
- symfony/yaml: ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- mikey179/vfsstream: ^1.6
- orchestra/testbench: ^7.4
- pestphp/pest: ^1.22
- dev-master
- 4.3.0
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.1
- 3.0.0
- 2.0.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
- 1.0.0-alpha.2
- 1.0.0-alpha.1
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.0
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.1
- 0.12.0
- 0.11.1
- 0.11.0
- 0.10.7
- 0.10.6
- 0.10.5
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-dependabot/composer/symfony/http-kernel-6.2.6
- dev-psalm-integration
This package is auto-updated.
Last update: 2024-09-10 16:37:38 UTC
README
此包包含一个使用文件存储内容的即插式CMS。
有关完整文档,请访问Aloia CMS 文档网站。
安装
您可以通过Composer使用以下命令包含此包
composer require roelofjan-elsinga/aloia-cms
如果您想自定义文件夹结构,则可以通过以下命令发布配置
php artisan vendor:publish --provider="AloiaCms\\AloiaCmsServiceProvider"
创建自定义内容类型
创建自定义内容类型非常简单。您只需创建一个扩展AloiaCms\Models\Model
的类,指定一个$folder_path
,并可选地向$required_fields
添加所需字段。以下是一个示例
namespace App\Models; use AloiaCms\Models\Model; class PortfolioItem extends Model { protected $folder = 'portfolio_items'; protected $required_fields = [ 'name', 'github_url', 'description', ]; }
一旦您有了这样的类,您就可以像“模型使用”部分中描述的那样与之交互
内置模型
有4个内置模型,您可以直接使用,无需额外设置
- 页面
- 文章
- 内容块
- 元标签
当然,您可以像“创建自定义内容类型”部分中描述的那样添加自己的模型。
模型使用
在这个示例中,我们查看其中一个内置内容类型:文章。您可以使用相同的步骤对从"AloiaCms\Models\Model"扩展的所有类执行操作。
要加载在您在config('aloiacms.collection_path')
中指定的文件夹中的“articles”文件夹中的所有文章,您可以使用以下脚本
use AloiaCms\Models\Article; /**@var Article[]*/ $articles = Article::all();
您可以使用它来在页面上显示您的帖子。您也可以使用以下方法加载单个帖子
$post_slug = 'this-post-is-amazing'; $article = Article::find($post_slug);
如果您只想获取所有已发布的帖子,您需要像这样检索它们
$published_articles = Article::published();
要获取每篇文章的原始内容(内容+元数据),您可以使用
$post_slug = 'this-post-is-amazing'; $articles = Article::find($post_slug)->rawContent();
最后,要更新您的文章,您可以运行
use Carbon\Carbon; $post_slug = 'this-post-is-amazing'; Article::find($post_slug) ->setExtension('md') // md is the default, but you can use html as well. ->setMatter([ 'description' => 'This post is about beautiful things', 'is_published' => true, 'is_scheduled' => false, // Either use post_date in setMatter() or setPostDate() 'post_date' => date('Y-m-d') ]) ->setPostDate(Carbon::now()) ->setBody('# This is the content of an article') ->save();
内容块
您可以通过此包管理您网站上的小型内容块。
这些块的内容存储在config('aloiacms.collections_path')
文件夹中的“content_blocks”文件夹中。
您需要将外观注册到您的应用程序中,通过在config/app.php
中的别名中放置以下行
'Block' => \AloiaCms\Facades\BlockFacade::class,
现在您可以在blade视图中使用外观
{!! Block::get('content-file-name') !!}
此外观将在您在config('aloiacms.collections_path')
中指定的文件夹中查找文件。外观将解析文件的內容为HTML以进行渲染。如果找不到文件,将返回空字符串。
注意:您不应该指定传递给Block::get()
的文件名的扩展名。这将被自动解析。
测试
您可以通过在终端中运行./vendor/bin/phpunit
来运行包含的测试。
贡献
如果您想直接贡献到CMS,您可以在本存储库上创建PR。如果您想贡献到文档,您可以在文档存储库上创建PR。