asgardcms/block

A module to create small blocks of content to display anywhere on the site.

Installs: 5 937

Dependents: 0

Suggesters: 0

Security: 0

Stars: 12

Watchers: 7

Forks: 19

Open Issues: 1

Type:asgard-module

3.0.0 2017-10-04 08:16 UTC

README

Latest Version Software License Quality Sblock SensioLabs Insight CodeClimate Total Downloads Slack

Branch Travis-ci
master Build Status
2.0 Build Status

Installation

Download

You can install the Block module, with the following command which allows the module to be edited for your project.

php artisan asgard:download:module asgardcms/block --migrations

Composer

You can install the Block module with composer:

$ composer require asgardcms/block

Then run the following command to install the database tables:

$ php artisan module:migrate Block

Permissions

In the backend GUI, go to Users > Roles > Admin. Then the permissions tab, and give the Admin role the permissions for the block module.

Documentation

This is a very simple module to create re-usable blocks of content. The blocks of content are created in the administration. You give it a name and a content.

After this, you'll be able to get the content of a block with the following code:

{!! Block::get('block-name') !!}

Each block also receives a shortcode that can be used instead of the code mentioned above. Shortcode looks like this [[BLOCK(block-name)]].
This is very useful if you for example want to allow users to reuse and enter blocks into content of the WYSIWYG editor (page or blog article body)

If you want to use shortcodes in your app, you need to register RenderBlock middleware responsible for parsing the response and replacing the shortcodes with the actual block content. It can be done globally by editing app/Http/Kernel.php file and adding \Modules\Block\Http\Middleware\RenderBlock::class into the $middlewareGroups web group (this way, block shortcodes will be automatically replaced in all web routes on frontend):

 
<?php
    // app/Http/Kernel.php
    ...
    protected $middlewareGroups = [
        'web' => [
            ...
            \Modules\Block\Http\Middleware\RenderBlock::class,
        ]
    ...
}

There are some drawbacks to this approach, specifically that each response will be parsed and searched for the shortcodes before returning back to the user, which may slightly slow down your application. If you know that you do not need to use shortcodes in the whole app, middleware can be applied selectively only to some routes or route groups in your application:

<?php
    // Modules/YourModule/Http/frontendRoutes.php
    ...
    // middleware will be applied to this specific route
    $router->get('your-url', 'YourController@method')
        ->middleware(\Modules\Block\Http\Middleware\RenderBlock::class);
    ...
    // middleware will be applied to whole group
    $router->group(['middleware' => \Modules\Block\Http\Middleware\RenderBlock::class], function(Router $router) {
        $router->get('your-url', 'YourController@method');
        ...
    });
    ...
?>

Keep in mind that by allowing users to put blocks/shortcodes anywhere, you are creating a potential security issue, so use this functionality carefully.

Hooks

Hooks are special events, where it allows you to change the data stored before it's stored in the database.

BlockIsCreating

Triggered before a block is created.

BlockIsUpdating

Triggered before a block is updated.

BlockContentIsRendering

Triggered when a block body gets displayed.

Resources

Info

All AsgardCMS modules respect Semantic Versioning.