Grav CMS 漫聊
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 漫聊相关推荐
- 用CMS平台Grav搭建博客
什么是 CMS ? CMS 是英语 Content Management System 的缩写,按英语的字面翻译就是内容管理系统,顾名思义,它主要是为了方便发布网络内容而存在的一体化 Web 管理系统 ...
- octobercms mysql_手把手教你选择一款适合自己的CMS/博客程序
第1章 CMS基础介绍 1.1 CMS是什么? CMS是Content Management System的英文缩写,中文译作内容弄管理系统.说得简单点,Wordpress这种博客系统就是一种CMS. ...
- 我可以在Markdown中使用“ target =“ _ blank””创建链接吗?
有没有一种方法可以在Markdown中创建一个在新窗口中打开的链接? 如果没有,建议您使用哪种语法. 我将其添加到我使用的markdown编译器中. 我认为这应该是一个选择. #1楼 尝试使用PHP实 ...
- [译] 这可能是 2018 年最好的一篇 PHP 性能测评(包含 5.6 到 7.2,以及 HHVM)
原文地址:The Definitive PHP 5.6, 7.0, 7.1, 7.2 & HHVM Benchmarks (2018) 原文作者:Mark Gavalda 译文出自:掘金翻译计 ...
- [译] 2018 年,如何选择最好的静态站点生成器
原文地址:How to Choose the Best Static Site Generator in 2018 原文作者:Mathieu Dionne 译文出自:掘金翻译计划 本文永久链接:htt ...
- [春秋云镜]CVE-2022-2073
声明:⽂中所涉及的技术.思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担.所有渗透都需获取授权! 靶场介绍 Grav CMS 可以通过 Twig 来 ...
- cms基于nodejs_我如何使基于CMS的网站脱机工作
cms基于nodejs Interested in learning JavaScript? Get my ebook at jshandbook.com 有兴趣学习JavaScript吗? 在jsh ...
- JVM - CMS深度剖析
文章目录 Pre 概述 阶段 初始标记 (STW) 并发标记 (用户线程和GC线程并行工作) 重新标记 (STW) 并发清理(用户线程和GC线程并行工作) 并发重置 concurrent mode f ...
- .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现
前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...
最新文章
- String 中的hashCode方法
- webService学习5:Eclipse的TCP/IP工具
- 委托声明----委托实例化-----委托调用
- MySQL命令(二)| 表的增删查改、聚合函数(复合函数)、联合查询
- linux 进程 读写锁,linux 下实现高性能读写锁(read/write lock)
- “常程跳槽小米”裁决出炉:常程继续履行竞业限制,还要赔500多万...
- 拓端tecdat|R语言弹性网络Elastic Net正则化惩罚回归模型交叉验证可视化
- 面试必掌握的Mysql的11个问题
- FLUENT_V6.1.22 3CD (正式商业版)
- SuperSocket服务器架设(一):认识SuperSocket
- Emmagee性能测试小工具
- 写出linux命令的功能,练习一LINUX命令测试题1
- 用计算机专业术语写寄语,教师给计算机专业学生寄语
- 公众号文章中怎样图文排版可以实现逐行显示?
- 数学归纳法求证欧几里得算法
- [统计]_怎样用数据炒菜:统计建模的两种文化
- 01-小程序UI组件库
- Android Studio——飞入文字动画演示
- JAVA 构造方法、无参构造方法、有参构造方法、构造方法重载
- mybatisMyBatis的嵌套查询-collection
热门文章
- 使用 stunnel 保护 telnet 连接
- java微信接收消息_使用Java开发微信公众平台(二)——消息的接收与响应
- java injector_Injector的实现原理
- android智能客户,南宁Android智能机器人批发客户至上
- css段落首行缩进2字符_带有CSS3连字符的更好的段落
- 【Python】过拟合解决
- php mysql 类库_PHP数据库操作之基于Mysqli的数据库操作类库
- Error: Flash Download failed - “Cortex-M4
- 洛谷 1131 [ZJOI2007] 时态同步
- 什么是匿名内部类,如何使用匿名内部类