NAME
Mojolicious::Plugin::TagHelpers::ContentBlock - Mojolicious Plugin for Content Blocks
SYNOPSIS
use
Mojolicious::Lite;
plugin
'TagHelpers::ContentBlock'
;
# Add snippets to a named content block, e.g. from a plugin
app->content_block(
admin
=> {
inline
=>
"<%= link_to 'Edit' => '/edit' %>"
}
);
# ... or in a controller:
get
'/'
=>
sub
{
my
$c
=
shift
;
$c
->content_block(
admin
=> {
inline
=>
"<%= link_to 'Logout' => '/logout' %>"
,
position
=> 20
}
);
$c
->render(
template
=>
'home'
);
};
app->start;
__DATA__
@@ home.html.ep
%# and call it in a template
%= content_block 'admin'
DESCRIPTION
Mojolicious::Plugin::TagHelpers::ContentBlock is a Mojolicious plugin to create pluggable content blocks for page views.
METHODS
Mojolicious::Plugin::TagHelpers::ContentBlock inherits all methods from Mojolicious::Plugin and implements the following new one.
register
# Mojolicious
$app
->plugin(
'TagHelpers::ContentBlock'
);
# Mojolicious::Lite
plugin
'TagHelpers::ContentBlock'
;
Called when registering the plugin. Accepts an optional hash containing information on content blocks to be registered on startup.
# Mojolicious
$app
->plugin(
'TagHelpers::ContentBlock'
=> {
admin
=> [
{
inline
=>
'<%= link_to "Edit" => "/edit" %>'
,
position
=> 10
},
{
inline
=>
'<%= link_to "Logout" => "/logout" %>'
,
position
=> 15
}
],
footer
=> {
inline
=>
'<%= link_to "Privacy" => "/privacy" %>'
,
position
=> 5
}
}
);
Content blocks are defined by their name followed by either a hash of content block information or an array of content block information hashes. See content_block for further information.
The content block hash can be set as part of the configuration file with the key TagHelpers-ContentBlock
or on registration (that will be merged with the configuration).
HELPERS
content_block
# In a plugin
$app
->content_block(
admin
=> {
inline
=>
'<%= link_to '
Edit
' => '
/edit
' %>'
}
);
# From a controller
$c
->content_block(
admin
=> {
inline
=>
'<%= link_to '
Edit
' => '
/edit
' %>'
,
position
=> 40
}
);
# From a template
% content_block
'admin'
, {
position
=> 9 }, begin
<%= link_to
'Edit'
=>
'/edit'
%>
% end
# Calling the content block
%= content_block
'admin'
Add content to a named content block (like with content_for) or call the contents from a template.
In difference to content_for, content of the content block can be defined in a global cache during startup or as part of the applications configuration.
Supported content block parameters, passed as a hash, are template
or inline
. Additionally a numeric position
value can be passed, defining the order of elements in the content block. If position
is omitted, the default position is 0
. Position values may be positive or negative.
When calling the content blocks, an additional list parameter separator can define a string to be placed between all blocks.
# Calling the content block
%= content_block
'admin'
,
separator
=>
'<hr />'
content_block_ok
# In a template
%
if
(content_block_ok(
'admin'
)) {
<ul>
%= content_block
'admin'
</ul>
% };
Check if a content_block
contains elements.
DEPENDENCIES
AVAILABILITY
COPYRIGHT AND LICENSE
Copyright (C) 2015-2021, Nils Diewald.
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.