function template_preprocess_mixitup_views_view_mixitup in MixItUp Views 8
Same name and namespace in other branches
- 8.2 templates/mixitup_views.theme.inc \template_preprocess_mixitup_views_view_mixitup()
Prepares variables for view templates.
Default template: mixitup-views-view-mixitup.html.twig.
Parameters
array $variables: An associative array containing:
- view: A ViewExecutable object.
- rows: The raw row data.
- options: An array of options. Each option contains:
- separator: A string to be placed between inline fields to keep them visually distinct.
File
- templates/
mixitup_views.theme.inc, line 23 - Preprocessors and helper functions to make theming easier.
Code
function template_preprocess_mixitup_views_view_mixitup(array &$variables) {
$mixitup_func = \Drupal::service('mixitup_views.func_service');
// Run preprocess function for unformatted style.
template_preprocess_views_view_unformatted($variables);
if (!$mixitup_func
->isMixitupInstalled()) {
\Drupal::messenger()
->addError(t('mixitup.min.js has not been found in libraries/mixitup/dist directory.'));
}
else {
$view = $variables['view'];
$results = $view->result;
$style = $view->style_plugin;
$options = $style->options;
// Pulls sorts data.
$sort_keys = [];
if (isset($options['use_sort']) && $options['use_sort'] == 1 && isset($options['sorts'])) {
foreach ($options['sorts'] as $sort_item => $label) {
if (empty($label)) {
unset($options['sorts'][$sort_item]);
continue;
}
$sort_keys[$sort_item] = $label;
}
}
$mixitup_func_service = \Drupal::service('mixitup_views.func_service');
foreach ($results as $id => $result) {
if (property_exists($result, 'nid')) {
$classes = $mixitup_func_service
->getRowClasses($result->nid);
}
elseif (property_exists($result, 'tid')) {
$classes = $mixitup_func_service
->getRowClasses($result->tid);
}
else {
$classes = '';
}
$variables['rows'][$id]['attributes']
->addClass('mix_item mix');
$variables['rows'][$id]['attributes']
->addClass($classes);
// Add sort attributes.
$sorts_fields = array_intersect_key((array) $result, $sort_keys);
if (!empty($sorts_fields)) {
foreach ($sorts_fields as $field_id => $val) {
$variables['rows'][$id]['attributes']
->setAttribute('data-' . $field_id, $val);
}
}
}
$filters = \Drupal::formBuilder()
->getForm('Drupal\\mixitup_views\\Form\\MixitupFiltersForm', $options);
$variables['filters'] = \Drupal::service('renderer')
->render($filters);
// Display content in a Mixitup layout.
$container = '.view-' . Html::cleanCssIdentifier($view->storage
->get('id')) . '.view-display-id-' . $view->current_display . ' .view-content';
$settings = mixitup_views_get_settings($container, $options);
$variables['#attached']['drupalSettings'] = $settings;
$variables['#attached']['library'][] = 'mixitup_views/mixitup-views';
}
}