barcodex/kasha-fscms
基于文件系统的Kasha PHP框架的极简CMS
Requires
- php: >=5.3.2
- barcodex/templar: *
- phpunit/phpunit: 4.5.*
This package is not auto-updated.
Last update: 2024-09-28 17:12:42 UTC
README
此库提供基于文件系统的CMS的简单后端。此CMS预期在Kasha框架之上运行,但实际上它只需要非常基本的依赖项,并且不需要完整的Kasha堆栈来运行。
正如其名所示,此库没有数据库依赖项,因此可以在大多数受限制的主机上使用,并且可以轻松地在不同的服务器/操作系统之间移动而无需进行任何更改,所有内容都只是通过操作系统文件管理命令进行复制。
将内容存储在文本文件而不是数据库中的惊人潜在好处是可以在版本控制下存储它。
每篇帖子都是一个序列化的JSON对象,因此可以轻松地提供给像AngularJS这样的基于JSON的前端。
此库仅由一个类组成,即\Kasha\FSCMS\Manager,它负责搜索、添加、删除和编辑帖子(有关更多详细信息,请参阅下面的API部分)。
不要使用此库用于复杂快速增长的系统。
安装
使用Composer安装FSCMS库,将要求添加到项目的composer.json中
{
"require": {
"barcodex/kasha-fscms": "*"
}
}
或从命令行要求
composer require barcodex/kasha-fscms:*
文件夹结构
由于CMS基于文件系统,因此理解文件夹结构非常重要。
当实例化Manager对象时,其构造函数接收CMS根文件夹的地址作为参数。在此根文件夹下,所有数据都包含在其中 - 主要原因当然是“内容”文件夹。所有帖子都存储在这里。由于CMS支持不同类型的帖子,因此“内容”下有与类型数量相同的子文件夹。在每种类型的文件夹中,帖子存储在一个.json文件中。
框架集成者决定帖子对象的架构,但重要的是要知道一些保留字段名称,这些字段由框架内部使用,因此无法描述自定义字段
每篇帖子都有一个元数据集,这些元数据单独存储。为了加快搜索速度,所有帖子的元数据都存储在同一个posts.json文件中。此文件存储在CMS根文件夹内的“元数据”文件夹中,以确保它与内容不混淆。
因此,整个文件夹结构如下所示
\contents
\type1
\id1.json
...
...
\metadata
\posts.json
## API
使用FSCMS库时需要记住的主要事情是,我们需要指定内容的根文件夹。我们在创建Manager类的实例时这样做(在这个例子中,让我们假设控制器脚本想要将帖子存储在其包含目录的cms文件夹中
<?php require_once "vendor/autoload.php"; $manager = new \Kasha\FSCMS\Manager(__DIR__ . '/cms', 1, 'en');
这里的第二个参数是当前用户的ID,第二个是当前语言(我们可以省略这些参数和值,默认情况下仍然使用1和'en')。
创建类实例后,我们可以运行少量公共方法来管理帖子
搜索也很简单 - 目前仅支持精确匹配。没有范围、大于/小于等。
元数据用于加快搜索速度。没有元数据,搜索将始终是对文件的全面扫描,这不是最有效的搜索方式。无论如何,这个库仅适用于非常小的网站,最多有100篇文章 - 在这种情况下,全面扫描与少量元数据和索引文件的组合提供了相当不错的性能。
进一步集成
欢迎任何人在此库的基础上进行分支,并扩展以支持不同的文章类型。由于每篇文章只是一个JSON对象,只要它们不与元数据中使用的保留字段冲突,就完全可以在这个对象中拥有任何字段(参见上面的“文件夹结构”部分)。
API足以构建具有任何所需前端的开源应用。