PageTree

Visual block pages for October CMS

14
$70

Product support

Visit this product's website for support.

Categories

PageTree

Visual block pages for October CMS

Early Access Period

Early access: 50% off PageTree with code EARLYACCESS, until November 30 included.

Please share all your feedback, suggestions, and ideas here - they’ll help shape future updates!

PageTree — Visual block pages for October CMS

PageTree is a visual page builder for October CMS that lets content editors create complete pages from reusable content blocks — without creating or managing CMS page files.

Build pages visually, preview them directly inside your site's theme, organize content into flexible layouts, and publish pages with built-in SEO and scheduling tools.

Why PageTree?

PageTree gives content editors a familiar visual editing experience while keeping developers in control of the frontend.

NEW! FRONT INLINE EDITION

Visual page editor

Create pages by adding blocks from a searchable library and arranging them with drag and drop.

Editors can:

  • Add and reorder blocks
  • Duplicate blocks
  • Copy and paste blocks between pages
  • Hide individual blocks without deleting them
  • Organize content into columns and CSS Grid layouts
  • Preview pages using the actual site layout

Live preview

Preview a page directly inside your selected October CMS theme layout.

The preview supports desktop, tablet and mobile widths and can also be opened in a separate window.

Flexible layouts

Build complex page structures without writing HTML:

  • Sections with 1 to 4 columns
  • Flexible CSS Grid containers
  • Nested blocks
  • Background and spacing options

Ready-to-use content blocks

PageTree includes a complete library of common website components:

  • Titles and rich text
  • Images and galleries
  • Videos
  • Quotes
  • Questions & answers
  • Files and downloads
  • Buttons
  • Call-to-action sections
  • Hero banners
  • Image and text layouts
  • Cards
  • Spacers
  • Sections
  • CSS Grid containers

Use your existing October CMS components

Frontend components registered by installed October CMS plugins can also be used as PageTree blocks.

Their properties are exposed to editors through a form, while the component continues to operate normally on the frontend.

This makes PageTree extensible without requiring developers to rebuild existing functionality.

Custom blocks

Superusers can create their own blocks directly from the October CMS backend.

Custom blocks can contain:

  • Custom form fields
  • Data sources from Tailor or plugin models
  • Twig templates
  • Custom block-specific logic

Developers can also create reusable blocks directly in their plugins and register them with PageTree.

Built-in SEO

Each page includes a dedicated SEO configuration with:

  • Meta title and description
  • Search engine preview
  • Open Graph metadata
  • Canonical URL
  • Robots directives
  • Sitemap exclusion
  • hreflang support
  • JSON-LD structured data
  • Configurable SEO defaults

Publishing workflow

Control exactly when a page becomes publicly available with:

  • Active / inactive status
  • Published / unpublished status
  • Scheduled publication date

Pages that are inactive, unpublished or not yet scheduled return a 404.

Translations

When RainLab.Translate is installed, PageTree supports translated:

  • Page titles
  • Slugs
  • Blocks
  • SEO information

October CMS multisite can also be used for multilingual and multi-site configurations.

No CMS page files

PageTree pages are resolved automatically from their URL.

You don't need to create a CMS page file for every content page, keeping the CMS page tree clean while allowing editors to manage content independently.

Compatibility

PageTree October CMS
2.x 4.2 and later
1.x 3.7 through 4.1.x

PageTree 2.x requires October CMS 4.2 or later and PHP 8.2+.

For October CMS 3.7 through 4.1.x, use the 1.0.7 release.

Installation

Install the plugin through the October CMS Marketplace or Composer, then run:

php artisan october:migrate

After installation, give your editors the Manage block pages permission and open Block Pages from the backend navigation.

Installation via Command Line

php artisan plugin:install LucasPalomba.PageTree

PageTree Documentation

Requirements

PageTree 2.x requires:

  • October CMS 4.2 or later
  • PHP 8.2 or later

Optional integrations:

  • RainLab.Translate for translated pages and slugs
  • October CMS multisite

For October CMS 3.7 through 4.1.x, use PageTree 1.0.7.

Installation

Install the plugin in:

plugins/lucaspalomba/pagetree

Run the database migrations:

php artisan october:migrate

Then give your editors the:

Settings → Administrators → Roles → Manage block pages

permission.

The Block Pages section will then be available in the backend.


Creating a page

Go to:

Block Pages → New Page

