1 system.api.php hook_library_info()

Registers JavaScript/CSS libraries associated with a module.

Modules implementing this return an array of arrays. The key to each sub-array is the machine readable name of the library. Each library may contain the following items:

  • 'title': The human readable name of the library.
  • 'website': The URL of the library's web site.
  • 'version': A string specifying the version of the library; intentionally not a float because a version like "1.2.3" is not a valid float. Use PHP's version_compare() to compare different versions.
  • 'js': An array of JavaScript elements; each element's key is used as $data argument, each element's value is used as $options array for backdrop_add_js(). To add library-specific (not module-specific) JavaScript settings, the key may be skipped, the value must specify 'type' => 'setting', and the actual settings must be contained in a 'data' element of the value.
  • 'css': Like 'js', an array of CSS elements passed to backdrop_add_css().
  • 'icons': A simple array with only icon names. Each icon in the list will be resolved to a file path and then added to the page as both a JavaScript variable (Backdrop.icons['icon-name']) and as a CSS variable (--icon-[icon-name]).
  • 'dependencies': An array of libraries that are required for a library. Each element is an array listing the module and name of another library. Note that all dependencies for each dependent library will also be added when this library is added.

Registered information for a library should contain re-usable data only. Module- or implementation-specific data and integration logic should be added separately.

@since 1.28.0 Added "icons" key to library info.

Return value

array: An array defining libraries associated with a module.

See also

system_library_info()

backdrop_add_library()

backdrop_get_library()

Related topics

File

core/modules/system/system.api.php, line 344
Hooks provided by Backdrop core and the System module.

Code

function hook_library_info() {
  // Library One.
  $libraries['library-1'] = array(
    'title' => 'Library One',
    'website' => 'http://example.com/library-1',
    'version' => '1.2',
    'js' => array(
      backdrop_get_path('module', 'my_module') . '/library-1.js' => array(),
    ),
    'css' => array(
      backdrop_get_path('module', 'my_module') . '/library-2.css' => array(
        'type' => 'file',
        'media' => 'screen',
      ),
    ),
    // A full list of icons available from core can be found in the
    // core/misc/icons directory.
    'icons' => array(
      'pencil',
      'image',
      // If needing to use an icon that cannot be overridden by a module or
      // theme, pass an array of options with "immutable" set to TRUE.
      'gear' => array('immutable' => TRUE),
    ),
  );
  // Library Two.
  $libraries['library-2'] = array(
    'title' => 'Library Two',
    'website' => 'http://example.com/library-2',
    'version' => '3.1-beta1',
    'js' => array(
      // JavaScript settings may use the 'data' key.
      array(
        'type' => 'setting',
        'data' => array('library2' => TRUE),
      ),
    ),
    'dependencies' => array(
      // Require jQuery UI core by System module.
      array('system', 'ui'),
      // Require our other library.
      array('my_module', 'library-1'),
      // Require another library.
      array('other_module', 'library-3'),
    ),
  );
  return $libraries;
}