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.
Custom block templates live in a templates/ folder alongside the block. You have two places to put yours:
application/blocks/page_list/templates/<your_template>/view.php<theme>/blocks/page_list/templates/<your_template>/view.phpThe 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".
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.
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.
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.
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.