function template_preprocess_field_slideshow in Field Slideshow 8.2
Same name and namespace in other branches
- 8 field_slideshow.module \template_preprocess_field_slideshow()
- 7.2 field_slideshow.module \template_preprocess_field_slideshow()
- 7 field_slideshow.module \template_preprocess_field_slideshow()
Implements template_preprocess().
File
- ./
field_slideshow.module, line 65 - Preprocess and theme hook functions.
Code
function template_preprocess_field_slideshow(&$variables) {
$items = $variables['items'];
// Add the JQuery plugins and the JS code.
$libraries_module_exists = \Drupal::moduleHandler()
->moduleExists('libraries');
$colorbox_module_exists = \Drupal::moduleHandler()
->moduleExists('colorbox');
if ($libraries_module_exists) {
$libraries_path = DRUPAL_ROOT . '/libraries';
// Add js variables.
$js_variables = $variables["js_variables"];
$variables['#attached']['library'][] = 'field_slideshow/field_slideshow.view';
$variables['#attached']['drupalSettings']['field_slideshow'] = array(
'field-slideshow-' . $variables['slideshow_id'] => $js_variables,
);
if (file_exists($libraries_path . '/jquery.cycle/jquery.cycle.all.min.js')) {
$variables['#attached']['library'][] = 'field_slideshow/field_slideshow.jquery.cycle.min';
}
elseif (file_exists($libraries_path . '/jquery.cycle/jquery.cycle.all.js')) {
$variables['#attached']['library'][] = 'field_slideshow/field_slideshow.jquery.cycle.all';
}
if ($colorbox_module_exists) {
$colorbox_attachment = \Drupal::service('colorbox.attachment');
$colorbox_applicable = $colorbox_attachment
->isApplicable();
if ($colorbox_applicable) {
$colorbox_attachment
->attach($variables);
}
$variables['#attached']['library'][] = 'colorbox/colorbox-dev';
$variables['#attached']['library'][] = 'colorbox/default';
$variables['#attached']['library'][] = 'colorbox/init';
}
}
// Change order if needed.
if (isset($variables['order'])) {
$get_slide = $items
->getValue();
if ($variables['order'] == 'reverse') {
$slide_order = array_reverse($get_slide);
$items
->setValue($slide_order);
}
elseif ($variables['order'] == 'random') {
shuffle($get_slide);
$items
->setValue($get_slide);
}
}
// Generate slides.
$field_slideshow_zebra = 'odd';
$variables['slides_max_width'] = 0;
$variables['slides_max_height'] = 0;
$slide_theme = isset($variables['breakpoints']) && isset($variables['breakpoints']['mapping']) && !empty($variables['breakpoints']['mapping']) ? 'picture' : 'image_style';
$variables['slide'] = array();
$variables['slides_max_width'] = 0;
$variables['slides_max_height'] = 0;
$variables['colorbox_img_path'] = [];
foreach ($items as $num => $item) {
if (!empty($item
->getValue()['fc_path'])) {
if ($item
->getValue()['fc_path'] != '') {
$variables['fc_url'] = 1;
$node_path = \Drupal::url($item
->getValue()['fc_path']
->getRouteName(), $item
->getValue()['fc_path']
->getRouteParameters());
$variables['fc'][$num]['path'] = $node_path;
}
else {
$variables['fc_url'] = '';
}
$variables['image'][$num]['#item_attributes'] = array_merge($variables['image'][$num]['#item_attributes'], array(
'class' => 'field-slideshow-image field-slideshow-image-' . (1 + $num),
));
}
elseif (!empty($item
->getValue()['fc_file_path'])) {
if ($item
->getValue()['fc_file_path'] != '') {
$variables['fc_url'] = 1;
$file_path = $item
->getValue()['fc_file_path']
->getUri();
$variables['fc'][$num]['path'] = $file_path;
}
else {
$variables['fc_url'] = '';
}
}
// Generate classes.
$field_slideshow_zebra = $field_slideshow_zebra == 'odd' ? 'even' : 'odd';
$classes[] = $field_slideshow_zebra;
if ($num == 0) {
$classes[] = 'first';
}
elseif ($num == count($items) - 1) {
$classes[] = 'last';
}
$variables['slide'][$num]['classes'] = implode(' ', $classes);
// Colorbox!
if (isset($item
->getValue()['path']) && !is_object($item
->getValue()['path'])) {
$variables['colorbox_img_path'][$num]['path'] = $item
->getValue()['path']['uri'];
}
else {
$variables['colorbox_img_path'][$num]['path'] = '';
}
$variables['image_url'] = $variables['image'][$num]['#url'];
if ($variables['image_url'] == '' && $variables['colorbox_img_path'][$num]['path'] != '') {
$variables['colorbox_attributes'][$num] = new Attribute();
$variables['colorbox_attributes'][$num]['title'] = $items[$num]
->getValue()['path']['attributes']['title'];
$variables['colorbox_attributes'][$num]['rel'] = $items[$num]
->getValue()['path']['attributes']['rel'];
$variables['colorbox_attributes'][$num]['class'] = $items[$num]
->getValue()['path']['attributes']['class'];
}
}
// Don't add controls if there's only one image.
if (count($items) == 1) {
$variables['controls'] = '';
$variables['pager'] = '';
}
}