Create Shortcode in Laravel Same as Wordpress

Shortcode is a way of generating specific html or part of html inside contents in page. We are familiar with wordpress where there is a feature called shortcode. Using that shortcode users can easily bind specific html content. It can be gallery, adsense block or readalso links. 

Here in this blog we will create a shortcode that will generate a custom link inside blog description


Let's create ShortCodeServiceProvider

namespace App\Providers;

use App\AppSetting;
use App\Service\Front\ShortcodeService;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;

class ShortCodeServiceProvider extends ServiceProvider
{

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        

    }
}


Register article content also key in provider

public function register()
    {
        $this->shortCodeService = new ShortcodeService();

        $this->shortCodeService->register('article_content_read_also', function ($params) {
            $slug = $params['slug'];
            $PostTitle = str_replace('-', ' ', $slug);
            $PostTitle = ucfirst($PostTitle);
            $route = route('view-post', $slug);

            return "<div class='read-also-post-link'>
                <a href=" . $route . " target='_blank'><i class='fa fa-arrow-right'></i>&nbsp;" . $PostTitle . "</a>
            </div>";
        });
    }

Below code should be added inside boot()

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
	$this->app->singleton('shortcode', function () {
		return $this->shortCodeService;
	});

}


Final ShortCodeServiceProvider will be Like Below

namespace App\Providers;

use App\Service\Front\ShortcodeService;
use Illuminate\Support\ServiceProvider;

class ShortCodeServiceProvider extends ServiceProvider
{
    protected ShortcodeService $shortCodeService;

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->shortCodeService = new ShortcodeService();

        $this->shortCodeService->register('article_content_read_also', function ($params) {
            $slug = $params['slug'];
            $PostTitle = str_replace('-', ' ', $slug);
            $PostTitle = ucfirst($PostTitle);
            $route = route('view-post', $slug);

            return "<div class='read-also-post-link'>
                <a href=" . $route . " target='_blank'><i class='fa fa-arrow-right'></i>&nbsp;" . $PostTitle . "</a>
            </div>";
        });
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        $this->app->singleton('shortcode', function () {
            return $this->shortCodeService;
        });

    }
}

Add Shortcode in your texteditor(ckeditor, tinymce, summernote)

Now final output in browser will look like this



Tags: