materio-d9/web/modules/custom/materio_decoupled/materio_decoupled.module

78 lines
2.1 KiB
Plaintext
Raw Normal View History

<?php
/**
* @file
* Contains materio_decoupled.module.
*/
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_help().
*/
function materio_decoupled_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
// Main module help for the materio_decoupled module.
case 'help.page.materio_decoupled':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('helpers for progressive decoupling') . '</p>';
return $output;
default:
}
}
/**
* Implements hook_page_attachments().
* @param array $attachments
*/
function materio_decoupled_page_attachments(array &$attachments) {
$current_path = \Drupal::service('path.current')->getPath();
2019-10-07 20:26:23 +02:00
$route_name = \Drupal::routeMatch()->getRouteName();
// $route_parameters = \Drupal::routeMatch()->getParameters()->all();
// ksm($route_parameters);
$current_language = \Drupal::languageManager()->getCurrentLanguage()->getId();
$is_front = \Drupal::service('path.matcher')->isFrontPage();
$entity_type = null;
$entity_bundle = null;
$entity_id = null;
2019-07-14 15:58:49 +02:00
$entity_uuid = null;
foreach (['node', 'taxonomy_term'] as $type) {
$entity = \Drupal::routeMatch()->getParameter($type);
if($entity){
$entity_type = $type;
$entity_bundle = $entity->bundle();
$entity_id = $entity->id();
$entity_uuid = $entity->uuid();
break;
}
}
2019-10-07 20:26:23 +02:00
// route_parameters:'".json_encode($route_parameters)."',\n
$js_str = "var drupalDecoupled = {\n
sys_path:'".$current_path."',\n
2019-10-07 20:26:23 +02:00
route_name:'".$route_name."',\n
is_front:".($is_front ? 'true':'false').",\n
lang_code:'".$current_language."',\n
entity_type:'".$entity_type."',\n
entity_bundle:'".$entity_bundle."',\n
entity_id:'".$entity_id."',\n
entity_uuid:'".$entity_uuid."',\n
};";
$attachments['#attached']['html_head'][] = [
[
'#type' => 'html_tag',
'#tag' => 'script',
'#value' => $js_str,
'#weight' => -999,
'#group' => 'decoupled'
],
// A key, to make it possible to recognize this HTML element when altering.
'decoupled',
];
}