brouwers/shortcodes

Wordpress like shortcodes for Laravel 4.2

1.0.2 2014-12-06 18:45 UTC

This package is not auto-updated.

Last update: 2020-09-14 06:58:32 UTC


README

Wordpress like shortcodes for Laravel 4.2.

[b class="bold"]Bold text[/b]

[tabs]
  [tab]Tab 1[/tab]
  [tab]Tab 2[/tab]
[/tabs]

[user id="1" display="name"]

If you are looking for BBcodes, see: https://github.com/patrickbrouwers/Laravel-BBcodes

Build Status Latest Stable Version Total Downloads License Monthly Downloads Daily Downloads

#Installation

Require this package in your composer.json and update composer.

"brouwers/shortcodes": "1.*"

After updating composer, add the ServiceProvider to the providers array in app/config/app.php

'Brouwers\Shortcodes\ShortcodesServiceProvider',

You can use the facade for shorter code. Add this to your aliases:

'Shortcode' => 'Brouwers\Shortcodes\Facades\Shortcode',

The class is bound to the ioC as shortcode

$shortcode = App::make('shortcode');

Usage

View compiling

By default shortcode compiling is set to false inside the config.

withShortcodes()

To enable the view compiling features:

return View::make('view')->withShortcodes();

This will enable shortcode rendering for that view only.

Config

Enabeling the shortcodes through config shortcodes::enabled will enable shortcoding rendering for all views.

Enable through class

Shortcode::enable();

Disable through class

Shortcode::disable();

Disabeling some views from shortcode compiling

With the config set to true, you can disable the compiling per view.

return View::make('view')->withoutShortcodes();

Default compiling

To use default compiling:

Shortcode::compile($contents);

Registering new shortcodes

Inside a file or service provider you can register the shortcodes. (E.g. app/start/shortcodes.php or App/Services/ShortcodeServiceProvider.php)

Callback

Shortcodes can be registered like Laravel macro's with a callback:

Shortcode::register('b', function($shortcode, $content, $compiler, $name)
{
  return '<strong class="'. $shortcode->class .'">' . $content . '</strong>';
});
  

Default class

class BoldShortcode {

  public function register($shortcode, $content, $compiler, $name)
  {
    return '<strong class="'. $shortcode->class .'">' . $content . '</strong>';
  }
}

Shortcode::register('b', 'BoldShortcode');

Class with custom method

class BoldShortcode {

  public function custom($shortcode, $content, $compiler, $name)
  {
    return '<strong class="'. $shortcode->class .'">' . $content . '</strong>';
  }
}

Shortcode::register('b', 'BoldShortcode@custom');

Register helpers

If you only want to show the html attribute when the attribute is provided in the shortcode, you can use $shortcode->get($attributeKey, $fallbackValue = null)

class BoldShortcode {

  public function register($shortcode, $content, $compiler, $name)
  {
    return '<strong '. $shortcode->get('class', 'default') .'>' . $content . '</strong>';
  }
}