Jump to:

17452 Posts in 4473 Topics by 1971 members

Archive

SilverStripe Forums » Archive » Image list associated to a page

Our old forums are still available as a read-only archive.

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

Page: 1
Go to End
Author Topic: 1525 Views
  • thi3r
    Avatar
    Community Member
    25 Posts

    Image list associated to a page Link to this post

    Hi,
    I am building my first website with SilverStripe and came across the following problem.

    One of my template needs to be associated with a list of images that would be uploaded and managed via the CMS.
    I used an HasManyComplexTableField as following to add and manage images:

    class projectPage extends Page
    {
       static $db = array
       (
          .....
       );   
       static $has_one = array
       (      
       );   
       static $has_many = array
       (
          'Images' => 'ProjectImage'
       );

    function getCMSFields()
    {
          $fields = parent::getCMSFields();         
    .....      
          
          $tablefield = new HasManyComplexTableField(
             $this,
             'Images',
             'ProjectImage',
             array(
                'Title' => 'Image Title'
             ),
             'getCMSFields_forPopup'
          );
          $tablefield->setAddTitle( 'an Image' );      
          $fields->addFieldToTab( 'Root.Content.Images', $tablefield );
                
          return $fields;
       }

    }

    Here is the ProjectImage class:

    class ProjectImage extends DataObject
    {
       static $db = array
       (
          'Title' => 'Varchar'
       );
       
       static $has_one = array
       (
          'Project' => 'projectPage',
          'Image' => 'Image'
       );   
       
       function getCMSFields_forPopup()
       {
          $fields = new FieldSet();
          $fields->push( new TextField( 'Title' ) );
          $fields->push( new ImageField( 'Image' ) );
          return $fields;
       }
    }

    This all works quite OK, I manage to display the list of images back on the page via <% control Images %> but I can't get it to display the images themselves. The $Title works fine on the other hand.
    I tried using $Images, $Images.URL or $URL, but nothing seem to work. If someone could help me with that, it would be much appreciated.

    Also, I was wondering some little things, to make this all work and look better....

    Is it possible to add a preview of the picture within the HasManyComplexTableField on the CMS page? I tried to add the Image object to the field list of the table, but this makes the all thing crash.

    Is it also possible to "link" the list of images to only one page (the one where they have been added from) rather than linked to the Page Type. So far if a new page is created, this page will also display the list of images added on any other pages (this can be messy to manage if for example, each projectPage contain 10+ images and there is 20+ projectPages...)

    Maybe this is not the best way to achieve what I am trying to do. And I would be happy to hear any better solution.
    I know this might be a lot to ask all at once, and I hope it all make sense.

    Thanks for you help - Thierry

  • thi3r
    Avatar
    Community Member
    25 Posts

    Re: Image list associated to a page Link to this post

    never mind this... just solved my little problem: just had to use $Image in the template as it is the Image object child of the $Images list... anyway.. I'm happy with that...

    Still, I would love to know if there is a way to associate some images of the list to a certain page, and so only display in the CMS the list of images associated to that page.

    I have also been trying to use the setFolderName method in order to get those pictures saved in separate folders depending on the page. But this return an error in the CMS. I tried with existing and non-existing folders, different path, nothing works. How does this method works? Where do we specify the path from?

    Thanks.

    1525 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.