Requirements: NamelessMC 2.2.x (PHP 8.2+).
Lumen folder to custom/templates/ of your NamelessMC installation
(final path: custom/templates/Lumen/template.php).cache/ is writable (NamelessMC requirement) and clear cache/templates_c/ after updating files.Replace the Lumen folder, keep your settings (they live in the database). Clear cache/templates_c/.
Everything is edited in StaffCP → Customisation → Templates → Lumen → Settings. No code needed.
| Tab | What you can change |
|---|---|
| Design | Colour preset (6 included) or your own primary/accent colours, default light/dark mode, font, corner style, content width, navbar style (glass, solid, floating pill, transparent), page title banner |
| Brand | Logo text or image, server IP, fallback player count, Discord and store URLs |
| Home modules | Enable, reorder, duplicate and edit every section of the home page |
| Footer | Brand block, description, copyright text, “Powered by” line |
| Advanced | Disable animations, add custom CSS |
| Import / Export | Back up your configuration as JSON or copy it to another site |
Visitors can switch with the navbar toggle (remembered in their browser). The default for first-time visitors is set in Design → Default colour mode.
--lm-primary, --lm-primary-600, --lm-primary-300, --lm-accent, --lm-bg, --lm-surface, --lm-surface-2,
--lm-border, --lm-text, --lm-muted, --lm-radius, --lm-radius-sm, --lm-font, --lm-container.
/* example: make the hero title bigger */
.lm-hero__title { font-size: 5rem; }
The hero chip and the Server status module use the default Minecraft server configured in StaffCP → Integrations → Minecraft. When the server cannot be queried they fall back to the numbers in Brand.
Each section of the home page is a module: a folder in modules/<id>/. Drop a new folder in and it
appears automatically in the editor (Home modules → Add section) — no registration needed.
modules/my_module/
module.json manifest + settings schema (what the editor shows)
view.tpl Smarty markup
module.php optional: returns function (array $settings, array $ctx): array → available as {$d} in the view
{
"id": "my_module", "name": "My module", "description": "Shown in the editor",
"icon": "fas fa-star", "order": 50, "multiple": true,
"fields": [
{"key": "title", "type": "text", "label": "Title", "default": "Hello"},
{"key": "items", "type": "repeater", "label": "Items", "item_label": "name",
"fields": [{"key": "name", "type": "text", "label": "Name", "default": ""}], "default": []}
]
}
Field types: text, textarea, url, image, icon, number, toggle, select (with options), color, repeater, heading.
Unless "no_common": true, the Section background and Anchor ID options are added automatically.
Settings are available as {$s.key} and provider data as {$d.key}. Escape user text with |escape.
<div class="lm-container">
{include file="{$LUMEN_PATH}partials/section_head.tpl"} {* optional eyebrow/title/subtitle header *}
<h2>{$s.title|escape}</h2>
</div>
<?php
return static function (array $s, array $ctx): array {
// $ctx: config, language, user, resolve($url), server[ip,online,players,max], forum_url
return ['count' => DB::getInstance()->query('SELECT COUNT(*) c FROM nl2_users')->first()->c];
};
Announcement bar · Hero · Server status · Features · Game modes · Stats counter · Latest news · Store packages · Staff team · Gallery · FAQ · Discord banner · Partners · Call to action · Custom HTML.