在家有点闲得慌,然后就开始无聊的折腾 Ghost App 。。。隔了一段时间再看 Wiki。。发现。。竟然才更新到 0.0.3,说实话是真的优秀。。
废话不多说。。直接开怼

创建基本架构

打开 content/apps 目录建立一个文件夹,文件夹的命名为你的 app name (只允许使用
a-z, 0-9, _, -
我在这里创建的 app 的 name 为 ghost-app-name
进入文件夹,创建 package.jsonindex.js,然后复制下面的模版就好啦

package.json

{
    "name":"ghost-app-demo",
    "version": "0.0.x",
    "dependencies": {
        "ghost-app": "0.0.3"
    }
}

index.js

var App = require('ghost-app'),
    GAD;
    
GAD = App.extend({
    initialize: function () {
        console.log('GAD: Initialize ()');
    },
    install: function () {
        console.log('GAD: Install ()');
    },
    uninstall: function () {
        console.log('GAD: Uninstall()');
    },
    activate: function () {
        console.log('GAD: Activate ()');
    },
    deactivate: function () {
        console.log('GAD: Deactivate ()');
    }
});

module.exports = GAD;

Handlebars helpers

需要修改 activate 部分

activate: function () {
    console.log('GAD: activate()');
    this.ghost.helpers.register('helper', this.handleHelper);
}

然后在 deactivate 之后添加

handleHelper: function () {
    //your code
}

最后再打开 package.json,在 dependencies 之后添加一下内容

"ghost": {
    "permissions": {
        "helpers": [
            "helper" //修改为你的 helper 名
        ]
    }
}

就完成啦

Filters

filters: {
    ghost_head: 'handleGhostHead',
    ghost_foot: [9, 'handleGhostFoot']
},
handleGhostHead: function (ghost_head) {},
handleGhostFoot: function (ghost_foot) {}

首先先添加以上的代码在基本框架的任意一处就完成啦
PS: 使用数组语法可以自定义优先级,默认的优先级为 5
最后也相同打开 package.json,在 dependencies 之后添加一下内容

"ghost": {
    "permissions": {
        "filters": [
            "ghost_head", 
            "ghost_foot"
        ]
    }
}

就完成啦

启用 App

只需要打开你的数据库,然后把 app 的名称添加到 settings 表中的 activeApps 字段
例如:app的名称为 ghost-app-demo,那么 activeApps 的值应为 ["ghost-app-demo"],切记双引号不能丢