How to create custom Handlebars helpers?

When creating your theme you may want to expand the number of helpers; Publii offers theme developers the ability to create custom helpers for their needs. They're handy if you need to simplify your theme code.

E.g. you can create a custom helper which will replace multiple conditions with a single conditional check.

To create custom helpers in your theme just create a helpers.js file in the theme directory; here you can add your custom helper functions.

Below there is an example of code which creates two super simple custom helpers which accept one argument:

/*
 * Custom theme helpers for Handlebars.js
 */

let themeHelpers = {
    test1: function(value) {
        return "TEST1 " + value;
    },
    test2: function(value) {
        return "TEST2 " + value;
    }
};

module.exports = themeHelpers;

As you can see - all helper functions are wrapped inside an object which is exported from the helpers.js file to the renderer.

It is also possible to use Handlebars object instance - This scenario will require field includeHandlebarsInHelpers set to true under renderer section in the theme settings.

Then helpers.js file can be written as:

module.exports = function (Handlebars) {
	return {
functionName: function(arg) { // ... return new Handlebars.SafeString(arg); } }; };