rockstarcode / markdb
Markdown 平面文件数据库
Requires
- php: >=5.5.0
- erusev/parsedown: ^1.6
- nesbot/carbon: ~1.14
- symfony/yaml: >=v2.7.6
Requires (Dev)
- phpunit/phpunit: 4.8.*
This package is not auto-updated.
Last update: 2024-09-28 18:31:46 UTC
README
MarkDB - 为博客/CMS提供的Markdown数据库
MarkDB是一个引擎,允许您使用Markdown + Yaml文件作为CMS或博客的数据点。
目标是让您将内容创作与控制应用程序设计的平台分开。这允许您以任何您想要的方式编写博客或项目,并将内容作为数据库驱动的附加内容。
这个项目起源于我在RockstarCode的博客,我不想通过像OctoberCMS或Wordpress这样的CMS设计我的网站,这会迫使我通过它们的界面撰写帖子,我也不想将内容存储在需要同步的数据库中。
我选择的解决方案是创建一个平面文件.git仓库来存储我的文章,而MarkDB是收集和管理帖子的接口。
这允许我编写帖子并在本地预览它们,然后再通过简单的git push将它们推送到不同的环境。
特性
- 漂亮的URL别名来标识文件或目录
- 按文件/目录自定义设置
- 使用git仓库来版本控制您的数据点
- 通过属性简单搜索文章
- [未来] - 缓存
库 vs 文章
MarkDB将根据给定的$base路径查找文件和目录
从那里,它将提供一个库(目录)和文章(文件)列表
库包含子库和所有子文章的集合,允许您在需要时遍历以创建导航。例如,您可能有一个包含各种主题导航的基础博客[牢骚,教程,个人想法]。您的基础新MarkDB('/path/to/blog/data')将包含3个库:牢骚、教程、个人想法,您可以使用它们提取独特数据或建立链接
文章包含YAML & MarkDown中的文件信息,您可以使用它们自定义数据和展示。
--- title: Article Title author: Authr Name author_email: Author@Email.com authdeck: author.name --- ### Hello World This is my article
位于---
之间的所有内容将被处理为yaml,位于第二个---
以下的内容将被处理为markdown
要求
LibYaml & pecl yaml for PHP更新到symfony/yaml以移除依赖- Carbon for 数据时间
安装
composer require "rockstarcode/markdb:dev-master"
使用
$MarkDb = new MarkDB\MarkDB('/path/to/files/','base/path/to/form/relative/slugs'); $slug = 'path/to/some/article'; $article = $MarkDb->get($slug); # (object) Article $article->slug # url friendly path that identifies article in MarkDB $article->{$property} # properties extracted from YAML processing of the article $article->content() # processed MarkDown of content of article $article->read_time() # helper to calculate words in article and average read time $article->summary() # Extract certain percentage of content for preview $find = $MarkDb->where(['author'=>'Author Name','category'=>'Books Ive Read']); (Array)[Articles] foreach($MarkDb->libraries as $library){ $library->articles # list of articles within library $library->libraries # list of child libraries $library->index # list of all libraries/articles by slug $library->slug # slug which identifies library }
Laravel
MarkDB附带一个Laravel 5.* Service Provider,它将为您的应用程序添加MarkDB作为外观
# .env MARKDB_PATH=/path/to/blog-cms # config/app.php 'providers'=>[ ... \MarkDb\Support\Laravel\MarkDBServiceProvider::class, ], 'aliases' => [ ... 'MarkDb' => \MarkDB\Support\Laravel\MarkDBFacade::class, ]
Laravel中查看文章的示例路由
#routes.php Route::get('/posts, ['as'=>'posts','uses'=>function($slug){ $markdb= app()->make('markdb'); $articles = $cms->articles( /*optional*/ ['page'=>1, 'limit'=>10]); return view('index',['articles'=>$articles]); }])->where('slug','(.*)'); Route::get('/posts/{slug}', ['as'=>'post','uses'=>function($slug){ $article = \MarkDB::get($slug); return view('article',['article'=>$article]); }])->where('slug','(.*)');
教程
我创建了一个简单的Lumen + MarkDB教程,它引导您通过基本使用步骤
许可证
在MIT许可证下发布,您可以自由使用、修改、贡献更改。