Helloscroll Layout Reference

Blinkbox Helloscroll Theme · ConcreteCMS 9 · © 2026 www.blink.ch


Attribute format

Set the page attribute helloscroll_sections in Page Properties → Custom Attributes. One section per line, fields separated by :. Optional field order does not matter.

type : id : [options in any order]
The attribute is only used when no config file exists for the page. See Resolution order.

home

home : id : [flow] : [arrow] : [#colour] : [bg_position]
FieldValuesNotes
typehomeRequired, first field
idsection-homeRequired. Unique anchor. Lowercase, hyphens only. Never change after adding content.
flowmobile-flow or standard-flowOptional. mobile-flow = top-aligned content at ≤576px. standard-flow = all screen sizes.
arrowarrowOptional. Shows bouncing scroll arrow pointing to the next section.
colour#1a1a2eOptional. CSS hex colour for section background.
bg_position30% 80%Optional. CSS background-position value.

Examples

home:section-home
home:section-home:mobile-flow
home:section-home:mobile-flow:arrow
home:section-home:mobile-flow:arrow:#1a1a2e
home:section-home:standard-flow:arrow:#1a1a2e:30% 80%

CCM Areas created

Area nameUse
Home BackgroundDrop one Image or Video (HTML block) here
Home ContentDrop any content blocks here

Area names use the nav label as prefix — if label is "Welcome", areas are "Welcome Background" and "Welcome Content".


parallax

parallax : id : [mode] : [flow] : [arrow] : [#colour]
FieldValuesNotes
typeparallaxRequired
idsection-storyRequired. Never change after adding content.
modeslow medium fast reverse fixedOptional. Default: medium. Controls speed and direction of image strip movement.
flowmobile-flow or standard-flowOptional
arrowarrowOptional
colour#2d1b69Optional. Section background colour.

Examples

parallax:section-story
parallax:section-story:medium
parallax:section-story:fast:arrow
parallax:section-story:medium:standard-flow:#2d1b69
parallax:section-story:reverse:mobile-flow:arrow:#0d1b2a

CCM Areas created

Area nameUse
Story TopText above the image strip
Story ImageDrop exactly one Image block (block limit 1)
Story BottomText below the image strip

slider

slider : id : [count] : [flow] : [arrow] : [#section|#slide1|#slide2...] : [@section-pos|pos1|pos2...]
FieldValuesNotes
typesliderRequired
idsection-showRequired. Never change after adding content.
count3Optional integer ≥ 2. Default: 3. Number of slides.
flowmobile-flow or standard-flowOptional
arrowarrowOptional
colours#222 or #222|#e63946|#457b9dOptional. Single #colour = section background only. With | separators = section background then per-slide colours in order.
positions@center|30% 80%|center 20%Optional. @ prefix. Section bg-position or per-slide positions with | separators. Same indexing as colours.
nodotsnodotsOptional. Hides dot navigation.

Examples

slider:section-show
slider:section-show:3
slider:section-show:3:mobile-flow
slider:section-show:3:mobile-flow:#222
slider:section-show:3:mobile-flow:#222|#e63946|#457b9d|#2a9d8f
slider:section-show:3:mobile-flow:#222|#e63946|#457b9d:@center|30% 80%|center 20%
slider:section-show:5:standard-flow:arrow:#111|#e63946|#457b9d|#2a9d8f|#6a0572|#1d3461
slider:section-show:3:nodots:#222|#e63946|#457b9d

CCM Areas created (example: label "Show", 3 slides)

Area nameUse
Show Dia 1 BackgroundDrop one Image or Video
Show Dia 1 ContentDrop any content blocks
Show Dia 2 BackgroundDrop one Image or Video
Show Dia 2 ContentDrop any content blocks
Show Dia 3 BackgroundDrop one Image or Video
Show Dia 3 ContentDrop any content blocks

Slide IDs are built as {section-id}-dia-1, {section-id}-dia-2 etc. — e.g. section-show-dia-1.


contact

contact : id : [flow] : [arrow] : [#colour] : [bg_position]
FieldValuesNotes
typecontactRequired
idsection-contactRequired. Never change after adding content.
flowmobile-flow or standard-flowOptional
arrowarrowOptional
colour#0a0a0aOptional
bg_positioncenter 30%Optional

Examples

contact:section-contact
contact:section-contact:mobile-flow
contact:section-contact:mobile-flow:#111
contact:section-contact:standard-flow:arrow:#0a0a0a:center 30%

CCM Areas created

Area nameUse
Contact BackgroundDrop one Image or Video
Contact ContentDrop any content blocks

Complete page examples

Minimal

home:section-home
slider:section-show:3
contact:section-contact

Typical production page

home:section-home:mobile-flow:arrow:#1a1a2e
parallax:section-story:medium:arrow:#0d1b2a
slider:section-show:3:mobile-flow:#222|#e63946|#457b9d|#2a9d8f
contact:section-contact:mobile-flow:#111

Two sliders with per-slide colours and positions

home:section-home:mobile-flow:arrow:#1a1a2e:center 30%
slider:section-show:3:mobile-flow:#222|#e63946|#457b9d|#2a9d8f:@center|30% 80%|center 20%
slider:section-gallery:5:mobile-flow:#111|#6a0572|#1d3461|#0d7377|#14a085|#2d1b69
contact:section-contact:mobile-flow:#0a0a0a

Custom nav labels using ?Label

home:section-home?Welcome:mobile-flow:arrow
parallax:section-story?Our Story:medium
slider:section-show?Portfolio:3
contact:section-contact?Get in Touch:mobile-flow

Important rules

Never change id or label after adding content.
The id is used for anchor links and scroll targets.
The label becomes the CCM Area name prefix — changing it after content is added creates new empty Areas and orphans the existing content in the old Areas.
Nav label customisation — append ?Label to the id to show a different label in the nav menu than what the id suggests.
Example: home:section-home?Welcome Page:mobile-flow

Config file

The config file is the preferred way to configure pages — cleaner than the attribute, supports all options including per-slide positions, and is version-controllable.

Location

packages/helloscroll_theme/themes/helloscroll/config/

One file per page, named after the page handle (URL slug):

config/
  default.php     ← used when no page-specific file exists
  home.php        ← used for the page at /home
  blink.php       ← used for the page at /blink

The page handle is whatever appears in the URL after your domain. For https://www.blink.ch/hs2/blink the handle is blink.

Format

A PHP file that returns an array. Each element is one section:

<?php
return [

    [
        'type'       => 'home',
        'id'         => 'section-home',
        'label'      => 'Home',
        'flow'       => 'mobile-flow',
        'arrow'      => true,
        'background' => '#1a1a2e',
        'bg_position'=> 'center 30%',
    ],

    [
        'type'      => 'parallax',
        'id'        => 'section-story',
        'label'     => 'Story',
        'flow'      => '',
        'arrow'     => true,
        'background'=> '#0d1b2a',
        'parallax'  => 'medium',
    ],

    [
        'type'               => 'slider',
        'id'                 => 'section-show',
        'label'              => 'Show',
        'flow'               => 'mobile-flow',
        'arrow'              => false,
        'background'         => '#222',
        'slides'             => 3,
        'dots'               => true,
        'slide_colors'       => ['#e63946', '#457b9d', '#2a9d8f'],
        'slide_bg_positions' => ['center center', '30% 80%', 'center 20%'],
    ],

    [
        'type'       => 'contact',
        'id'         => 'section-contact',
        'label'      => 'Contact',
        'flow'       => 'mobile-flow',
        'arrow'      => false,
        'background' => '#0a0a0a',
        'bg_position'=> '',
    ],

];

Config file — all available keys

Shared by all section types

KeyTypeDefaultNotes
typestringhome parallax slider contact
idstringUnique anchor. Never change after adding content.
labelstringNav text + CCM Area name prefix. Never change after adding content.
flowstring'''' 'mobile-flow' 'standard-flow'
arrowboolfalseBouncing scroll arrow pointing to next section
backgroundstring''CSS colour e.g. '#1a1a2e' or 'var(--color-blue)'
bg_positionstring''CSS background-position e.g. '30% 80%'

Parallax only

KeyTypeDefaultNotes
parallaxstring'medium'slow medium fast reverse fixed

Slider only

KeyTypeDefaultNotes
slidesint3Number of slides, minimum 2, no upper limit
dotsbooltrueShow dot navigation below slider
slide_colorsarray[]Per-slide background colours. Index 0 = slide 1. e.g. ['#e63946', '#457b9d']
slide_bg_positionsarray[]Per-slide background-position values. Same indexing as slide_colors.

Resolution order

When helloscroll.php loads a page it looks for the layout config in this order:

#SourceLocation
1Page-specific config fileconfig/{page-handle}.php
2Page attributePage Properties → Custom Attributes → helloscroll_sections
3Default config fileconfig/default.php
4Emergency hardcoded fallbackHome + Contact only, no colours
The config file always wins over the page attribute. If both exist, the config file is used and the attribute is ignored.