Enter the page title and slug.

For example:

Title: About us
Slug: about-us

The page will be available at:

https://example.com/about-us

Select a layout from your active theme.

The selected layout is used both for the frontend page and for the live preview.


Adding blocks

Open the Components tab and select Add Component.

Blocks can be:

  • Added from the block library
  • Reordered using drag and drop
  • Edited by double-clicking them
  • Duplicated
  • Copied and pasted
  • Hidden without deleting them

Multiple blocks can be selected using Ctrl + click.

Every block contains an Is displayed? switch.


Page visibility

A PageTree page is publicly accessible only when:

  1. The page is active
  2. The page is published
  3. Its publication date has been reached

Otherwise the page returns a 404 response.


Theme integration

PageTree pages automatically use the layout selected on the page.

No additional integration is required.

Your layout should contain the standard October CMS asset tags:

{% styles %}
{% scripts %}

These are required for assets provided by October CMS components used as PageTree blocks.


SEO

The SEO tab provides configuration for search engines and social networks.

Available values include:

meta_title
meta_description
meta_image
meta_type
meta_robots

They are also available through:

this.page.apiBag.pagetree_seo

PageTree fills the native October CMS page properties, allowing existing themes to use:

<title>{{ this.page.meta_title }}</title>
<meta name="description" content="{{ this.page.meta_description }}">

For complete SEO output, add the pageTreeSeo component to your layout:

[pageTreeSeo]
==

Then render it inside <head>:

{% component 'pageTreeSeo' %}

The component can generate:

  • Title
  • Description
  • Robots
  • Canonical URL
  • hreflang alternates
  • Open Graph metadata
  • Twitter cards
  • JSON-LD WebPage data
  • JSON-LD BreadcrumbList data

October CMS components as blocks

PageTree automatically exposes frontend components registered by installed plugins in the block library.

Component properties are converted into editable backend fields.

Supported property types include:

  • Text
  • Textarea
  • Checkbox
  • Dropdown
  • String lists

Dropdown options provided through get{Property}Options() and optionsMethod are supported.

The component continues to operate as a normal October CMS component on the frontend.

Its:

  • init()
  • onRun()
  • AJAX handlers
  • Component partials
  • Assets

continue to work normally.

The generated component alias follows this format:

pagetreeComponent_<blockId>

To override its partials from a theme:

partials/pagetreeComponent_<blockId>/

Properties of type set, dictionary, object and objectList are not currently editable and use their default values.

URL parameters such as:

{{ :slug }}

are not available on PageTree pages.


Custom blocks

Superusers can create custom blocks directly from:

Editor → Block Pages → Custom blocks

A custom block consists of:

Fields

A backend form definition using standard October CMS fields.

Data

Optional data sources such as:

  • Tailor entries
  • Plugin models

Data sources can define sorting and limits.

Template

The block frontend markup is written in Twig.

Form values are available through:

data

Data source variables are also available to the template.

Custom blocks are only manageable by superusers because their Twig templates are compiled in the CMS Twig environment.


Creating a developer block

A block can be scaffolded with:

php artisan create:block Acme.Blog Testimonial

This creates:

blocks/Testimonial.php
blocks/testimonial/config_fields.yaml
blocks/testimonial/default.php

Register the block in the plugin:

public function registerBlocks()
{
    return [
        'blog.testimonial' => \Acme\Blog\Blocks\Testimonial::class,
    ];
}

The block then appears in the PageTree block library under the plugin name.


Block class

A basic block can extend PageTree's component base:

<?php namespace Acme\Blog\Blocks;

use LucasPalomba\PageTree\Classes\ComponentBase;

class Testimonial extends ComponentBase
{
    public $config_fields = 'config_fields.yaml';

    public $uniqueKey = 'blog.testimonial';

    public function componentDetails()
    {
        return [
            'label' => 'Testimonial',
            'description' => 'Customer quote with author',
            'icon' => 'ph ph-quotes',
        ];
    }
}

Blocks can define additional options and variables through their class methods.


Block form

The form is defined in config_fields.yaml.

Example:

fields:
    quote:
        label: Quote
        type: textarea

    author:
        label: Author
        type: text
        span: left

    style:
        label: Style
        type: dropdown
        span: right

An Is displayed? field is automatically added to every block.

Its field name is:

isActive

Define it manually only if you need to customize its label or position.


