Skip to content

Bricks dynamic tags ​

VX fields appear in the Bricks dynamic data picker in groups named after their fieldsets:

GroupReads fromExample tag
Post: …The current post{vx_tagline}
Author: …The post's author{vx_author_phone}
User: …The logged-in visitor{vx_user_phone}
Term: …The current term{vx_term_hours}
Option page: …An option page{vx_site_site_settings_phone}

Fields inside a Group or Repeater show a breadcrumb in the picker ("Team › Name") and use underscores in the tag: {vx_team_name}.

Images and other media ​

One tag covers an image. What it outputs depends on where you use it:

Used inOutputs
An Image elementThe attachment ID, so Bricks can load the right size
Text or a linkThe image URL

Add a part after a colon to choose: {vx_logo:url}, {vx_logo:id}, {vx_logo:alt}, {vx_logo:title}, {vx_logo:caption}, or, for audio, :duration.

A Gallery tag on an Image Gallery or Carousel element returns all the images, so no loop is needed. A Files tag behaves the same way.

Choices ​

A Select, Radio Buttons or Button Group tag outputs the label ("United Kingdom"). Add :value for the stored value (uk).

Checkboxes and Multiselect behave like lists. The plain tag is the first selected label; :list joins them all.

TagResult
{vx_amenities}First label: Wi-Fi
{vx_amenities:list}Wi-Fi, Parking, Terrace
{vx_amenities:value:list}wifi, parking, terrace

Lists without a loop ​

A repeater's sub-field used as plain text is the first row. To use every row, join them or pick one:

TagResult
{vx_team_name}Ana
{vx_team_name:list}Ana, Bruno, Carla
{vx_team_name:list|, | and }Ana, Bruno and Carla
{vx_team_name:count}3
{vx_team_name:array_value|1}Bruno (counting from 0)

For a card per row, use a query loop. A relation tag in a link is the first related item's URL.

Filters ​

VX filters go after a colon and run left to right. Arguments are separated with |. Bricks' own filters, such as :plain, :link, a word limit like :20, and @fallback, still work and run after the VX ones.

ExampleDoes
{vx_price:number_format|2}2 decimals
{vx_price:currency_format|EUR}Formats as euros
{vx_reviews:pluralize|review|reviews}"1 review" or "4 reviews"
{vx_opens:date_format|l, j F}Formats a date
{vx_tagline:truncate|80}Shortens to 80 characters
{vx_tagline:fallback|Coming soon}Text when the field is empty
{vx_logo@fallback-image:123}Bricks image fallback (attachment 123)

Filters can be chained: {vx_logo:url:link}, {vx_price:number_format|2:append| EUR}.

Bricks doesn't support the block editor's #math, then()/else() conditions or loop position modifiers. For conditional display, use Bricks conditions.

Technical details for LLMs
  • Tag name: vx_ + path with _ separators for the post group; vx_<group>_… for author, user, term, site. Picker groups: <Group>: <fieldset label>.
  • Option page tags: vx_site_<page_key>_<field_key>.
  • VX filters: append, prepend, trim, uppercase, lowercase, capitalize, truncate, truncate_words, replace, slugify, strip_tags, fallback, list, count, first, last, nth, shuffle, number_format, currency_format, round, clamp, ordinal, abbreviate, pluralize, date_format, date_modify, to_age, time_diff. Same semantics as the block editor modifiers; arguments are |-separated.
  • Not available in Bricks: loop_index, is_first, is_last, conditionals, let, #math, #query_var.
  • :value on choices, :array_value|n, :plain, :link, numeric word limits and @fallback… are Bricks' own filters.
  • Media sub-keys: id, url, alt (images), title, caption, duration (audio). Element context decides the bare tag's output (ID in image elements, URL elsewhere).

Documentation for the VX Framework.