getThirdPartySetting('block_class', 'classes'))) { $entity->unsetThirdPartySetting('block_class', 'classes'); } } /** * Implements hook_form_FORM_ID_alter(). */ function block_class_form_block_form_alter(&$form, FormStateInterface $form_state, $form_id) { if (\Drupal::currentUser()->hasPermission('administer block classes')) { /** @var \Drupal\block\BlockInterface $block */ $block = $form_state->getFormObject()->getEntity(); // This will automatically be saved in the third party settings. $form['third_party_settings']['#tree'] = TRUE; $form['third_party_settings']['block_class']['classes'] = [ '#type' => 'textfield', '#title' => t('CSS class(es)'), '#description' => t('Customize the styling of this block by adding CSS classes. Separate multiple classes by spaces.'), '#default_value' => $block->getThirdPartySetting('block_class', 'classes'), ]; } } /** * Implements hook_preprocess_HOOK(). */ function block_class_preprocess_block(&$variables) { // Blocks coming from page manager widget does not have id. if (!empty($variables['elements']['#id'])) { $block = Block::load($variables['elements']['#id']); if ($block && $classes = $block->getThirdPartySetting('block_class', 'classes')) { $classes_array = explode(' ', $classes); foreach ($classes_array as $class) { $variables['attributes']['class'][] = Html::cleanCssIdentifier($class, []); } } } } /** * Implements hook_help(). */ function block_class_help($route_name, RouteMatchInterface $route_match) { switch ($route_name) { // Main module help for the forms_to_email module. case 'help.page.block_class': $output = ''; $output .= '

' . t('About') . '

'; $output .= '

' . t("Block Class allows users to add classes to any block through the block's configuration interface. Hooray for more powerful block theming!") . '

'; $output .= '

' . t('Installation note') . '

'; $output .= '
'; $output .= '
' . t('Enable the module on extend menu.', [':extend_link' => \Drupal::url('system.modules_list')]) . '
'; $output .= '
'; $output .= '

' . t('Usage') . '

'; $output .= '
'; $output .= '
' . t("To add a class to a block, simply visit that block's configuration page at Administration > Structure > Block Layout and click on Configure of the desired block.") . '
'; $output .= '
'; return $output; } }