Blocks Tags
Blocks offer the ability to structure an item with a choice of mixed content. Within each item (such as an item in a multiple item region, or a Collection item in Perch Runway) the template can define a perch:blocks
section containing a choice of blocks to add.
Blocks defines the following template tags:
Tag | Description |
---|---|
<perch:blocks></perch:blocks> |
The entire blocked section should be inside this pair. |
<perch:block></perch:block> |
An individual block, defining the start and end of that micro-template |
Each block is like a micro-template. It can include the usual mix of field types, Repeaters and markup.
<perch:blocks>
<perch:block type="text" label="Text">
...
</perch:block>
<perch:block type="quote" label="Pull quote">
...
</perch:block>
<perch:block type="image" label="Feature image">
...
</perch:block>
</perch:blocks>
The perch:blocks
tag pair
All blocks must exist within a perch:blocks
tag pair. This defines the ’blocked’ section of the template.
A template using blocks can contain other content outside of the blocks. The order of the fields and the blocked section can be controlled with the order
attribute.
<perch:content type="smarttext" id="heading" order="1">
<perch:content type="date" id="date" order="3">
<perch:blocks order="2">
…
</perch:blocks>
The blocked section can use perch:before
and perch:after
sections in order to display markup around the blocks. These do not show if no blocks are selected.
The blocks are output in a group, so perch:every
acts across the blocks, and each block has its own perch_item_index
and friends.
The perch:block
tag pair
Block tags appear within a perch:blocks
tag pair. They define each block than can be chosen by the content editor.
<perch:block type="image" label="Feature image">
<figure>
<img src="<perch:content id="image" type="image" width="1600" label="Image">">
<figcaption>
<perch:content id="caption" type="smarttext" label="Caption">
</figcaption>
</figure>
</perch:block>
A perch:block
tag pair then just contains normal template code, including content tags, repeaters and markup. (Each individual block does not have a before
or after
section, but they do have an index within the blocked group.) You can use the divider-before
and divider-after
attributes to give the edit form more structure.
The perch:block
opening tag has two required attributes. type
describes the block to the templating system, and label
describes it to your users.
Attribute | Value |
---|---|
type | An ID-like reference used to refer to the block in templates |
label | A short, human-readable description of the block type |
icon | The name of an icon to use to represent the block in the user interface |
The label
attribute is used in the editing interface to describe the block.
A blocked section can include as many blocks as needed. A template can only contain one perch:blocks
section.
Using template includes
It is perfectly fine to use template includes to make your code more modular.
<perch:blocks>
<perch:block type="image" label="Feature image">
<perch:template path="content/blocks/image.html">
</perch:block>
</perch:blocks>
You can even make sets of common blocks and add special cases as needed:
<perch:blocks>
<perch:template path="blocks/article_blocks.html">
<perch:block type="image" label="Feature image">
<perch:template path="content/blocks/image.html">
</perch:block>
</perch:blocks>
Accessing content outside the blocks
By default, blocks operate as a silo – like a region within the template. They have their own content scope, and the template engine treats them as a distinct zone with its own before and after properties and new item counts.
Content from outside the perch:blocks
tag is out of scope. You can bring it into scope for all blocks using the scope-parent
attribute on the perch:blocks
tag.
To prevent ID clashes, the items from outside the blocks become parent.originalID
within the blocks. So a field that is id="title"
outside the blocks would be id="parent.title"
when brought into scope within the blocks.
Icons
A block can be represented by an icon. The available icons are listed below.
Icon | Name |
---|---|
address-book | |
alarm-alt | |
anchor | |
bed | |
bell | |
book | |
bookmark | |
burger | |
calculator | |
calendar-add | |
calendar | |
camera-alt | |
cart | |
chart-pie | |
chat | |
circle-add | |
clock | |
cloud | |
code | |
coffee-togo | |
compass | |
contacts | |
dashboard | |
database | |
document | |
download | |
edit | |
flag | |
folder | |
heart | |
home | |
keyboard | |
keynote | |
lightbulb | |
link | |
list | |
location | |
megaphone | |
menu | |
microphone | |
music | |
newspaper | |
notepad | |
paint-roller | |
paintbrush | |
paper-airplane | |
paperclip | |
pencil-paintbrush-pen | |
pencil | |
phone | |
photo | |
photos | |
plane | |
popsicle | |
pulse-wave | |
puzzle | |
question | |
quote | |
redirect | |
signs | |
tag | |
theater-masks | |
truck | |
tv | |
umbrella | |
user-female | |
user | |
users | |
utensils | |
video | |
weather | |
wine | |
world | |
wrench | |
yin-yang |