以Git仓库作为主要内容数据存储的简单CMS

安装数: 11,207

依赖关系: 0

推荐者: 0

安全性: 0

星标: 3

关注者: 2

分支: 0

开放问题: 0

类型:项目

v1.6.0-beta 2022-01-23 03:32 UTC

README

gCMS

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.mdhow-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 目录中的静态文件中。