Search code examples
ploneplone-4.x

Plone: default display for new created content


I have a browser view my_custom_display, that can be selected for folders using the menu: Display -> my_custom_display.

The problem appears after I select the custom display and I'm trying to create new objects inside the folder with this custom display.

By default all new items seems to have my_custom_display and my solution is to manually fix it with /selectViewTemplate?templateId=folder_listing.

What is the better solution for this situations? (Set a display only for the item itself not any new child inside it.)

(It's annoying because my browser view generates errors if used in wrong place. Yes, I can improve it, but...)

Update: In /portal_types/Folder/manage_propertiesForm I added my_custom_display in Available view methods. I need it only for specific folders.


Solution

  • Solved by forcing layout setting on folder creation:

    <subscriber
        for="Products.ATContentTypes.interfaces.IATFolder
             Products.Archetypes.event.ObjectInitializedEvent"
        handler="my.package.globalhandlers.set_folder_listing_by_default" />
    

    added in configure.cfg. Then:

    def set_folder_listing_by_default(folder, event):
        """ Set folder_listing as default Display for new created folders.
        """
        folder.setLayout('folder_listing')
    

    Seems not nice, but it solved my issue. :)