Flow Block Models

To use Flow you need to define flow block models. If you are not familiar with Flow yet, you should read the Introduction Documentation to Flow first.

Defining Models

Flow block models work pretty much exactly the same as Regular Models. The differences are mostly minor and of cosmetic nature. They are stored in the flowblocks/ folder and are ini files just like models.

Instead of using [model] as section, the section is called [block].

Here a very basic flow block model flowblocks/text.ini:

[block]
name = Text Block
button_label = Text

[fields.text]
label = Text
type = markdown

[fields.class]
label = Class
type = select
choices = default, centered
choice_labels = Default, Centered
default = default

This should be self explanatory. One thing that is different about blocks compared to regular models is that they support the button_label attribute which can be used to customize the label of the button that adds blocks to a flow.

Templates

Now that we have a model for our flow block, we need to create a template for it. Templates for blocks are stored in the blocks subdirectory of the templates folder. The name for the block template is automatically derived from the config file that keeps the flow block definition (templates/blocks/NAME.html): In our case the expected template is templates/blocks/text.html, as our flow block is defined in a file called text.ini.

Here is a suitable template for this:

<div class="text-block text-block-{{ this.class }}">
  {{ this.text }}
</div>

If you need to access the page the flow is used by, you can use the record template variable.

Comments