Skip to main content

Custom block templates: the Page List block

Concrete CMS 9 · Updated 2026-09-03

Every core block can be given an alternative view without touching the core. The Page List block is the one people reach for first, because its default output is rarely what a design wants.

File location

Custom block templates live in a templates/ folder alongside the block. You have two places to put yours:

  • In your application folder, for one site: application/blocks/page_list/templates/<your_template>/view.php
  • In your theme, to ship it with the design: <theme>/blocks/page_list/templates/<your_template>/view.php

The folder name is the handle. Concrete turns it into a readable name in the block's template picker, so card_grid shows up as "Card Grid".

Start from the block's own view

Copy concrete/blocks/page_list/view.php into your new folder and edit the copy. The variables available to your template are whatever the block's controller set, and starting from the original means you inherit the correct ones instead of guessing. Never edit the file in concrete/; it is replaced on every core update.

Apply it

Edit the block on the page, open its Design panel, and choose your template from the custom template list. The choice is per block, so the same Page List can render as a compact list in a sidebar and as a card grid on a landing page.

Styles belong in the theme

Put the CSS for your template in the theme's stylesheet rather than in a <style> tag inside view.php. A block can appear many times on one page, and inline style blocks get duplicated with it.

The same applies to every block

Nothing here is specific to Page List. Autonav, Content, Image Slider, Form: each has a view.php you can copy into a templates/ folder and reshape. It is the main reason a Concrete theme can look nothing like the default and still be built entirely from core blocks.