2017 © Pedro Peláez
 

wordpress-plugin wp-hbs-engine

Renders Handlebars templates within your WordPress Theme/Plugin

image

iantsch/wp-hbs-engine

Renders Handlebars templates within your WordPress Theme/Plugin

  • Saturday, February 24, 2018
  • by iantsch
  • Repository
  • 2 Watchers
  • 1 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

WordPress Handlebars Engine

licence tag, (*1)

Renders Handlebars/Moustache templates within your WordPress Theme/Plugin. Handlebars rendering is powered by LightnCandy. Tested with WordPress 5.2.3, (*2)

Installation

You can install this (must-use) plugin two ways, (*3)

Via Composer

If you load your dependenies via Composer you can load this plugin with, (*4)

$ php composer require iantsch/wp-hbs-engine

Via Download

Download/fork this repository and copy the plugin-folder into wp-content/plugins/. If you visit your Plugin section in the wp-admin area, activate it and you are good to go., (*5)

Troubleshoots

You need to load the zordius/lightncandy dependency via composer. Install composer and run $ composer install in the wp-content/plugins/wp-hbs-engine folder., (*6)

The plugin needs a folder with write permissions for caching the handlebar files. It tries to create the folder wp-content/plugins/wp-hbs-engine/cache., (*7)

The plugin will try to load partials from the default folder src/templates/partials within your current theme. If the folder does not exist please add it (or use the filter hook to adapt)., (*8)

Usage

Setup and modify the render engine to your needs in your functions.php or your plugin, (*9)

add_filter('MBT/Engine/Handlebars/Helpers', function($helpers) {
  $helpers['__'] = function($string) {
    return __($string, 'mbt');
  };
  $helpers['permalink'] = 'get_permalink';
  $helpers['content'] = function() {
    return apply_filters('the_content', get_the_content());
  };
  return $helpers;
});

In your theme call it like a WordPress function., (*10)

global $post;
while (have_posts()){
  the_post();
  $data = (array) $post;
  the_hbs_template('article', $data);
}

In your article.hbs it is handlebarsjs.com syntax, (*11)

<h2>{{this.post_title}}</h2>
<div>{{{content}}}</div>
<a href="{{permalink}}">{{__ 'Click'}}</a>

API

get_hbs_template

| Parameter | Type | Description | |---|---|---| | $template | string | template name | | $data | string | associative array with all the needed data for the template | | $templateDir | string | boolean | absolutee path to template entry directory, defaults to /src/templates/ in current theme | | $cacheDir | string | boolean | absolute path to caching directory, defaults to /cache/ in plugins folder | Returns: $html - the rendered HTML output, (*12)

the_hbs_template

| Parameter | Type | Description | |---|---|---| | $template | string | template name | | $data | string | associative array with all the needed data for the template | | $templateDir | string | boolean | absolutee path to template entry directory, defaults to /src/templates/ in current theme | | $cacheDir | string | boolean | absolute path to caching directory, defaults to /cache/ in plugins folder | echoes the rendered HTML output, (*13)

Hooks

There are several hooks to modify and adapt the render engine, (*14)

Filters

MBT/Engine/Handlebars/Extension

| Parameter | Type | Description | |---|---|---| | $extension | string | file extension, default: hbs | Returns: $extension - file extension of your handlebar templates, (*15)

MBT/Engine/Handlebars/Helpers

| Parameter | Type | Description | |---|---|---| | $helpers | array | associative array with callback functions for the implemented helpers | | $this | object | Current instance of Handlebars engine | Returns: $helpers - array of handlebars helper, (*16)

MBT/Engine/Handlebars/Flags

| Parameter | Type | Description | |---|---|---| | $flags | int | bitwise flags used by LightnCandy | | $this | object | Current instance of Handlebars engine | Returns: $flags - LightnCandy Flags, (*17)

MBT/Engine/Handlebars/Partials

| Parameter | Type | Description | |---|---|---| | $partials | array | associative array with the relative path to the partials | | $this | object | Current instance of Handlebars engine | Returns: $partials - array of available partials, (*18)

MBT/Engine/Handlebars/DefaultData

| Parameter | Type | Description | |---|---|---| | $defaultData | array | fallback data for the template | | $template | string | template name | Returns: $defaultData - fallback data for the template, (*19)

MBT/Engine/Handlebars/Data

| Parameter | Type | Description | |---|---|---| | $data | array | associative array with all the needed data for the template | | $template | string | template name | Returns: $data - the data for the template, (*20)

MBT/Engine/Handlebars/Html

| Parameter | Type | Description | |---|---|---| | $html | string | rendered HTML output (with data) | | $template | string | template name | | $data | array | data used to render output | Returns: $html - the rendered HTML output, (*21)

Actions

MBT/Engine/Handlebars/Init

Parameter Type Description
$this object Current instance of Handlebars engine

Credits

@iantsch - web developer behind this and other projects., (*22)

The Versions

24/02 2018

dev-master

9999999-dev

Renders Handlebars templates within your WordPress Theme/Plugin

  Sources   Download

MIT

The Requires

 

wordpress plugins handlebars lightncandy

24/02 2018

0.0.1

0.0.1.0

Renders Handlebars templates within your WordPress Theme/Plugin

  Sources   Download

MIT

The Requires

 

wordpress plugins handlebars lightncandy