Issue #2296423 by tim.plunkett, dsnopek, swentel, Manuel Garcia, tedbow, alexpott, xjm, andypost, dawehner, effulgentsia, Berdir, jhedstrom, catch, benjy, jibran, Wim Leers, tstoeckler, larowlan, webchick: Implement layout plugin type in core
2016-12-09 11:55:52 +00:00
< ? php
/**
* @ file
* Provides hook implementations for Layout Discovery .
*/
2017-06-18 09:12:34 +00:00
use Drupal\Core\Render\Element ;
use Drupal\Core\Template\Attribute ;
Issue #2296423 by tim.plunkett, dsnopek, swentel, Manuel Garcia, tedbow, alexpott, xjm, andypost, dawehner, effulgentsia, Berdir, jhedstrom, catch, benjy, jibran, Wim Leers, tstoeckler, larowlan, webchick: Implement layout plugin type in core
2016-12-09 11:55:52 +00:00
/**
* Implements hook_help () .
*/
function layout_discovery_help ( $route_name ) {
switch ( $route_name ) {
case 'help.page.layout_discovery' :
$output = '<h3>' . t ( 'About' ) . '</h3>' ;
$output .= '<p>' . t ( 'Layout Discovery allows modules or themes to register layouts, and for other modules to list the available layouts and render them.' ) . '</p>' ;
2017-08-01 10:01:06 +00:00
$output .= '<p>' . t ( 'For more information, see the <a href=":layout-discovery-documentation">online documentation for the Layout Discovery module</a>.' , [ ':layout-discovery-documentation' => 'https://www.drupal.org/docs/8/api/layout-api' ]) . '</p>' ;
Issue #2296423 by tim.plunkett, dsnopek, swentel, Manuel Garcia, tedbow, alexpott, xjm, andypost, dawehner, effulgentsia, Berdir, jhedstrom, catch, benjy, jibran, Wim Leers, tstoeckler, larowlan, webchick: Implement layout plugin type in core
2016-12-09 11:55:52 +00:00
return $output ;
}
}
/**
* Implements hook_theme () .
*/
function layout_discovery_theme () {
return \Drupal :: service ( 'plugin.manager.core.layout' ) -> getThemeImplementations ();
}
/**
* Prepares variables for layout templates .
*
* @ param array & $variables
* An associative array containing :
* - content : An associative array containing the properties of the element .
2022-10-03 10:44:57 +00:00
* Properties used : #settings, #layout, #in_preview.
Issue #2296423 by tim.plunkett, dsnopek, swentel, Manuel Garcia, tedbow, alexpott, xjm, andypost, dawehner, effulgentsia, Berdir, jhedstrom, catch, benjy, jibran, Wim Leers, tstoeckler, larowlan, webchick: Implement layout plugin type in core
2016-12-09 11:55:52 +00:00
*/
function template_preprocess_layout ( & $variables ) {
2021-11-15 02:19:43 +00:00
$variables [ 'settings' ] = $variables [ 'content' ][ '#settings' ] ? ? [];
$variables [ 'layout' ] = $variables [ 'content' ][ '#layout' ] ? ? [];
2022-10-03 10:44:57 +00:00
$variables [ 'in_preview' ] = $variables [ 'content' ][ '#in_preview' ] ? ? FALSE ;
2017-06-18 09:12:34 +00:00
// Create an attributes variable for each region.
foreach ( Element :: children ( $variables [ 'content' ]) as $name ) {
if ( ! isset ( $variables [ 'content' ][ $name ][ '#attributes' ])) {
$variables [ 'content' ][ $name ][ '#attributes' ] = [];
}
$variables [ 'region_attributes' ][ $name ] = new Attribute ( $variables [ 'content' ][ $name ][ '#attributes' ]);
}
Issue #2296423 by tim.plunkett, dsnopek, swentel, Manuel Garcia, tedbow, alexpott, xjm, andypost, dawehner, effulgentsia, Berdir, jhedstrom, catch, benjy, jibran, Wim Leers, tstoeckler, larowlan, webchick: Implement layout plugin type in core
2016-12-09 11:55:52 +00:00
}