add_control( * 'structure', * [ * 'label' => __( 'Structure', 'plugin-domain' ), * 'type' => Controls_Manager::STRUCTURE, * 'default' => '10', * 'render_type' => 'none', * ] * ); * * @since 1.0.0 * * @param string $label Optional. The label that appears above of the * field. Default is empty. * @param string $description Optional. The description that appears below the * field. Default is empty. * @param int $default Optional. The field default value. Default is * empty. * @param string $separator Optional. Set the position of the control separator. * Available values are 'default', 'before', 'after' * and 'none'. 'default' will position the separator * depending on the control type. 'before' / 'after' * will position the separator before/after the * control. 'none' will hide the separator. Default * is 'none'. * @param bool $show_label Optional. Whether to display the label. Default is * true. * @param bool $label_block Optional. Whether to display the label in a * separate line. Default is true. */ class Control_Structure extends Base_Data_Control { /** * Retrieve structure control type. * * @since 1.0.0 * @access public * * @return string Control type. */ public function get_type() { return 'structure'; } /** * Render structure control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $preset_control_uid = $this->get_control_uid( '{{ preset.key }}' ); ?>
<# var currentPreset = elementor.presetsFactory.getPresetByStructure( data.controlValue ); #>
{{{ elementor.presetsFactory.getPresetSVG( currentPreset.preset, 233, 72, 5 ).outerHTML }}}
<# var morePresets = getMorePresets(); if ( morePresets.length > 1 ) { #>
<# _.each( morePresets, function( preset ) { #>
{{{ preset.preset.join( ', ' ) }}}
<# } ); #>
<# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 'none', 'label_block' => true, ]; } }