PHPackages                             otago/tiles - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. otago/tiles

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

otago/tiles
===========

Tile CMS field

v6.2(2mo ago)87.2k↑53.6%2[7 issues](https://github.com/otago/tiles/issues)[6 PRs](https://github.com/otago/tiles/pulls)BSD-3-ClausePHP

Since Nov 16Pushed 2mo ago2 watchersCompare

[ Source](https://github.com/otago/tiles)[ Packagist](https://packagist.org/packages/otago/tiles)[ RSS](/packages/otago-tiles/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (4)Versions (56)Used By (0)

Tiling system for SilverStripe CMS
==================================

[](#tiling-system-for-silverstripe-cms)

[![display of what the tiles look like inside SilverStripe](images/preview.gif)](images/preview.gif)

Allows you to create an [elemental](https://github.com/dnadesign/silverstripe-elemental) grid inside SilverStripe. Features include:

1. drag &amp; reorder them inside the CMS
2. easily create your own tiles
3. delete and edit tiles easily

It also comes with some basic tiles out of the box.

Install
=======

[](#install)

Run this in your command line:

```
composer require otago/tiles

```

To expose the modules resouces:

```
composer vendor-expose

```

The module requires [elemental blocks](https://github.com/dnadesign/silverstripe-elemental). If you don't have this module, you'll be prompted on install.

Customise your tiles
====================

[](#customise-your-tiles)

Put your own templates in your themes/&lt;themename&gt;/templates/Tiles/tilename.ss. For example, to make your own ContentTile in the simple theme, create a file in **themes/simple/templates/Tiles/ContentTile.ss**

```

		$Content

```

If you want to support MSIE, you can use the -ms-grid-row and -ms-grid-column CSS values with $Col and $Row to have the grid display correctly.

Build source
============

[](#build-source)

You'll need node 6. Boo.

```
npm run watch

```

to get env vars on windows:

```
npm install -g win-node-env

```

This module uses fancy and modern react for rendering. So you know it's fast and snappy.

Usage
=====

[](#usage)

After a composer install you'll have the tile module as an element. So you don't need to do anything (unless you've restricted the elements on each page).

If you want to put tilefield directly on a page, you can do this too. The following example shows you how:

```
use OP\Fields\TileField;

class MyPage extends Page {

	static $has_many = [
		'Tiles' => Models\Tile::class
	];

	function getCMSFields() {
		$fields = parent::getCMSFields();
		$fields->addFieldToTab('Root.Main', TileField::create('Tiles', 'Tiles'));
		return $fields;
	}
}
```

Allowing the user to specify how many columns they want
-------------------------------------------------------

[](#allowing-the-user-to-specify-how-many-columns-they-want)

You can provide an DataObject where the Cols val will be written to. so you can have 3,2 or however many cols you want wide:

```
use OP\Fields\TileField;

class MyTilePage extends Page {
	private static $db = [
		'Cols' => 'Int'
	];
	private static $has_many = [
		'Tiles' => Tile::class
	];
	private static $owns = [
		'Tiles'
	];
	public function getCMSFields() {
		$fields = parent::getCMSFields();
		$tilefield = TileField::create('Tiles',
			'Tiles',
			$this->Tiles(),
			null,
			$this // this var requires a db object Cols to remember how many cols it is wide
		);

		$fields->addFieldToTab('Root.Main', $tilefield);
		return $fields;
	}
}
```

Specifying types of tiles in field
----------------------------------

[](#specifying-types-of-tiles-in-field)

You can limit the CMS dropdown to a limited number of tiles. This is handy when you've have a page where you only want a certain type of tile. This is done by passing in the $dataList parameter:

```
		$tile = DataObject::create(array('Name'=>'StaffHubResourceTile', 'NiceName' => StaffHubResourceTile::functionGetNiceName()));

		$fields->addFieldToTab('Root.Main', TileField::create('Tiles', 'Tiles', ArrayList::create(array($tile))));
```

upgrading
---------

[](#upgrading)

Here's the modulelegacy.yml file to convert your tiles from SS 3 to 4:

```
---
Name: mymodulelegacy
---
SilverStripe\ORM\DatabaseAdmin:
  classname_value_remapping:
    GalleryTile: OP\Models\GalleryTile
    ContentTile: OP\Models\ContentTile
    LinkTile: OP\Models\LinkTile
    AnnouncementTile: OP\Models\AnnouncementTile
    PhotoTile: OP\Models\PhotoTile
    Slide: OP\Models\Slide
```

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance67

Regular maintenance activity

Popularity30

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 84.4% 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.

###  Release Activity

Cadence

Every ~66 days

Recently: every ~155 days

Total

47

Last Release

75d ago

Major Versions

v3.0 → 4.02018-09-20

v4.12 → v5.02024-08-06

v5.1 → v6.02026-01-26

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/67215?v=4)[torleif](/maintainers/torleif)[@torleif](https://github.com/torleif)

---

Top Contributors

[![torleif](https://avatars.githubusercontent.com/u/67215?v=4)](https://github.com/torleif "torleif (76 commits)")[![Alastairkn](https://avatars.githubusercontent.com/u/15573766?v=4)](https://github.com/Alastairkn "Alastairkn (6 commits)")[![jeffrey-nz](https://avatars.githubusercontent.com/u/6498155?v=4)](https://github.com/jeffrey-nz "jeffrey-nz (4 commits)")[![dunatron](https://avatars.githubusercontent.com/u/8181248?v=4)](https://github.com/dunatron "dunatron (3 commits)")[![KanikaOP](https://avatars.githubusercontent.com/u/43796439?v=4)](https://github.com/KanikaOP "KanikaOP (1 commits)")

---

Tags

silverstripetilesCMS Field

### Embed Badge

![Health badge](/badges/otago-tiles/health.svg)

```
[![Health](https://phpackages.com/badges/otago-tiles/health.svg)](https://phpackages.com/packages/otago-tiles)
```

###  Alternatives

[silverstripe/userforms

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code

1371.1M85](/packages/silverstripe-userforms)[symbiote/silverstripe-gridfieldextensions

A collection of useful grid field components

951.9M271](/packages/symbiote-silverstripe-gridfieldextensions)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46302.4k9](/packages/symbiote-silverstripe-advancedworkflow)[silverstripe/tagfield

Tag field for SilverStripe

561.3M50](/packages/silverstripe-tagfield)[jonom/silverstripe-betternavigator

Front-end utility menu for Silverstripe websites featuring administration and development tools

60435.1k13](/packages/jonom-silverstripe-betternavigator)[lekoala/silverstripe-cms-actions

Add actions to your models in SilverStripe

39344.8k31](/packages/lekoala-silverstripe-cms-actions)

PHPackages © 2026

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