Laravel Shortcodes

webwizo/laravel-shortcodes image

Laravel Shortcodes stats

Downloads
348.7K
Stars
202
Open Issues
18
Forks
46

View on GitHub →

Wordpress like shortcodes for Laravel 5, 6, 7, 8, and 9

Laravel-Shortcodes

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

Install

Via Composer

$ composer require "webwizo/laravel-shortcodes:1.0.*"

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

Usage

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');

Usage

withShortcodes()

To enable the view compiling features:

return view('view')->withShortcodes();

This will enable shortcode rendering for that view only.

Enable through class

Shortcode::enable();

Disable through class

Shortcode::disable();

Disabling some views from shortcode compiling

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

return view('view')->withoutShortcodes();

Default compiling

To use default compiling:

Shortcode::compile($contents);

Strip shortcodes from rendered view.

return view('view')->withStripShortcodes();

Strip shortcode through class

Shortcode::strip($contents);

Registering new shortcodes

Create a new ServiceProvider where you can register all the shortcodes.

php artisan make:provider ShortcodesServiceProvider

After defining shortcodes, add the ServiceProvider to the providers array in config/app.php

Usage

App\Providers\ShortcodesServiceProvider::class,

Callback

Shortcodes can be registered within ShortcodesServiceProvider with a callback:

php artisan make:provider ShortcodesServiceProvider

ShortcodesServiceProvider.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');
}
}

Default class for BoldShortcode

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);
}
 
}

Class with custom method

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);
}
 
}

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, $viewData)
{
return '<strong '. $shortcode->get('class', 'default') .'>' . $content . '</strong>';
}
 
}

Change log

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email webwizo@gmail.com instead of using the issue tracker.

Credits

Support me

Buy Me A Coffee

License

The MIT License (MIT). Please see License File for more information.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Webwizo Laravel Shortcodes Related Articles

DevDojo Static - NodeJS Site Generator image

DevDojo Static - NodeJS Site Generator

Read article
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger
Celebian logo

Celebian

Celebian is a social media marketing agency specializing in helping their clients go viral on TikTok. Whether you're looking to reach a bigger audience or gain more Tiktok followers, likes, and views, they've got you covered.

Celebian
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
Tighten logo

Tighten

We help companies turn great ideas into amazing apps, products, and services.

Tighten
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing