Skip to content

Instantly share code, notes, and snippets.

@tdack
Created June 12, 2016 10:24
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tdack/e282ad75cfae13c2531fee7b0a1fd2ed to your computer and use it in GitHub Desktop.
Save tdack/e282ad75cfae13c2531fee7b0a1fd2ed to your computer and use it in GitHub Desktop.
Custom handlebars helpers for Ghost, as an app

Custom Handlebars Helpers for Ghost

This is a Ghost "App" that will implement a custom Handlebars helper the same as https://apatchofcode.com/adding-custom-handlebars-for-ghost-equals-awesome/

Installation

Create a new directory in contents/apps

eg:

mkdir contents/apps/myhelpers

Place package.json and index.js in the directory.

To enable the app you need to manually add it to the database as described at: https://github.com/TryGhost/Ghost/wiki/Apps-Getting-Started-for-Ghost-Devs

Restart ghost

Usage

Simply use the new helper in your template, eg:

{{#compare 'apples' '===' 'oranges'}}
    <p>Totally not the case.<p>
{{/compare}}
{{#compare 'apples' 'typeof' 'string'}}
    <p>I think we're onto something.<p>
{{/compare}}
var App = require('ghost-app'),
myHelpers;
myHelpers = App.extend({
install: function() {},
uninstall: function() {},
activate: function() {
this.app.helpers.register('compare', this.compareHelper)
},
deactivate: function() {},
compareHelper: function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '!=':
return (v1 != v2) ? options.fn(this) : options.inverse(this);
case '!==':
return (v1 !== v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
case 'typeof':
return (typeof v1 == v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
}
});
module.exports = myHelpers;
{
"name":"my-helpers",
"version": "0.0.1",
"dependencies": {
"ghost-app": "0.0.2"
},
"ghost": {
"permissions": {
"helpers": ["compare"]
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment