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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Customising the CMS /

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

Using a Loop for Creating Custom Fields


Go to End


4 Posts   1461 Views

Avatar
juneallison

Community Member, 110 Posts

16 July 2011 at 3:04am

Hi,

I have to create a large number of custom fields for a specific page template. I understand how to create these custom fields manually (one by one) and make them appear in the admin area.

Is it possible to have/create a for or while loop that will create these custom fields?

And suggestions or code examples would be greatly appreciated!

Thank you!

Avatar
Willr

Forum Moderator, 5523 Posts

16 July 2011 at 2:04pm

No you can't. All fields need to be declared in a static array. If you are in a position of needing lots and lots of fields then you should be looking at creating a datamodel that supports that. E.g create a DataObject to handle your field and attach it to a page using a 'has_many'. Tutorial 5 has information about relationships - http://doc.silverstripe.org/sapphire/en/tutorials/5-dataobject-relationship-management.

Avatar
juneallison

Community Member, 110 Posts

17 July 2011 at 2:04am

@Willr - Thanks for your reply and pointing out the tutorial!

I'm going to have to read this tutorial a couple more times. In the mean time I wanted to ask a question about what I am specifically looking to do. I think what I need to accomplish might have one more level to it than this tutorial demonstrates.

Basically I have a page type that can have up to 6 mini galleries. I've already created this page and have used the (static) custom field approach to create fields for the title and description of each gallery. On the page template side of things a gallery area will only show if the gallery title is filled in.

So each mini gallery can have up to 12 images. Each DataObject(?) needs to have a thumbnail, large image and a caption. I'm not using any kind of gallery module. I'm using some jquery scripts to show thumbnails that open in lightboxes and all of the thumbnails are contained in a slider. I just need away to allow the admin to add images to each mini gallery. And then I need to be able to output these images.

So just thinking outloud, setting up the Image DataObject will be like setting up a student ...Thumbnail, large image and Caption instead of First Name, Last Name and Nationality. And in some sense a mini gallery will be like a Mentor ...where it can have numerous images associated with it.

I guess where I'm getting stuck is how to associate each mini gallery to a page, allow a page to have more than one mini gallery and link the mini galleries to their corresponding gallery area that already exists. (or can potentially exist). For instance the current page template has custom fields GalleryTitle01, GalleryDescription01, GalleryTitle02, GalleryDescription02, etc. (up to 6). A single gallery area will output GalleryTitle01, GalleryDescription01 and the corresponding mini gallery.

Any feedback you are willing to share on this would be great. Thank you!

Avatar
juneallison

Community Member, 110 Posts

17 July 2011 at 2:25am

And just to think out loud again.... Above I think I'm basically saying:

An Image Object (thumbnail, image, caption) needs to be associated with a single mini-gallery. A mini-gallery needs to be associated with a page and a specific area of that page (one of the 6 gallery areas).

Thanks!