WordPress like shortcodes for Laravel 5.x
[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 Laravel 4.2, see: https://github.com/patrickbrouwers/Laravel-Shortcodes
Via Composer
$ composer require "webwizo/laravel-shortcodes:1.0.*"After updating composer, add the ServiceProvider to the providers array in config/app.php
Webwizo\Shortcodes\ShortcodesServiceProvider::class,You can use the facade for shorter code. Add this to your aliases:
'Shortcode' => Webwizo\Shortcodes\Facades\Shortcode::class,The class is bound to the ioC as shortcode
$shortcode = app('shortcode');To enable the view compiling features:
return view('view')->withShortcodes();This will enable shortcode rendering for that view only.
Shortcode::enable();Shortcode::disable();With the config set to true, you can disable the compiling per view.
return view('view')->withoutShortcodes();To use default compiling:
Shortcode::compile($contents);return view('view')->withStripShortcodes();Shortcode::strip($contents);Create a new ServiceProvider where you can register all the shortcodes.
php artisan make:provider ShortcodesServiceProviderAfter defining shortcodes, add the ServiceProvider to the providers array in config/app.php
App\Providers\ShortcodesServiceProvider::class,Shortcodes can be registered within ShortcodesServiceProvider with a callback:
php artisan make:provider ShortcodesServiceProviderShortcodesServiceProvider.php Class File
<?php namespace App\Providers;
use App\Shortcodes\BoldShortcode;
use Illuminate\Support\ServiceProvider;
use Shortcode;
class ShortcodesServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
Shortcode::register('b', BoldShortcode::class);
Shortcode::register('i', 'App\Shortcodes\ItalicShortcode@custom');
}
}You can store each shortcode within their class app/Shortcodes/BoldShortcode.php
namespace App\Shortcodes;
class BoldShortcode {
public function register($shortcode, $content, $compiler, $name, $viewData)
{
return sprintf('<strong class="%s">%s</strong>', $shortcode->class, $content);
}
}You can store each shortcode within their class app/Shortcodes/ItalicShortcode.php
namespace App\Shortcodes;
class ItalicShortcode {
public function custom($shortcode, $content, $compiler, $name, $viewData)
{
return sprintf('<i class="%s">%s</i>', $shortcode->class, $content);
}
}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, $viewData)
{
return '<strong '. $shortcode->get('class', 'default') .'>' . $content . '</strong>';
}
}This package provides an Artisan command to quickly generate shortcode classes:
php artisan make:shortcode YourShortcodeName- By default, this creates a new class in
app/Shortcodes/YourShortcodeNameShortcode.php. - If the file already exists, use the
--forceoption to overwrite:
php artisan make:shortcode YourShortcodeName --forceYou can publish the stub file to customize the generated class:
php artisan vendor:publish --tag=shortcode-stubsThis will copy the stub to resources/stubs/shortcode.stub in your Laravel app. Edit this file to change the template for new shortcode classes.
To run the tests for the shortcode generator command:
composer testPlease see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email webwizo@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
