Community Documentation

hook_library

7 system.api.php hook_library()

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 drupal_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 drupal_add_css().
  • '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.

Return value

An array defining libraries associated with a module.

See also

system_library()

drupal_add_library()

drupal_get_library()

Related topics

▾ 10 functions implement hook_library()

common_test_library in modules/simpletest/tests/common_test.module
Implements hook_library().
contextual_library in modules/contextual/contextual.module
Implements hook_library().
drupal_add_library in includes/common.inc
Adds multiple JavaScript or CSS files at the same time.
drupal_get_library in includes/common.inc
Retrieves information for a JavaScript/CSS library.
JavaScriptTestCase::testAttachedLibrary in modules/simpletest/tests/common.test
Tests the addition of libraries through the #attached['library'] property.
JavaScriptTestCase::testGetLibrary in modules/simpletest/tests/common.test
Tests retrieval of libraries via drupal_get_library().
JS_LIBRARY in includes/common.inc
The default group for JavaScript and jQuery libraries added to the page.
overlay_library in modules/overlay/overlay.module
Implements hook_library().
system_library in modules/system/system.module
Implements hook_library().
_openid_get_math_library in modules/openid/openid.inc
Determine the available math library GMP vs. BCMath, favouring GMP for performance.

File

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

Code

<?php
function hook_library() {
  // Library One.
  $libraries['library-1'] = array(
    'title' => 'Library One', 
    'website' => 'http://example.com/library-1', 
    'version' => '1.2', 
    'js' => array(
      drupal_get_path('module', 'my_module') . '/library-1.js' => array(),
    ), 
    'css' => array(
      drupal_get_path('module', 'my_module') . '/library-2.css' => array(
        'type' => 'file', 
        'media' => 'screen',
      ),
    ),
  );
  // 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;
}
?>

Comments

Where is my library?

Something to watch out for. It turns out when you implement hook_library in your module the libraries are not automatically made available to the module. You have to add the library using drupal_add_library('your_module_name', 'name_of_library_you_want_to_load') ; Hope this helps someone.

Dude!

Dude! Where is my library?

sites/all/libraries in D7

If you're looking for a way to include libraries that are not bundled with a module (eg: a jQuery plug-in), see the Libraries API.

Login or register to post comments