Define multiple variables in a custom module using hook_variable_info() Im using the Variable module and need to define a variable with the type "multiple" in my custom module. I've been googled whole my day searching for any documentation or just an example and haven't found anything. 

There are plenty examples how to set the variable in such type like: string, number, radios, but nothing about the "multiple" type.

My "multiple" variable should look like this:



How can I build this kind of variable using hook_variable_info() ?
I figure out this on my own. Hope will be useful for someone.

/**
 * Implements hook_variable_info().
 */
function MY_MODULE_variable_info($options) {

    // Use '[custom]' as a placeholder for the variable name. 
    // It will set these properties ('type' and 'multiple') automatically.
    $variables['custom_vars_[custom]'] = array(
        'title'     =&gt;  t('Custom multiple variable'),
        'group'     =&gt;  'site_information',
        'repeat'    =&gt;  array('type' =&gt; 'string', 'default' =&gt; 'some default value'),
    );

    // if you need to expose your custom variable as token
    // you have to set 'token' key as TRUE, 
    // and ought to set the properties (name, description and type)
    // Notice that 'first' it's a name of variable defined in custom_variable_options().
    $variables['custom_vars_first'] = array(
                    'token' =&gt; TRUE,
                    'title' =&gt; 'Custom variable',                       // name
                    'description' =&gt; 'My first variable description',   // description
                    'type'  =&gt; 'string'                                 // type
                    );
  return $variables;
}

/**
 * Implements hook_variable_type_info().
 * @return
 *  An array of information defining variable types. 
 *  The array contains a sub-array for each variable type
 *  with the variable type as the key.
 *  The possible attributes are the same as for hook_variable_info().
 */
function MY_MODULE_variable_type_info() {
    $type['custom'] = array(
        'title' =&gt; t('Custom variables'),
        'type'  =&gt; 'select',
        'options callback' =&gt; 'custom_variable_options',
    );
    return $type;
}

/**
 * Callback for custom options.
 * @return
 *  An array of variables with the variable name as the key.
 */
function custom_variable_options($variable, $options) {
  return array(
    'first'  =&gt; t('My first variable', array(), $options), 
    'second' =&gt; t('My second variable', array(), $options), 
    'third'  =&gt; t('My third variable', array(), $options),
  );
}


Want to see how it works?


Install Variable module
Enable: Variable, Variable store, Variable Admin
Place this code in your custom module (replace 'MY_MODULE' to your module name)
Clear caches.


Results:

admin/config/system/variable -> site information



admin/config/system/variable/group/site_information



admin/config/search/path/patterns