visol/neos-assetcollectionhelpers

Last activity 19 days ago
  • 1
  • 1
  • 6
composer require visol/neos-assetcollectionhelpers

Neos package that helps dealing with cache invalidation of AssetCollections used in content

1.0.0

Neos package that helps dealing with cache invalidation of AssetCollections used in content

Version
1.0.0
Type
neos-package
Release Date
05.03.2018 16:45:48
Source
git
Distribution
zip
Requires
Requires (dev)
None
Suggest
None
Provides
None
Conflicts
None
Replaces
None
MIT 66f3e8d694bdc55400dd5f5f0208f1a20ea14493

AssetCollectionHelpers

This Neos package solves some problems when dealing with AssetCollections nodes.

In Neos, it is possible to select any entity in the SelectBoxEditor. AssetCollections in Neos are entities and they are very useful if you want to provide file list or galleries without selecting each file manually.

The only problem is that the content cache is not aware of the following changes:

  • An Asset of an AssetCollection is edited/deleted/replaced
  • An Asset is added to/removed from an AssetCollection

Therefore, if you e.g. upload a new Asset to an existing AssetCollection, your file list will still display only the files present when the cache was last built.

This package provides you with the necessary implementations to work around these problems.

Compatibility and Maintenance

This package is currently being maintained for the following versions:

Neos Version Version Maintained
Neos 3.x 1.0 No
Neos 4.x 2.x Yes
Neos 5.x and above 3.x Yes

Example NodeType configuration

Use AssetCollection as in a SelectBoxEditor:

'My.FoobarCom:Content.FileList':
  [...]
  properties:
    assetCollection:
      type: 'Neos\Media\Domain\Model\AssetCollection'
      ui:
        label: i18n
        inspector:
          group: 'resources'
          editor: 'Neos.Neos/Inspector/Editors/SelectBoxEditor'
          editorOptions:
            dataSourceIdentifier: visol-neos-assetcollections
        reloadIfChanged: true
 

Example fusion caching configuration

In Fusion, we add a cache tag for the given AssetCollection:

prototype(My.FoobarCom:Content.FileList) < prototype(Neos.Neos:ContentComponent) {
    assetCollection = ${q(node).property('assetCollection')}
    @context.assetCollection = ${this.assetCollection}

    @cache {
        mode = 'cached'
        entryIdentifier {
            node = ${node}
        }
        entryTags {
            1 = ${'Node_' + node.identifier}
            2 = ${AssetCollection.Caching.assetCollectionTag(assetCollection)}
        }
    }
    
    [... configure output]
}

The package then monitors changes to assets and asset collections and flushes the cache of all nodes having the affected cache tag.

Credits

https://discuss.neos.io/t/guide-how-to-select-entities-in-the-inspector-neos-2-3-lts/1664

visol digitale Dienstleistungen GmbH, www.visol.ch

The content of the readme is provided by Github
The same vendor provides 6 package(s).