Search

OK, this is a big request - I get that before I even ask. But I think it’s necessary for Symphony going forward. It’s going to take some explaining, so bear with me. Some of this functionality is available by bashing extensions together, but I would like this implemented as core functionality as none of the extensions seem to work properly at present.

The examples I provide are the best way I can think of representing this - if you’ve ever worked with a certain large “enterprise” (hah) CMS, you should be able to recognise them for what they are.

Scenario 1: Single repeating field

I should be able to define a single field as being able to exist multiple times against a single entry - ie. multiple file uploads on a single entry. For example:

<field type="text" label="My Field" id="my-field" minimum-items="0" maximum-items="unlimited" default="1">/>

Example output

<myentry>
    <my-field>Hi There!</my-field>
    <my-field>And another.</my-field>
    ...
</myentry>

Scenario 2: AND field set

Being able to define a field set, or group of fields that can be repeated together - ie.

<container minimum-items="0" maximum-items="unlimited" default="1" type="and" id="my-container">
    <field type="text" label="My Field" id="my-field"/>
    <field type="fileupload" label="My File" id="my-file"/>
</container>

This control would add a block containing all fields defined, and allow you to create multiple blocks.

Example output

<myentry>
    <my-containers>
        <my-container>
            <my-field>Image One.</my-field>
            <my-file>/some/path/image1.jpg</my-file>
        </my-container>
        <my-container>
            <my-field>Image Two.</my-field>
            <my-file>/some/other/path/image2.jpg</my-file>
        </my-container>
    </my-containers>
    ...
</myentry>

Scenario 3: OR field set

Being able to define a field set, or group of fields that can contain multiple entries but only from a predefined list of field types - ie.

 <container minimum-items="0" maximum-items="unlimited" default="1" type="or" id="my-container">
    <field type="text" label="My Field" id="my-field"/>
    <field type="fileupload" label="My File" id="my-file"/>
</container>

This control would offer the option of adding a new item, but would make you select that new item from the list of allowed fields.

Example output

<myentry>
    <my-container>
        <my-field>Image One.</my-field>
    </my-container>
    <my-container>
        <my-file>/some/other/path/image2.jpg</my-file>
    </my-container>
    ...
</myentry>

Note: I think it is important to allow a certain amount of nesting in these fields - so a container should be able to contain another container (of any type).

Is this not already possible with Buzzomatic’s Subsection Field?

My field is buggy, and we never seem to have time to fix it.

That said, it’s not like your these suggestions would be quick and easy to implement either…

Yeah, I know this is a huge ask - I just want to get it on the radar for future releases.

Do you mean having groups of fields and being able to enter one and then say, “I want another of the same”?

That’s EXACTLY what I’ve been looking for. You can kind of wrench it together with the Mediathek plugin but it’s not perfect.

To give my version of an example: On my website I have a plan to eventually implement “project features” on each project page. The number of these could range from 0 to 10 (or more on larger projects) and I don’t want to make ten sets of fields and test for them.

When this works properly, I’d be able to group a set of fields and then say that I could have multiple iterations of it. Then, when filling out the content, I could create new entries for that field group.

Though, I think this would be best served as a plugin rather than core functionality. The reason being it would help to keep Symphony more modular. I rather like that about Symphony.

In terms of database normalization, you would create a new section (table) and create a section link. This way, you can add any number of items of a certain type to a section which is linked to an entry in another section.

Now, I do think that an extension that would embed this functionality in an existing entry creation/editing screen would be great for users. However, on the back-end, I feel that the level of Symphony’s current database normalization needs to be retained.

I don’t think it would be overly difficult. As I said, some of the functionality is already possible through the Mediathek plugin.

In my case I’d simply like the ability to have a group that has a title, two upload fields, a tag field and a textarea field. If it was in a flexible framework that allowed me to add any fields I chose the system could be modified to fit dozens of cases.

I don’t suppose there’s been any progression on this? I’d love to do it myself it’s just I’m not a back-end developer and get pretty lost pretty quickly whenever PHP is required.

There are quite a few issues involved with doing this, the system simply isn’t setup to allow arbitrary grouping and repeating of fields. A quick rundown on the problems:

  • There’s no existing user interface for it,
  • Events expect data to be given in a particular format,
  • The database structure would need to be changed,
  • Individual fields would need to be updated,
  • It definitely breaks backwards compatibility.

There’s no easy solution, as far as I can tell, we still need to have more discussion before we can think about implementing this.

My $.02: This really sounds like something best suited for a native XML DB, which would allow for creating both interface & data validation through defining schemas, etc. I’ve heard vague rumor that a possible aspect of Symphony 3 will be detaching it from a specific database, which could open the door for using an XMLDB, and facilitate something something like you’re describing here.

Hello there,

anything new about the this? Does Symphony supports repeating fields by core or maybe by an addon now?

The Subsection Manager extension is the best solution to this.

Subsection Manager or Meta Keys are close approximations.

(Edit: too slow!)

This would be superb as an extension in itself. This exact feature is in a Wordpress plugin called Magic Fields (and also in Flutter) where you can either set a field to be repeatable, or a group of fields to be repeatable.

Similar to how the the Attachments of this forum works, with the “Add more” link, thats something I’d like to see!

Subsection Manager does this for you — create another section with the fields you need to be repeatable and it does the rest.

The only thing with Subsection Manager is it shows items from other entries. A better explanation is to give an example of a recent project:

I had a “Projects” section with a Subsection Manager field that pulled in a section called “Links”, so when I added a project, I could add as many links as I wanted. However for each project I add, it displays every link added from every project, when I would like it to display only the links related to the project. Maybe there is a way to do that, I’m not sure?! (I hope I made sense too!)

It’ll display all until you select and save the ones that are relevant to the entry?

Mark, could you please post a feature request for SSM. As the SSM is able to filter by tags a solution would be as easy as adding a pseudo “self” tag to the fields settings.

@brendo: What I mean is for it to never show the other ones at all, Just makes it just that bit more understandable for clients, especially if there is 20 plus items per a project.

@Nills, I will do this yes, how long do you think it would take to implement?

@Mark: The implementation itself shouldn’t take long, the only problem is that I need to find the time for it. I’m currently reviewing Stage which has a few dependencies it shouldn’t have and I’m working on a few things for the Symphiny 2.2 release. That’s virtual life, in real life I’m currently renovating our home and office. So don’t expect anything soon.

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details