Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Widgets /

Discuss SilverStripe Widgets.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Modifying Gallery Widget : Latest Pictures


Reply


2 Posts   569 Views

Avatar
Fraser

Community Member, 47 Posts

11 June 2012 at 12:22pm

I need to modify the Gallery>Latest Pictures widget slightly to pass through a thumbnail url and a full image URL. I want them both scaled to a certain size;

I have managed to get the URL for the original image but would like your guys' help with getting a resized image in the same way that the Thumbnail is resized

LatestPicturesWidget.php:

function Pictures() {
Requirements::css("widgets_gallery/LatestPicturesWidget.css");
      $nrtoshow = (0<$this->NumberToShow) ? $this->NumberToShow : $this->defaults["NumberToShow"];
      $pictures = DB::query("SELECT f.`ID`, f.`Filename`, f.`Name`, f.`Title`, s.`URLSegment` FROM `gallerypage_live` g LEFT JOIN `sitetree_live` s ON g.`ID` = s.`ID` LEFT JOIN `file` f ON f.`ParentID` = g.`FolderID` WHERE f.`ClassName` = 'Image' ORDER BY f.`Created` DESC LIMIT 0,$nrtoshow;");
   $thumbnails = new DataObjectSet;
   foreach ($pictures as $picture){
       $picture["GalleryLink"] = Director::baseURL().$picture["URLSegment"];
       $thumbnail = new Image($picture);
       $thumbnail = $thumbnail->getFormattedImage( "PaddedImage", $this->ThumbnailWidth, $this->ThumbnailHeight);
       $thumbnail->setField("GalleryLink", Director::baseURL().$picture["URLSegment"]);
   
       $thumbnail->setField("MainLink",Director::baseURL().$picture['Filename']);
            
       $thumbnail->setField("Name", $picture["Name"]);
       $thumbnail->setField("Title", $picture["Title"]);
          $thumbnails->push($thumbnail);
          
   }
   unset($pictures);
      return $thumbnails;
   }

LatestPicturesWidget.ss:

<% control Pictures %>
      <li>
         <!--<a href="$GalleryLink"><img src="$Filename" alt="" title="$Title" class="LatestPicturesImage" /></a>-->
         <a href="$MainLink" class="fancybox" rel="group" title="$Title"><img src="$Filename" alt="" title="$Title" class="LatestPicturesImage" /></a>

      </li>
   <% end_control %>

Thanks in advance

Avatar
Fraser

Community Member, 47 Posts

11 June 2012 at 12:40pm

Solved

function Pictures() {
Requirements::css("widgets_gallery/LatestPicturesWidget.css");
      $nrtoshow = (0<$this->NumberToShow) ? $this->NumberToShow : $this->defaults["NumberToShow"];
      $pictures = DB::query("SELECT f.`ID`, f.`Filename`, f.`Name`, f.`Title`, s.`URLSegment` FROM `gallerypage_live` g LEFT JOIN `sitetree_live` s ON g.`ID` = s.`ID` LEFT JOIN `file` f ON f.`ParentID` = g.`FolderID` WHERE f.`ClassName` = 'Image' ORDER BY f.`Created` DESC LIMIT 0,$nrtoshow;");
      $largeImage = new DataObjectSet;
   $thumbnails = new DataObjectSet;
   foreach ($pictures as $picture){
      
      $largeImage = new Image($picture);
      $largeImage = $largeImage->getFormattedImage( "PaddedImage", 632, 418);

       $picture["GalleryLink"] = Director::baseURL().$picture["URLSegment"];
       
       $thumbnail = new Image($picture);
       $thumbnail = $thumbnail->getFormattedImage( "PaddedImage", $this->ThumbnailWidth, $this->ThumbnailHeight);
       $thumbnail->setField("GalleryLink", Director::baseURL().$picture["URLSegment"]);
   
       $thumbnail -> setField("MainLink",$largeImage);
            
       $thumbnail->setField("Name", $picture["Name"]);
       $thumbnail->setField("Title", $picture["Title"]);
          $thumbnails->push($thumbnail);
          
   }
   unset($largeImage);
   unset($pictures);
      return $thumbnails;
   }