PHPackages                             skripteria/wn-snowflake-plugin - 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. skripteria/wn-snowflake-plugin

ActiveWinter-plugin[Utility &amp; Helpers](/categories/utility)

skripteria/wn-snowflake-plugin
==============================

Snowflake plugin is dynamic content manager for Winter CMS

v1.0.4(4y ago)63304[3 issues](https://github.com/skripteria/wn-snowflake-plugin/issues)[1 PRs](https://github.com/skripteria/wn-snowflake-plugin/pulls)MITPHPPHP &gt;=7.0

Since Dec 12Pushed 2y ago1 watchersCompare

[ Source](https://github.com/skripteria/wn-snowflake-plugin)[ Packagist](https://packagist.org/packages/skripteria/wn-snowflake-plugin)[ Docs](https://github.com/skripteria/wn-snowflake-plugin)[ RSS](/packages/skripteria-wn-snowflake-plugin/feed)WikiDiscussions main Synced today

READMEChangelog (4)Dependencies (1)Versions (5)Used By (0)

Snowflake for Winter CMS
========================

[](#snowflake-for-winter-cms)

Version history:

- 1.0.1. initial release

Installation with Composer
--------------------------

[](#installation-with-composer)

```
composer require skripteria/wn-snowflake-plugin

php artisan winter:up
```

Why a new "CMS" within a CMS at all?
------------------------------------

[](#why-a-new-cms-within-a-cms-at-all)

In real life there are at least 4 different user types that all need to be taken care of the same time:

- The technical developer with some inside knowledge of how to build custom functionality;
- The web designer, usually more interested in web design rather than backend development;
- The web interested end user who has a vision of how things should look like and trying hard to make it happen somehow. He is not afraid of playing around with customisation, a typical WordPress customer.
- The non-technical user who occasionally has to do some content editing because the job or business demands so.

The first 3 customer types are regularly taken into consideration when talking about how a CMS should look like, the last user type is often been forgotten.

However, when you develop a site for a paying customer the last customer type is the one that you will end up with.

The consequence is that you need to make content management bullet proof and hide everything but the very specific pieces of content that need to be managed.

Snowflake takes care of this by automizing the power the Winter CMS backend framework.

Using Snowflake
---------------

[](#using-snowflake)

Once installed, you first need to add the Snowflake component to any CMS Layout you want it to be used in. This will allow to use the Snowflake Twig Filter on the Layout itself and any Page that is using this Layout.

On these CMS pages you can now add some content variables using the `'sf'` Twig Filter, e.g.:

```
{{ my_headline | sf('text', 'My awsome headline', 'Main headline of this page.') }}
```

The first part (`'my_headline'`) is the Snowflake Key that will be used to render the content. The Snowflake Key is just like a normal Twig variable as a reference to the content.

Every Snowflake Key must be unique within a given Page but may conflict with the keys from other Pages. When adding Snowflake Keys to a Layout name collisions with Pages can happen, therefore it is recommended generally prefix Snowflake Keys in layouts (e.g. `'layout_my_headline'`).

The `'sf'` filter then takes up to 3 arguments:

- Argument 1 defines the type of the content. This controls what backend widget is used for content management.
- Argument 2 *(optional)* allows to set a default value for the content. The default value has no effect on the types 'image', file', 'date', 'mediaimage' and 'mediafile'.
- Argument 3 *(optional)* allows to add a description for the user who is responsible for content management.

*Please note that the characters ',' and '|' (comma and pipe) must not be used within arguments.*

Currently Snowflake supports 7 standard types and 5 special ones.

The standard types are:

- `text` (simple text input, e.g. for headlines)
- `color` (Winter CMS color picker)
- `markdown` (Winter CMS markdown editor)
- `richeditor` (Winter CMS richtext editor)
- `code` (Winter CMS code editor)
- `date` (Winter CMS date picker)
- `textarea` (plain textarea field)

The 3 special cases are:

- `image`:

    To control images and will use the Winter CMS image upload widget. However, it uses 2 values for rendering, the image path and the img alt attribute. Therfore, the variable also needs to pass 2 values.

    This is done like this:

    ```

    ```

    Please note that the `'sf'` filter is only added once in the `src` attribute, the `alt` attribute then just uses the same key with the suffix `'__alt'`.
- `mediaimage`:

    Sames as 'image', but 'mediaimage' uses the Winter Media Library as the image source:

    ```

    ```
- `file`:

    To control file uploads. Like image it uses 2 values, this time the file path and the filename which shows up in the link.

    Similar to images this is how its done:

    ```
    {{ my_file__name }}
    ```
- `mediafile`:

    Same as 'file', but 'mediafile' uses the Winter Media Library as the file source:

    ```
    {{ my_file__name }}
    ```
- `link`:

    For internal Winter CMS links. The `link` type allows content managers just to copy the full url of the browser window without worrying about a proper format. It will be automatically converted into a clean relative link.

Synchronizing with the Snowflake Backend
----------------------------------------

[](#synchronizing-with-the-snowflake-backend)

If you are using the Winter CMS backend to edit your code, all you need to do is to save your Page or Layout, Snowflake will automatically create or update the respective records in the database.

Once a Snowflake Key is removed (or renamed) it will be handled as unused database record by the following logic:

- There is already existing content in the record: keep it;
- Otherwise: delete it.

Alternatively there is a console command to sync all CMS Pages and Layouts:

```
php artisan snowflake:sync
```

You can use it to clean up all unused Snowflake Keys (caution - this also deletes the attached content):

```
php artisan snowflake:sync --cleanup
```

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% 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 ~3 days

Total

4

Last Release

1598d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b879575a0352e5d84455248f309afcf19b5effa78d9d0f47131f17b68f171511?d=identicon)[skripteria](/maintainers/skripteria)

---

Top Contributors

[![arvislacis](https://avatars.githubusercontent.com/u/626982?v=4)](https://github.com/arvislacis "arvislacis (9 commits)")[![skripteria](https://avatars.githubusercontent.com/u/67191102?v=4)](https://github.com/skripteria "skripteria (9 commits)")

---

Tags

plugincmssnowflakewintercms

### Embed Badge

![Health badge](/badges/skripteria-wn-snowflake-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/skripteria-wn-snowflake-plugin/health.svg)](https://phpackages.com/packages/skripteria-wn-snowflake-plugin)
```

###  Alternatives

[winter/wn-seo-plugin

Winter CMS plugin for managing SEO tags

106.3k](/packages/winter-wn-seo-plugin)[winter/wn-sitemap-plugin

Sitemap plugin for Winter CMS

1042.6k1](/packages/winter-wn-sitemap-plugin)[winter/wn-tailwindui-plugin

Provides a TailwindUI-based skin for the Winter CMS backend.

1812.8k](/packages/winter-wn-tailwindui-plugin)

PHPackages © 2026

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