asgardcms / block
A module to create small blocks of content to display anywhere on the site.
Installs: 5 987
Dependents: 0
Suggesters: 0
Security: 0
Stars: 12
Watchers: 7
Forks: 18
Open Issues: 1
Type:asgard-module
Requires
- php: >=5.6.4
- composer/installers: ~1.0
- idavoll/core-module: ~3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.7
- fzaninotto/faker: ~1.5
- orchestra/testbench: 3.5.*
- phpunit/phpunit: ~6.3
README
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.