Skip to main content

15: Helpers

There are helpers for CSS rendering and settings compatibility, as follows.

CSS Rendering Helper​

The CSS helper makes it simple to render complex CSS rules with your settings, especially settings for multiple device sizes. Just use the methods described below in your frontend.css.php and we'll handle the rest for you.

Render a single rule for a single device size​

/**
* Render a single rule for a single device size.
*/
FLBuilderCSS::rule( array(
'selector' => ".fl-node-$id .some-element",
'media' => 'max-width: 980px', // Optional. Can be 'default', 'medium', 'responsive' or a custom statement.
'enabled' => 'bar' === $settings->foo, // Optional.
'props' => array(
'background-image' => $settings->bg_image_src,
'background-repeat' => $settings->bg_repeat_responsive,
),
) );

Render a single rule/property for all device sizes​

/**
* Render a single rule/property for all device sizes (default, medium, responsive).
* For this to work, your field must be defined as 'responsive' => `true`.
*/
FLBuilderCSS::responsive_rule( array(
'settings' => $settings,
'setting_name' => 'align', // As in $settings->align.
'selector' => ".fl-node-$id .some-element",
'prop' => 'text-align',
) );

Render the rule/properties for a dimension field​

/**
* Renders the rule/properties for a dimension field.
*/
FLBuilderCSS::dimension_field_rule( array(
'settings' => $settings,
'setting_name' => 'padding',
'selector' => ".fl-node-$id .some-element",
'unit' => 'px', // Omit if custom unit select is used.
'props' => array(
'padding-top' => 'padding_top', // As in $settings->padding_top
'padding-right' => 'padding_right',
'padding-bottom' => 'padding_bottom',
'padding-left' => 'padding_left',
),
) );

Render the rule/properties for a typography field​

/**
* Renders the rule/properties for a typography field.
*/
FLBuilderCSS::typography_field_rule( array(
'settings' => $settings,
'setting_name' => 'typography', // As in $settings->typography
'selector' => ".fl-node-$id .some-element",
) );

Render the rule/properties for a border field​

/**
* Renders the rule/properties for a border field.
*/
FLBuilderCSS::border_field_rule( array(
'settings' => $settings,
'setting_name' => 'item_border', // As in $settings->item_border
'selector' => ".fl-node-$id .some-element",
) );

Settings Compatibility Helper​

You can change or remove settings for a module in a backwards compatible way using the settings compatibility helper. All module instances receive a filter_settings method that can be overridden to transform your settings before they are consumed by Beaver Builder, as in the following example.

class FLExampleModule extends FLBuilderModule {

public function __construct() {
parent::__construct( array(
'name' => 'Example',
) );
}

public function filter_settings( $settings ) {

/**
* Convert an old setting to a new setting.
* Don't forget to unset the old setting!
*/
if ( isset( $settings->old_setting ) ) {
$settings->new_setting = do_something_with_old_setting( $settings->old_setting );
unset( $settings->old_setting );
}

/**
* Change an existing setting.
*/
if ( isset( $settings->existing_setting ) ) {
$settings->existing_setting = do_something( $settings->existing_setting );
}

/**
* Always return the settings when you are done.
*/
return $settings;
}
}