webee-online / g-cms
以Git仓库作为主要内容数据存储的简单CMS
Requires
- php: ^8.0
- league/commonmark: ^1.5
- symfony/config: ^6.0
- symfony/console: ^6.0
- symfony/filesystem: ^6.0
- symfony/finder: ^6.0
- twig/string-extra: ^3.3
- twig/twig: ^3.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.5
- kahlan/kahlan: ^5.2
- phpstan/phpstan: ^1.4
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-09-23 09:13:16 UTC
README
gCMS - 基于Git的CMS
正如标题所述 - 这是一个将您想提供的内容存储在Git仓库中的CMS。
想法背后
一段时间以来,我一直在考虑回报IT世界。不仅是因为它给了我被称为互联网的无限知识源泉。更重要的是,我想向所有为它做出贡献的伟大人物说“谢谢”。这就是为什么我想开始一个博客/页面(无论你叫它什么都可以)。一个我可以与他人分享我所学到的知识的地方。主要是与IT行业的新手。我在这方面转了几个圈。首先是WordPress(一件了不起的事情,在许多项目中都使用了它)。然后是静态页面。正如你所见,我在寻找适合我的解决方案时来回跳跃。面对现实 - 我是个懒虫。但使用它总是太复杂,太耗时,或者太无聊,或者缺少必要的功能。如果一切都很好 - 我发现它太贵了(向Atlassian的各位致以诚挚的问候;)).
有一天 - 正好是2020年7月11日(对于来自美国的人来说是d/m/yyyy) - 我突然意识到,将内容发布到网络上在本质上与在代码中添加新功能没什么区别。那么为什么不在最喜欢的编辑器/IDE中创建内容,完成后再将其提交到仓库呢?
这就是这个重要的时刻 - 使用Git作为内容存储。
它是如何工作的?
gCMS是一个工具,它读取特定类型的输入文件夹(例如:*.page.md, *.category.md等)。对于每一个,它将根据定义的模板创建一个静态HTML(或其他)页面。这样的静态文件可以被上传到任何可以托管HTML文件的服务器(一个简单的Apache主机就可以做到这一点,或者云存储如S3)。
在我描述它之前,你需要知道我的假设。
假设
- 内容优先方法 - 我喜欢专注于创建内容。我不想花时间琢磨如何添加漂亮的代码片段。这就是为什么将使用GitHub Flavored Markdown来处理内容(作为一个额外的奖励,我可以在GitHub网页上直接看到我的格式化内容)。
- 遵循WVD流程:编写,验证,部署
- 编写内容,通过创建适当的标记描述文档;
- 创建拉取/合并请求,进行代码审查,如果一切都正常 - 接受它;
- 通过构建可以上传到几乎所有Web服务器的静态HTML文件来部署内容。
最后一个可以由Cron作业或由从您的仓库触发的webhook触发。从现在开始,构建静态页面的过程将被称为“构建”。
如何开始指南
遵循此指南以开始使用gCMS的第一个简单博客。
步骤1:准备
# Create new folder "blog" and necessary sub folders mkdir -p blog/{content,output,templates} && cd blog # Initialize new composer project - follow on-screen instructions composer init # Add gCMS to your project if you didn't do it during the initialization composer require webee-online/g-cms # Install dependencies composer install # As a start point you can use templates and content I prepared for a demo - but be warned - eye pain guaranteed!!! cp -r vendor/webee-online/g-cms/example/blog/{content,templates} ./
步骤2:配置
创建配置文件“blog/config.test.json”。
vim config.test.json
并在其中插入以下JSON
{ "input": { "type": "folder", "path": "blog", "contentFolder": "/content" }, "output": { "path": "blog/output", "static": "/static", "relative": false, "extension": ".html" }, "resources": { "templates": "blog/templates", "static": "blog/templates/static" }, "name": "Best blog", "slogan": "Get it done - quickly with gCMS!" }
步骤3a:内容开发
创建新文件,并命名为你想要的任何名称 - 但添加.page.md扩展名,例如main.page.md,how-to-display-logs-in-linux-systems.page.md;为了本指南的目的,我们将将其命名为hello-world.page.md;
vim content/hello-world.page.md
现在,向此文件添加内容,如下例所示。JSON代码块包含页面配置,是必需的。将实际内容放在它之后。您可以使用GitHub Flavored Markup语法
```json
{
"slug": "pages/hello-world",
"title": "My first Hello World Page in gCMS",
"lang": "en",
"tags": ["learning","gCMS", "Hello World"],
"categories": ["HowTo"],
"excerpt": "Perfect page excerpt. *Rich* in _content_. With *great* formatting",
"author": "Adam Wojciechowski"
"createDate": 1608069061,
"menuItemNumber": -1
}
```
## This is page content
You can write whatever you want using GitHub Flavored Markup syntax!
```php
<?php
echo 'Even code samples';
```
步骤3b:分类页面
如果您想为您的博客添加一个分类列表页面 - 只需创建一个新文件。您可以根据需要命名,但请添加 .category.md 扩展名,例如 blog.category.md。为了本指南的目的,我们将将其命名为 blog.category.md;
vim content/blog.category.md
分类文件的内容比页面文件简单得多,以下是一个示例
```json
{
"slug": "categories",
"title": "Categories",
"lang": "en",
"menuItemNumber": 1
}
```
步骤 3c:主页
您可能还需要一个起始页面。像分类页面一样操作,但将扩展名改为 .mainpage.md,例如 blog.mainpage.md。本指南中,我们将创建一个名为 blog.mainpage.md 的主页;
vim content/blog.mainpage.md
主页文件的内容可能如下所示
```json
{
"slug": "index",
"title": "Home",
"lang": "en",
"menuItemNumber": 0
}
```
步骤 4:生成内容
触发构建过程
.\gcms build -c config.json
就这些!现在您已经将博客内容生成到位于 blog/output 目录中的静态文件中。