Snippets

Drupal 8 - Ajouter des variables à l'objet javascript DrupalSettings

Partager cet article :

Via le hook hook_page_attachments() :

/**
 * Implements hook_page_attachments().
 *
 * Add custom variables to DrupalSettings.
 */
function MODULE_page_attachments(array &$attachments) {
  $attachments['#attached']['drupalSettings']['basepath'] = base_path();
  $attachments['#attached']['drupalSettings']['pathtotheme'] = base_path() . drupal_get_path('theme', \Drupal::theme()->getActiveTheme()->getName());
  $attachments['#attached']['drupalSettings']['pathtotfiles'] = PublicStream::basePath();
}

 

Drupal 8 - Afficher une liste à puce avec des classes CSS

Partager cet article :

    $items = [];

    $items[] = [
      '#markup' => t('Mon item 1'),
      '#wrapper_attributes' => [
        'class' => [
          'class-css-item-1'
        ]
      ]
    ];

    $items[] = [
      '#markup' => t('Mon item 2'),
      '#wrapper_attributes' => [
        'class' => [
          'class-css-item-2'
        ]
      ]
    ];

    $build = [
      '#theme' => 'item_list',
      '#items' => $items,
      '#list_type' => 'ul',
    ];
    return $build;

 

Drupal 8 - Ajouter un rôle à un utilisateur

Partager cet article :

Simplement utiliser la méthode "addRole" sur l'utilisateur en question en lui passant le nom machine (l'id) du rôle :

$user->addRole('mon_role')

Si vous voulez le faire à la création de l'utilsateur alors vous pouvez utiliser le HOOK_user_presave :

function MON_MODULE_user_presave(Drupal\user\Entity\User $user) {
    $user->addRole('mon_role');
}

 

Drupal 8 - Afficher un bloc où l'on veut

Partager cet article :

On commence par récupérer le service de gestion des blocks :

$block_manager = \Drupal::service('plugin.manager.block');

On construit le bloc que l'on souhaite via son id

$block_array = $block_manager->createInstance('system_breadcrumb_block', []);

On génère le renderable array :

$block_renderable = $block_array->build()

et voila, plus qu'à l'afficher dans un template.

En plus court cela peut donner ça :

$block_manager = \Drupal::service('plugin.manager.block');
$variables['breadcrumbs']= [
    '#type' => 'container',
    "element-content" => $block_manager->createInstance('system_breadcrumb_block', [])->build(),
];

et dans le template twig :

{{ breadcrumbs }}

 

Pages