breadlesscode/neos-listable

There is no license information available for the latest version (v2.1.3) of this package.

Neos Fusion implementation for listable things

Maintainers

👁 breadlesscode

Package info

github.com/breadlesscode/neos-listable

Type:neos-plugin

pkg:composer/breadlesscode/neos-listable

Statistics

Installs: 9 011

Dependents: 1

Suggesters: 0

Stars: 2

Open Issues: 2

v2.1.3 2022-12-09 10:27 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

Unknown License 9b16c475feb67aaa238748841ee8905e950918c8


README

👁 Latest Stable Version
👁 Downloads
👁 License
👁 GitHub stars
👁 GitHub watchers

This Neos CMS plugin is for listing and paginate NodeTypes in Fusion. This package is heavily inspired by Flowpack.Listable, thanks for that :)

Installation

Most of the time you have to make small adjustments to a package (e.g., the configuration in Settings.yaml). Because of that, it is important to add the corresponding package to the composer from your theme package. Mostly this is the site package located under Packages/Sites/. To install it correctly go to your theme package (e.g.Packages/Sites/Foo.Bar) and run following command:

Important: If you use a Neos Version >5 you should require version 1 of this package.

composer require breadlesscode/neos-listable --no-update

The --no-update command prevent the automatic update of the dependencies. After the package was added to your theme composer.json, go back to the root of the Neos installation and run composer update. Your desired package is now installed correctly.

Example

prototype(Vendor.Xy:MyPersonalList) < prototype(Breadlesscode.Listable:List) {
 collection = ${ q(site).find('[instanceof Vendor.Xy:BlogPost]') }
 limit = ${ 10 }
 itemRenderer = 'Vendor.Xy:MyPersonalListItem'
 itemName = ${ 'item' }
 # if you want no pagination you can set this property:
 # paginated = ${ false }
}

prototype(Vendor.Xy:MyPersonalListItem) < prototype(Neos.Fusion:Tag) {
 tagName = 'a'
 content = ${ q(item).property('title') }
 attributes {
 href = Neos.Neos:NodeUri {
 node = ${ item }
 }
 }

 @process.headlineWrap = ${ '<h2>' + value '</h2>' }
}

Configuration

You have to possibilities to configure the pagination of this package. You can set the configurations global via Settings.yaml:

Breadlesscode:
 Listable:
 pagination:
 showSeperators: true
 showNextAndPrevious: true
 alwaysShowNextAndPrevious: true
 showFirstAndLast: true
 alwaysShowFirstAndLast: true
 alwaysShowFirstAndLastNumeric: false
 numberOfLinks: 3
 labels:
 seperator: '&hellip;'
 previous: '&lang;'
 next: '&rang;'
 first: '&laquo;'
 last: '&raquo;'

And you can overwrite this configuration in Fusion for a specific list:

prototype(Vendor.Xy:MyPersonalList) < prototype(Breadlesscode.Listable:List) {
 # ...
 paginationConfig {
 showSeperators = true
 showNextAndPrevious = true
 alwaysShowNextAndPrevious = true
 showFirstAndLast = true
 alwaysShowFirstAndLast = true
 alwaysShowFirstAndLastNumeric = false
 numberOfLinks = 3

 labels {
 seperator = '&hellip'
 previous = '&lang;'
 next = '&rang;'
 first = '&laquo;'
 last = '&raquo;'
 }
 }
}

License

The MIT License (MIT). Please see License File for more information.