PHPackages                             lekoala/exo-theme - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. lekoala/exo-theme

ActiveSilverstripe-theme

lekoala/exo-theme
=================

Exo theme for SilverStripe

229CSS

Since May 17Pushed 5y ago3 watchersCompare

[ Source](https://github.com/lekoala/silverstripe-exo-theme)[ Packagist](https://packagist.org/packages/lekoala/exo-theme)[ RSS](/packages/lekoala-exo-theme/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Exo theme for SilverStripe
==========================

[](#exo-theme-for-silverstripe)

A simple theme for SilverStripe for a typical, modern, corporate website.

This theme can be used to test your projects with a (more) realistic front end.

Main features
-------------

[](#main-features)

- Bootstrap 5.0.1
- Bootstrap icons 1.5 as a custom element
- Google fonts
- No jQuery!
- Lazy loaded images
- Swiper, AOS, Parallax
- Linea icon set as a custom element

Install the theme
-----------------

[](#install-the-theme)

### Automatic install

[](#automatic-install)

Simply run `composer require lekoala/silverstripe-exo-theme` and you should be good to go!

### Manual install

[](#manual-install)

Copy the theme into the `themes/` directory of your SilverStripe project. If you've named it correctly, there should be a directory called `themes/exo/templates`.

Usage
-----

[](#usage)

All the templates expect top level Page classes. If you use namespaced classes or custom controllers, you can render with

return $this-&gt;renderWith(\["HomePage", "Page"\]);

Providing data
--------------

[](#providing-data)

The theme expect some globally available variables to be defined

### SiteConfig

[](#siteconfig)

Here is a sample SiteConfig. Make sure you define these fields or alias them properly.

You can mock the config with the following function

```
public function SiteConfig()
{
    return new ArrayData([
        'Title' => "My Demo Website",
        'Logo' => [
            'URL' => '/resources/app/images/logo/sample-logo.png'
        ],
        'ContactPhone' => "(1) 123 456",
        'ContactEmail' => "demo@example.com",
        'ContactAddress' => "Some street, 0AZ42 Some place",
        'FacebookLink' => "#",
        'TwitterLink' => "#",
        'InstagramLink' => "#",
        'Favicon' => [
            'MaskColor' => '#5bbad5',
            'ThemeColor' => '#ffffff',
            'AppleIconURL' => '/resources/app/images/favicon/apple-touch-icon.png',
            'Favicon32URL' => '/resources/app/images/favicon/favicon-32x32.png',
            'Favicon16URL' => '/resources/app/images/favicon/favicon-16x16.png',
        ],
    ]);
}

```

### Pages

[](#pages)

Make sure you can access all single page type with a getter on the page controller: ContactPage =&gt; returns a Contact page instance

### Footer Menus

[](#footer-menus)

In the footer, provide a list of menus with FooterMenus

### Sections

[](#sections)

Define section to see the appear. See the templates for more details on how they are used

TODO
----

[](#todo)

- Make things more configurable (eg: provide custom shapes, colors, etc)
- Test with actual blog module (currently it's simply mocked)
- Minimize css even more by reducing unused bootstrap components

Credits
-------

[](#credits)

This theme is heavily based on Exomac theme

However, it has been stripped from extra features and been heavily optimized for a more generic usage

Maintainer
----------

[](#maintainer)

LeKoala -

License
-------

[](#license)

This module is licensed under the [MIT license](LICENSE).

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/250762?v=4)[Thomas Portelange](/maintainers/lekoala)[@lekoala](https://github.com/lekoala)

---

Top Contributors

[![lekoala](https://avatars.githubusercontent.com/u/250762?v=4)](https://github.com/lekoala "lekoala (9 commits)")

### Embed Badge

![Health badge](/badges/lekoala-exo-theme/health.svg)

```
[![Health](https://phpackages.com/badges/lekoala-exo-theme/health.svg)](https://phpackages.com/packages/lekoala-exo-theme)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