Block template

Block templates use Twig.

Form values are available through data:

<blockquote class="testimonial testimonial--{{ data.style|default('light') }}">
    <p>{{ data.quote }}</p>
    <footer>{{ data.author }}</footer>
</blockquote>

Content entered by editors is not evaluated as Twig on the website.


Rendering PageTree blocks from a CMS page

PageTree blocks can also be rendered inside a regular October CMS page using:

{% pagecomponent block %}

The PageTree page can be loaded from the model and its components passed to the template.

This allows PageTree content to be reused inside custom CMS pages and layouts.


Page Finder

PageTree pages are available through the October CMS page finder.

They appear under the:

Block Pages

type.

This allows PageTree pages to be selected from menus, links and other October CMS features using the standard page finder.


Styling built-in blocks

Built-in blocks load their styles from:

assets/css/blocks/

Their CSS uses low-specificity selectors, allowing the active theme to override the styles.

The main CSS variables include:

:root {
    --ptb-primary: #0f766e;
    --ptb-primary-contrast: #fff;
    --ptb-secondary: #475569;
    --ptb-light: #f3f4f6;
    --ptb-dark: #1f2937;
    --ptb-radius: 0.5rem;
    --ptb-gap: 1.5rem;
    --ptb-space-s: 1rem;
    --ptb-space-m: 2rem;
    --ptb-space-l: 4rem;
    --ptb-space-xl: 6rem;
    --ptb-container: 1200px;
}

Theme styles can target the ptb-* classes directly.


Settings

PageTree settings are available under:

Settings → Block Pages Settings

Available settings include:

  • Backend menu label
  • Default preview stylesheets
  • Default preview scripts
  • Site name
  • SEO title template
  • Default robots directive
  • Twitter account
  • Default Open Graph image

Permissions

PageTree provides two permissions:

Permission Description
Manage block pages Create, edit and delete PageTree pages
Manage block pages settings Manage PageTree settings

Troubleshooting

A page returns a 404

Check:

  • The page is active
  • The page is published
  • The publication date has been reached
  • No CMS page uses the same URL

Component assets are missing

Make sure the selected layout contains:

{% styles %}
{% scripts %}

The live preview is empty

Check that the selected layout renders correctly on its own.

Then inspect:

storage/logs/system.log

Saving a large page returns HTTP 413

Increase the client_max_body_size value in your NGINX configuration.

2.6.1

Hide the Access popup of the Editor when no access provider is installed

Nov 02, 2026

2.6.0

Restrict pages to groups of users (RainLab.User or another access provider)

Oct 31, 2026

2.5.0

Add dynamic pages with URL parameters, filter custom block data sources by them, fill their SEO from the displayed record, translate block pages from the Editor document header, customize the theme template of CMS component blocks, replace the block templates and store the custom blocks in the theme (database storage deprecated), add an SEO check to the page SEO settings, add a setting to disable the PageTree default blocks, split the PageTree settings into tabs, make the blocks and the Editor accessible (decorative images, video captions, keyboard use), fix the page form without template configuration, the preview mode list of the configuration popup and the size of the translate popup of a blocks field

Oct 23, 2026

2.4.0

Edit the blocks in place in the Editor preview and on the website, serve the page with the slug / as the home page and preset the URL of new pages from the title

Oct 17, 2026

2.3.0

Never compile the preview blocks HTML as Twig, rebuild pages when their custom blocks change, translate the settings screen and fix the create:block command

Oct 10, 2026

2.2.0

Add custom blocks created from the back-office in the Editor (fields builder, data sources and Twig template), reserved to superusers

Oct 10, 2026

2.1.0

Add SEO fields (canonical URL, robots, Twitter card, sitemap exclusion) and SEO component

Oct 10, 2026

2.0.0

Compatibility with October CMS 4.2+ (Vue 3 components), October CMS 3.x and 4.1 stay on PageTree 1.x

Oct 10, 2026

1.0.7

Add layout field to pages table

Oct 10, 2026

1.0.6

v1.0.6

Oct 10, 2026

1.0.5

v1.0.5

Oct 10, 2026

1.0.4

Fixes

Oct 10, 2026

1.0.3

Add Copy/Paste functionality and fix some bugs

Oct 10, 2026

1.0.2

Add Model PageTree

Oct 10, 2026

1.0.1

First version of PageTree

Oct 10, 2026