function template_preprocess_uikit_view_slider in UIkit Components 8.3
Prepares variables for UIkit Slideshow templates.
Default template: uikit-view-slideshow.html.twig.
Parameters
array $variables: An associative array containing:
- view: A ViewExecutable object.
- rows: The raw row data.
1 string reference to 'template_preprocess_uikit_view_slider'
- UIkitViews::getThemeHooks in uikit_views/
src/ UIkitViews.php - Returns the theme hook definition information for UIkit Views.
File
- uikit_views/
includes/ uikit_views.theme.inc, line 176 - Preprocessors and helper functions to make theming easier.
Code
function template_preprocess_uikit_view_slider(array &$variables) {
$view = $variables['view'];
$options = $view->style_plugin->options;
// Add option to the variables array.
foreach ($options as $option => $value) {
$variables[$option] = $value;
}
$items = [];
// Iterate over each rendered views result row.
foreach ($variables['rows'] as $result_index => $item) {
$items[$result_index]['content'] = $item;
if ($options['image_field']) {
$image = $view->style_plugin
->getField($result_index, $options['image_field']);
$items[$result_index]['image'] = $image;
}
if ($options['title_field']) {
$title = $view->style_plugin
->getField($result_index, $options['title_field']);
$items[$result_index]['title'] = $title;
}
if ($options['caption_field']) {
$caption = $view->style_plugin
->getField($result_index, $options['caption_field']);
$items[$result_index]['caption'] = $caption;
}
if ($options['thumbnav'] && $options['thumbnav_field']) {
$thumbnail = $view->style_plugin
->getField($result_index, $options['thumbnav_field']);
$items[$result_index]['thumbnail'] = $thumbnail;
}
}
// Add items to the variables array.
$variables['items'] = $items;
// Create slider attributes for template.
$slider_data = [];
$slider_data[] = 'autoplay: ' . $options['autoplay'];
$slider_data[] = 'autoplay-interval: ' . $options['autoplay_interval'];
if ($options['center']) {
$slider_data[] = 'center: ' . $options['center'];
}
if ($options['finite']) {
$slider_data[] = 'finite: ' . $options['finite'];
}
$slider_data[] = 'index: ' . $options['index'];
if ($options['pause_on_hover']) {
$slider_data[] = 'pause-on-hover: ' . $options['pause_on_hover'];
}
if ($options['sets']) {
$slider_data[] = 'sets: ' . $options['sets'];
}
$slider_data[] = 'velocity: ' . $options['velocity'];
if ($options['caption_transition'] != NULL && $options['caption_toggle'] == FALSE) {
$slider_data[] = 'clsActivated: uk-transition-active';
}
$data_slider = implode('; ', $slider_data);
// Add slider_attributes to the variables array.
$variables['slider_attributes'] = new Attribute([
'data-uk-slider' => $data_slider,
]);
// Create grid attribute for template.
$grid_attributes = new Attribute([
'data-uk-grid' => "",
'class' => [
'uk-slider-items',
'uk-grid',
],
]);
if ($options['grid_gutter'] != NULL) {
$grid_attributes
->addClass($options['grid_gutter']);
}
foreach ([
'',
'@s',
'@m',
'@l',
'@xl',
] as $size) {
$grid_attributes
->addClass($options["width_" . $size]);
}
if ($options['grid_match_height'] == TRUE && $options['grid_match_height_selector'] == NULL) {
$grid_attributes
->addClass('uk-grid-match');
}
if ($options['grid_match_height'] == TRUE && $options['grid_match_height_selector'] != NULL) {
$grid_attributes
->setAttribute('data-uk-height-match', 'target: ' . $options['grid_match_height_selector']);
}
// Add grid_attributes to the variables array.
$variables['grid_attributes'] = $grid_attributes;
// Create attributes for slidenav.
$variables['slidenav_left_attributes'] = new Attribute([
'data-uk-slidenav-previous' => "",
'data-uk-slider-item' => 'previous',
]);
$variables['slidenav_right_attributes'] = new Attribute([
'data-uk-slidenav-next' => "",
'data-uk-slider-item' => 'next',
]);
// Set other necessary attributes variables for twig template.
$variables['caption_attributes'] = new Attribute();
$variables['panel_attributes'] = new Attribute();
}