drowl_paragraphs_bs-1.x-dev/modules/drowl_paragraphs_bs_type_card/drowl_paragraphs_bs_type_card.module
modules/drowl_paragraphs_bs_type_card/drowl_paragraphs_bs_type_card.module
<?php
/**
* @file
* Drowl_paragraphs_bs_type_card module.
*/
use Drupal\Core\Template\Attribute;
/**
* Prepared variables for paragraph output.
*/
function drowl_paragraphs_bs_type_card_preprocess_paragraph(&$variables) {
if ($variables['paragraph']->bundle() == 'card') {
$variables['card_body_attributes'] = new Attribute();
$variables['button_attributes'] = new Attribute();
// Determine the card type
$variables['card_type'] = 'card';
foreach ($variables['attributes']['class'] as $class) {
if (isset($variables['attributes']['class']) && str_starts_with($class, 'card--type-')) {
$variables['card_type'] = str_replace("card--type-","",$class);
}
}
if (isset($variables['attributes']['class'])) {
foreach ($variables['attributes']['class'] as $class) {
if ($variables['card_type'] == 'tile' && (str_starts_with($class, 'bg-') || str_starts_with($class, 'backdrop-filter-'))) {
// Hint: card body == tile overlay.
$variables['attributes']->removeClass($class);
$variables['card_body_attributes']->addClass($class);
}
elseif (str_starts_with($class, 'btn-')) {
$variables['attributes']->removeClass($class);
$variables['button_attributes']->addClass($class);
}
}
}
}
}
/**
* Implements hook_theme().
*/
function drowl_paragraphs_bs_type_card_theme($existing, $type, $theme, $path) {
$templates = $path . '/templates';
return [
'paragraph__drowl_paragraphs_bs__card' => [
'base hook' => 'paragraph',
'path' => $templates,
],
];
}
