PHPackages                             scott1702/silverstripe-handyblocks - 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. scott1702/silverstripe-handyblocks

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

scott1702/silverstripe-handyblocks
==================================

Provides some useful elemental blocks

03[19 PRs](https://github.com/scott1702/silverstripe-handyblocks/pulls)PHP

Since May 29Pushed 3y ago1 watchersCompare

[ Source](https://github.com/scott1702/silverstripe-handyblocks)[ Packagist](https://packagist.org/packages/scott1702/silverstripe-handyblocks)[ RSS](/packages/scott1702-silverstripe-handyblocks/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (20)Used By (0)

SilverStripe handy blocks
=========================

[](#silverstripe-handy-blocks)

This module it used to provide a few handy blocks to get a project up and running with some useful functionality quickly

How to use
----------

[](#how-to-use)

### Picking blocks to use

[](#picking-blocks-to-use)

By default, installing this module enables all of the blocks within the module. Certain blocks can be disabled via yml configuration if they are not necessary

```
Page:
  disallowed_elements:
    - SilverStripe\HandyBlocks\CallToActionBlock
```

### Templates

[](#templates)

This module provides a base template for each block. Partial caching is also applied to the template of each block. If you want to use a custom template or do not want partial caching at a block level, simply override the template to use your own

### CSS

[](#css)

This module also provides a css file for each block. If you want to use these, there are a few ways you can include these css files:

#### Requiring the main dist file

[](#requiring-the-main-dist-file)

This is the recommended approach if you want get something up and running quick:

```
// PageController.php

protected function init()
{
    parent::init();
    \SilverStripe\View\Requirements::css('scott1702/silverstripe-handyblocks:client/dist/main.css');
}
```

#### Importing the main.scss file

[](#importing-the-mainscss-file)

This is a good way of pulling the css into your own build chain, as it results in only one css file and allows you to override any variables used to fit your project

```
// Your main.scss file in your project
@import 'variables'; // Import your own variables first to override handyblocks variables

@import '../vendor/scott1702/silverstripe-handyblocks/client/src/main';
```

#### Importing each block's scss file independently

[](#importing-each-blocks-scss-file-independently)

```
// Your main.scss file in your project
@import 'variables'; // Your own variables/mixins will have to match the values used in each scss file

@import '../vendor/scott1702/silverstripe-handyblocks/client/src/blocks/cta-block';
```

Gotchas
-------

[](#gotchas)

There are a few patterns in this module which may catch you out, so they are listed here for clarity:

### Custom Element holder

[](#custom-element-holder)

All of the blocks in this module user a custom ElementHolder in order to apply different style variants, the template `HandyElementHolder.ss` can be overridden or you can adjust the holder for each block back to the default with yml configuation.

```
SilverStripe\HandyBlocks\CallToActionBlock:
  controller_template: 'ElementHolder'
```

### Container in each template

[](#container-in-each-template)

So that each variant's color stretched all the way to the edge, there is a `` element inside `HandyElementHolder.ss`. This will break styling if there is a secondary container applied at a page level, rather than a block level.

### CSS uses ems

[](#css-uses-ems)

em values in the css expect 1em to equal 10px, because of this a font-size of 10px has been applied to each block.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 70% 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://www.gravatar.com/avatar/b54a89f0df564099c5168104182dbb7cf776da512b4b9d35015f03f8034d7d62?d=identicon)[scott1702](/maintainers/scott1702)

---

Top Contributors

[![MasseyIsaako](https://avatars.githubusercontent.com/u/26725710?v=4)](https://github.com/MasseyIsaako "MasseyIsaako (7 commits)")[![scott1702](https://avatars.githubusercontent.com/u/10215604?v=4)](https://github.com/scott1702 "scott1702 (3 commits)")

### Embed Badge

![Health badge](/badges/scott1702-silverstripe-handyblocks/health.svg)

```
[![Health](https://phpackages.com/badges/scott1702-silverstripe-handyblocks/health.svg)](https://phpackages.com/packages/scott1702-silverstripe-handyblocks)
```

PHPackages © 2026

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