Giter VIP home page Giter VIP logo

laravel-shortcodes's Introduction

Laravel-Shortcodes

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads StyleCI

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 [email protected] instead of using the issue tracker.

Credits

License

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

laravel-shortcodes's People

Contributors

alexjoffroy avatar carsongio avatar josh-taylor avatar kajetan-nobel avatar laugharn avatar lead-worker avatar professorhaseeb avatar vortechron avatar webwizo avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.