15. Create a custom Listing block variation – Effective Volto – Add-ons

Create a custom Listing block variation

15. Create a custom Listing block variation#

The Listing block is one of the most versatile blocks, and a driver to many of Volto's more "advanced" technologies, such as variations.

It can be shaped into many forms, such as sliders, carousels, cards and more. To develop a new variation, take a look at one of the existing Listing block variations, such as the SummaryTemplate:

The principle is simple: the component receives and renders the list of items (result proxies) from the Listing block.

Create src/components/manage/Blocks/Listing/CardsTemplate.jsx

const CardsTemplate = ({ items, linkTitle, linkHref, isEditMode }) => {
  return items.map((item) => <div key={item.['@id']}>{item.title}</div>);
}

To register the new block variation, add it to the existing variations:

import { CardsTemplate } from './components';

export const applyConfig = (config) => {
  config.blocks.blocksConfig.listing.variations.push({
    id: 'cards',
    template: CardsTemplate,
  });
  return config;
}