Grav 介绍

Grav 是一个支持多主题和多插件的 Markdown CMS。可应用于个人博客、小型内容发布平台、帮助文档平台、单页产品展示。

Grav 商业模式

http://getgrav.org 免费提供 CMS 和各类插件主题,培养生态;http://trilby.media 负责提供 Grav 咨询、功能定制、主题定制、插件定制、数据迁移等收费服务。这里值得注意的是,两个站完全分开,getgrav 免费开源,trilby.media 收费服务,清清楚楚,用户也不会有被欺骗的感觉。试想一下,如果两个站融为一个,给用户的感觉要尴尬得多。

Grav 架构特点

Grav 的初心是做一个不依赖数据库的 Flat CMS,所以选择 Markdown 作为内容载体。

但 Markdown 原生用途是写文档, Grav 的野心却超越了文档/博客(几乎所有 CMS 都有这个倾向),它还可以支持单页站、全文搜索、shortcode,甚至购物车。为了达到这个目的,它必须通过某种方式实现功能的组合。 Grav 通过下面几个途径达成这个目标:

  • markdown 文档的 header (又称 frontmatter)中记录格式化的元数据
  • grav core 提供自动解析 header 的功能
  • theme 渲染 header 数据
  • plugin 提供动态功能组件,如搜索、发短信、留言等等,供 theme 调用

Grav 适用范围

Grav 特别适用于个人博客、单页站,文档帮助系统只能说勉强还可以,知识管理系统很不合适。

如果你准备用 Grav 做知识管理系统,需要留个心。Grav 组织文件的方式比较特别,和普通的 Markdown 系统不同。每个页面并不是一个 markdown 文本文件,而是由一个目录和里面的 markdown 文件组成,且 markdown 文件的名字不能随意命名,而是要命名成主题里面规定的名字。 例如,假设你有一个 load_balance.md 文件,把它迁移到 Grav 后,会长成这样:

03.load_balance/docs.md

03 是表示这篇文章在目录中的顺序,docs 表示使用 docs.twig.html 模板来渲染 docs.md 里的文本内容。

显然,这种方式对于知识管理(KM)系统来说很不合适。作为对比,不妨看看 gitbook 定义的组织方式,对 KM 系统更友好。

Grav CMS 漫聊相关推荐

  1. 用CMS平台Grav搭建博客

    什么是 CMS ? CMS 是英语 Content Management System 的缩写,按英语的字面翻译就是内容管理系统,顾名思义,它主要是为了方便发布网络内容而存在的一体化 Web 管理系统 ...

  2. octobercms mysql_手把手教你选择一款适合自己的CMS/博客程序

    第1章 CMS基础介绍 1.1 CMS是什么? CMS是Content Management System的英文缩写,中文译作内容弄管理系统.说得简单点,Wordpress这种博客系统就是一种CMS. ...

  3. 我可以在Markdown中使用“ target =“ _ blank””创建链接吗?

    有没有一种方法可以在Markdown中创建一个在新窗口中打开的链接? 如果没有,建议您使用哪种语法. 我将其添加到我使用的markdown编译器中. 我认为这应该是一个选择. #1楼 尝试使用PHP实 ...

  4. [译] 这可能是 2018 年最好的一篇 PHP 性能测评(包含 5.6 到 7.2,以及 HHVM)

    原文地址:The Definitive PHP 5.6, 7.0, 7.1, 7.2 & HHVM Benchmarks (2018) 原文作者:Mark Gavalda 译文出自:掘金翻译计 ...

  5. [译] 2018 年,如何选择最好的静态站点生成器

    原文地址:How to Choose the Best Static Site Generator in 2018 原文作者:Mathieu Dionne 译文出自:掘金翻译计划 本文永久链接:htt ...

  6. [春秋云镜]CVE-2022-2073

    声明:⽂中所涉及的技术.思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担.所有渗透都需获取授权! 靶场介绍 Grav CMS 可以通过 Twig 来 ...

  7. cms基于nodejs_我如何使基于CMS的网站脱机工作

    cms基于nodejs Interested in learning JavaScript? Get my ebook at jshandbook.com 有兴趣学习JavaScript吗? 在jsh ...

  8. JVM - CMS深度剖析

    文章目录 Pre 概述 阶段 初始标记 (STW) 并发标记 (用户线程和GC线程并行工作) 重新标记 (STW) 并发清理(用户线程和GC线程并行工作) 并发重置 concurrent mode f ...

  9. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

最新文章

  1. String 中的hashCode方法
  2. webService学习5:Eclipse的TCP/IP工具
  3. 委托声明----委托实例化-----委托调用
  4. MySQL命令(二)| 表的增删查改、聚合函数(复合函数)、联合查询
  5. linux 进程 读写锁,linux 下实现高性能读写锁(read/write lock)
  6. “常程跳槽小米”裁决出炉:常程继续履行竞业限制,还要赔500多万...
  7. 拓端tecdat|R语言弹性网络Elastic Net正则化惩罚回归模型交叉验证可视化
  8. 面试必掌握的Mysql的11个问题
  9. FLUENT_V6.1.22 3CD (正式商业版)
  10. SuperSocket服务器架设(一):认识SuperSocket
  11. Emmagee性能测试小工具
  12. 写出linux命令的功能,练习一LINUX命令测试题1
  13. 用计算机专业术语写寄语,教师给计算机专业学生寄语
  14. 公众号文章中怎样图文排版可以实现逐行显示?
  15. 数学归纳法求证欧几里得算法
  16. [统计]_怎样用数据炒菜:统计建模的两种文化
  17. 01-小程序UI组件库
  18. Android Studio——飞入文字动画演示
  19. JAVA 构造方法、无参构造方法、有参构造方法、构造方法重载
  20. mybatisMyBatis的嵌套查询-collection

热门文章

  1. 使用 stunnel 保护 telnet 连接
  2. java微信接收消息_使用Java开发微信公众平台(二)——消息的接收与响应
  3. java injector_Injector的实现原理
  4. android智能客户,南宁Android智能机器人批发客户至上
  5. css段落首行缩进2字符_带有CSS3连字符的更好的段落
  6. 【Python】过拟合解决
  7. php mysql 类库_PHP数据库操作之基于Mysqli的数据库操作类库
  8. Error: Flash Download failed - “Cortex-M4
  9. 洛谷 1131 [ZJOI2007] 时态同步
  10. 什么是匿名内部类,如何使用匿名内部类