breadlesscode/neos-listable

Last activity on 2 February 2020
  • 2
  • 2
  • 1618
composer require breadlesscode/neos-listable

Neos Fusion implementation for listable things

v2.1.0

Neos Fusion implementation for listable things

Version
v2.1.0
Type
neos-plugin
Release Date
Feb 21, 2020 4:00:55 p.m.
Source
git
Distribution
zip
Requires
Requires (dev)
None
Suggest
None
Provides
None
Conflicts
None
Replaces
None
690e62809c435aca3dcf3cde603d46b1adee697b

Neos Listable

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.

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