md-cms

0.1.0 • Public • Published

md-cms

md-cms is a markdown based CMS, which can be embedded in express as a route.

Features

  • Folder based content organization
  • Built-in TOC generation
  • Plug-ins

Install

You may install md-cms from npm registry.

npm install md-cms

Sample configuration

Please check out demo folder in the repository for details.

var MdCms = require('md-cms');
var cms = new MdCms({
  root: path.join(__dirname, 'content')
});
 
app.get('/', function(req, res, next) {
  cms.getPageList(function(err, list) {
    if (err)
      return next(err);
    res.render('blog-list', {
      list: list
    });
  });
});
 
app.use('/', function(req, res, next) {
  cms.getPage(req.path, function(err, page, html) {
    if (err || !page)
      return next(err);
    res.render('blog-page', {
      page: page,
      html: html
    });
  });
});
 

Plug-in

md-cms supports plug-in to make markdown even more powerful.

plug-in uses markdown code block syntax, you may specify language as cms.[plugin-name] and the content in the code block will be forwarded to the corresponding plug-in handler.

```cms.[plug-in name]
[plug-in configuration]
``

Example

```cms.page
{
  "ctime": 1393427527217,
  "author": "ashi009"
}
``

Which will set meta of the page. In the above case, it includes create time and author.

This info could be accessed via page.info in cms.getPage callback.

Create New Plug-in

Creating a new plug-in is fairly simple, just create a js file in plugins folder, and Md-cms will automatically loaded it. Note that filename will be used as plug-in name, and exports a function as plug-in handler.

You may also add a plug-in handler to MdCms.plugins at runtime, the property name will be used as plug-in name, and the value should be the handler.

function(code, page, callback) {
  try {
    page.info = JSON.parse(code);
    callback(null, '');
  } catch (e) {
    callback(e);
  }
};

The handler will take 3 parameters:

  • code is the plug-in configuration, do whatever you want with that
  • page is a reference to page
  • callback(err, html) html is the final output.

Readme

Keywords

none

Package Sidebar

Install

npm i md-cms

Weekly Downloads

1

Version

0.1.0

License

MIT

Last publish

Collaborators

  • ashi009