This repository has been archived by the owner on Oct 24, 2023. It is now read-only.
generated from SU-SWS/stanford_starter
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsaa_victoria_subtheme.theme
138 lines (113 loc) · 5.23 KB
/
saa_victoria_subtheme.theme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
/**
* @file
* Preprocess functions for Stanford Starter.
*/
/**
* Prepares variables for the html.html.twig template.
*/
function saa_victoria_subtheme_preprocess_html(&$variables) {
$variables['stanford_basic_path'] = \Drupal::service('extension.list.theme')->getPath('stanford_basic');
}
/**
* Prepares variables for the page
*/
function saa_victoria_subtheme_preprocess_page(&$variables) {
$variables['site_name'] = \Drupal::config('system.site')->get('name');
}
/**
* Prepares variables for the paragraph - mainly used when editing the paragraph
*/
/**
* Implements hook_preprocess_HOOK().
*/
function saa_victoria_subtheme_preprocess_ds_entity_view(&$variables) {
// if not running on a paragraph, exit out.
if (!isset($variables['content']['#paragraph'])) {
return;
}
$paragraph = $variables['content']['#paragraph'];
// Process Cards
if ($paragraph->bundle() == 'stanford_card') {
saa_victoria_preprocess_card($variables);
}
// Process Banners
if ($paragraph->bundle() == 'stanford_banner') {
saa_victoria_preprocess_banner($variables);
}
}
function saa_victoria_preprocess_card(&$variables) {
$paragraph = $variables['content']['#paragraph'];
// Add border style class to card wrapper.
$variables['attributes']['class'][] = $paragraph->getBehaviorSetting('react_paragraphs:card_variant_info', 'card_border_style', 'su-card-wrapper--border-regular');
// Add list style class to card wrapper.
$variables['attributes']['class'][] = $paragraph->getBehaviorSetting('react_paragraphs:card_variant_info', 'card_list_style', 'su-card-wrapper--no-list');
$card_info = [];
// Add card type class to card wrapper. 3rd variable provides the default card type.
$card_info['card_type'] = $paragraph->getBehaviorSetting('react_paragraphs:card_variant_info', 'card_type', 'su-card-wrapper--icon');
$variables['attributes']['class'][] = $card_info['card_type'];
$imageCount = $paragraph->get('su_card_media')->count();
// Check for media in a card then set classes.
if (!$imageCount) {
return;
}
// Icon card check
if ($card_info['card_type'] == 'su-card-wrapper--icon') {
// Set responsive image style for icons.
$variables['content']['#fields']['card_image']['su_card_media'][0]['#stanford_media_image_style'] = 'full_responsive';
return;
}
// Vertical card check
if ($card_info['card_type'] == 'su-card-wrapper--vertical') {
// Set responsive image style for rectangle.
$variables['content']['#fields']['card_image']['su_card_media'][0]['#stanford_media_image_style'] = 'card_2_1';
return;
}
if ($card_info['card_type'] != 'su-card-wrapper--horizontal') {
return;
}
// All horizontal
$card_info['horizontal_card_image_style'] = $paragraph->getBehaviorSetting('react_paragraphs:card_variant_info', 'horizontal_card_image_style', 'su-horizontal-card-wrapper--large-rectangle');
$variables['attributes']['class'][] = $card_info['horizontal_card_image_style'];
// Small circle image
if ($card_info['horizontal_card_image_style'] === 'su-horizontal-card-wrapper--small-circle') {
// Set responsive image style for circle.
$variables['content']['#fields']['card_image']['su_card_media'][0]['#stanford_media_image_style'] = 'responsive_1_1';
return;
}
// Horizontal rectangle image
if ($card_info['horizontal_card_image_style'] === 'su-horizontal-card-wrapper--large-rectangle') {
// Add image position class to card wrapper.
$card_info['horizontal_card_image_position'] = $paragraph->getBehaviorSetting('react_paragraphs:card_variant_info', 'horizontal_card_image_position');
$variables['attributes']['class'][] = $card_info['horizontal_card_image_position'];
// Set responsive image style for rectangle.
$variables['content']['#fields']['card_image']['su_card_media'][0]['#stanford_media_image_style'] = 'card_2_1';
}
// End card check
}
function saa_victoria_preprocess_banner(&$variables) {
// If banner has an image, add a class
if (isset($variables['content']['#fields']['hero_image']['su_banner_image']['#object'])) {
$variables['attributes']['class'][] = 'saa-banner--has-image';
// Banners use 'full_responsive' mode already. This is a placeholder to use this line once a responsive 1:1 ratio style exists in our d8core
// $variables['content']['#fields']['hero_image']['su_banner_image'][0]['#stanford_media_image_style'] = 'full_responsive';
// Check if there is a card
if (isset($variables['content']['#fields']['hero_super_headline']['su_banner_sup_header']['#object']) || isset($variables['content']['#fields']['hero_headline']['su_banner_header']['#object']) || isset($variables['content']['#fields']['hero_body']['su_banner_body']['#object'])) {
$variables['attributes']['class'][] = 'saa-banner--has-card';
}
else {
$variables['attributes']['class'][] = 'saa-banner--no-card';
}
}
else {
$variables['attributes']['class'][] = 'saa-banner--no-image';
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function saa_victoria_subtheme_theme_suggestions_block_alter(array &$suggestions, array $variables) {
if (!empty($variables['elements']['#id']) && $variables['elements']['#id'] == 'saa_victoria_subtheme_search') {
$suggestions[] = 'block__stanford_basic_search';
}
}