Drupal 7 Snippet: Photoswipe: Only output first image of image field, but show the rest in swipe gallery

Simple snippet to only output the first image of an imagefield in a view and show the rest of the gallery in the photoswipe overlay.

Hint: Don't forget to add the photoswipe-gallery class on the field wrapper in views settings: http://cgit.drupalcode.org/photoswipe/tree/README.txt?h=7.x-2.x

  1. /**
  2.  * Implements hook_views_pre_render().
  3.  */
  4. function MYMODULE_views_pre_render(&$view) {
  5.   // #webksde#JP20171215: Only show the first image and the rest only in the gallery
  6.   if ($view->name == 'YOUR_VIEW_NAME') {
  7.     if(!empty($view->result)){
  8.       foreach($view->result as $row_key => $row){
  9.         if(!empty($row->field_field_galerie)){
  10.           foreach($row->field_field_galerie as $galerie_item_key => $galerie_item){
  11.             if($galerie_item_key > 0){
  12.               $item = $galerie_item['rendered']['#item'];
  13.               $settings = $galerie_item['rendered']['#display_settings'];
  14.               $alt = !empty($item['alt']) ? $item['alt'] : '';
  15.               $title = !empty($item['title']) ? $item['title'] : '';
  16.  
  17.               if (empty($alt) && !empty($item['field_file_image_alt_text'][LANGUAGE_NONE])) {
  18.                 $alt = $item['field_file_image_alt_text'][LANGUAGE_NONE][0]['value'];
  19.               }
  20.               if (empty($title) && !empty($item['field_file_image_title_text'][LANGUAGE_NONE])) {
  21.                 $title = $item['field_file_image_title_text'][LANGUAGE_NONE][0]['value'];
  22.               }
  23.               if ($style_name = $settings['photoswipe_image_style']) {
  24.                 $path = image_style_url($style_name, $item['uri']);
  25.                 $dimensions = array(
  26.                   'width' => $item['width'],
  27.                   'height' => $item['height'],
  28.                 );
  29.                 image_style_transform_dimensions($style_name, $dimensions);
  30.               }
  31.               else {
  32.                 $path = file_create_url($item['uri']);
  33.               }
  34.  
  35.               $view->result[$row_key]->field_field_galerie[$galerie_item_key]['rendered'] = array(
  36.                 '#theme' => 'link',
  37.                 '#text' => '',
  38.                 '#path' => $path,
  39.                 '#options' => array(
  40.                   'html' => TRUE,
  41.                   'attributes' => array(
  42.                     'class' => 'photoswipe',
  43.                     'data-size' => $item['width'] . 'x' . $item['height'],
  44.                     'data-overlay-title' => $item['title'],
  45.                   )
  46.                 )
  47.               );
  48.             }
  49.           }
  50.         }
  51.       }
  52.     }
  53.   }
  54. }

Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn Sie ein zulässiges Avatar mit Ihrer E-Mail-Adresse verknüpft haben, wird dieses als Avatar verwendet.

Weitere Informationen über Formatierungsoptionen

Aktualisieren Geben Sie die Zeichen ein, die Sie im Bild sehen. Geben Sie die im Bild dargestellten Zeichen ein; wenn Sie diese nicht lesen können, senden Sie das Formular ohne Eingabe ab, um ein neues Bild zu generieren. Groß-/Kleinschreibung wird nicht beachtet.  Switch to audio verification.