hook_toolbar()
Add items to the toolbar menu.
The toolbar is a container for administrative and site-global interactive components.
The toolbar provides a common styling for items denoted by the .toolbar-tab class.
The toolbar provides a construct called a 'tray'. The tray is a container for content. The tray may be associated with a toggle in the administration bar. The toggle shows or hides the tray and is optimized for small and large screens. To create this association, hook_toolbar() returns one or more render elements of type 'toolbar_item', containing the toggle and tray elements in its 'tab' and 'tray' properties.
The following properties are available:
- 'tab': A renderable array.
- 'tray': Optional. A renderable array.
- '#weight': Optional. Integer weight used for sorting toolbar items in administration bar area.
This hook is invoked in toolbar_pre_render().
Return value
An array of toolbar items, keyed by unique identifiers such as 'home' or 'administration', or the short name of the module implementing the hook. The corresponding value is a render element of type 'toolbar_item'.
See also
toolbar_pre_render()
Related topics
- Hooks
- Define functions that alter the behavior of Drupal core.
File
- core/modules/toolbar/toolbar.api.php, line 47
- Hooks provided by the toolbar module.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | function hook_toolbar() { $items = array (); // Add a search field to the toolbar. The search field employs no toolbar // module theming functions. $items [ 'global_search' ] = array ( '#type' => 'toolbar_item' , 'tab' => array ( '#type' => 'search' , '#attributes' => array ( 'placeholder' => t( 'Search the site' ), 'class' => array ( 'search-global' ), ), ), '#weight' => 200, // Custom CSS, JS or a library can be associated with the toolbar item. '#attached' => array ( 'library' => array ( 'search/global' , ), ), ); // The 'Home' tab is a simple link, which is wrapped in markup associated // with a visual tab styling. $items [ 'home' ] = array ( '#type' => 'toolbar_item' , 'tab' => array ( '#type' => 'link' , '#title' => t( 'Home' ), '#url' => Url::fromRoute( '<front>' ), '#options' => array ( 'attributes' => array ( 'title' => t( 'Home page' ), 'class' => array ( 'toolbar-icon' , 'toolbar-icon-home' ), ), ), ), '#weight' => -20, ); // A tray may be associated with a tab. // // When the tab is activated, the tray will become visible, either in a // horizontal or vertical orientation on the screen. // // The tray should contain a renderable array. An optional #heading property // can be passed. This text is written to a heading tag in the tray as a // landmark for accessibility. $items [ 'commerce' ] = array ( '#type' => 'toolbar_item' , 'tab' => array ( '#type' => 'link' , '#title' => t( 'Shopping cart' ), '#url' => Url::fromRoute( 'cart' ), '#options' => array ( 'attributes' => array ( 'title' => t( 'Shopping cart' ), ), ), ), 'tray' => array ( '#heading' => t( 'Shopping cart actions' ), 'shopping_cart' => array ( '#theme' => 'item_list' , '#items' => array ( /* An item list renderable array */ ), ), ), '#weight' => 150, ); // The tray can be used to render arbitrary content. // // A renderable array passed to the 'tray' property will be rendered outside // the administration bar but within the containing toolbar element. // // If the default behavior and styling of a toolbar tray is not desired, one // can render content to the toolbar element and apply custom theming and // behaviors. $items [ 'user_messages' ] = array ( // Include the toolbar_tab_wrapper to style the link like a toolbar tab. // Exclude the theme wrapper if custom styling is desired. '#type' => 'toolbar_item' , 'tab' => array ( '#type' => 'link' , '#theme' => 'user_message_toolbar_tab' , '#theme_wrappers' => array (), '#title' => t( 'Messages' ), '#url' => Url::fromRoute( 'user.message' ), '#options' => array ( 'attributes' => array ( 'title' => t( 'Messages' ), ), ), ), 'tray' => array ( '#heading' => t( 'User messages' ), 'messages' => array ( /* renderable content */ ), ), '#weight' => 125, ); return $items ; } |
Please login to continue.