PHPackages                             ttree/ress - 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. ttree/ress

ActiveNeos-package[Utility &amp; Helpers](/categories/utility)

ttree/ress
==========

Ttree Responsive Web Design with Server-Side Component

1.0.1(7y ago)51612MITPHP

Since Nov 1Pushed 1y ago3 watchersCompare

[ Source](https://github.com/ttreeagency/Ttree.Ress)[ Packagist](https://packagist.org/packages/ttree/ress)[ RSS](/packages/ttree-ress/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (3)Used By (0)

Ttree - Responsive Web Design with Server-Side Component
========================================================

[](#ttree---responsive-web-design-with-server-side-component)

Description
-----------

[](#description)

Responsive Web Design is really really trendy (and mandatory) today. But in some cases it's not the best solution.

Most responsive website serve exactly the same amount of bits to desktop, tablet or mobile user. Many mobile user will leave your website if the loading time is to long. Or sometimes your design need a different markup to support your design decisions.

If you are intersted by this topics, you can read those articles:

- [You May Be Losing Users If Responsive Web Design Is Your Only Mobile Strategy](http://www.smashingmagazine.com/2014/07/22/responsive-web-design-should-not-be-your-only-mobile-strategy/)
- [Improve Mobile Support With Server-Side-Enhanced Responsive Design](http://www.smashingmagazine.com/2013/04/09/improve-mobile-support-with-server-side-enhanced-responsive-design/)
- [RESS: Responsive Design + Server Side Components](http://www.lukew.com/ff/entry.asp?1392)

What's include in this package ?
--------------------------------

[](#whats-include-in-this-package-)

This package include the library [MobileDetect](http://mobiledetect.net) and extend the Action Request class with two new methods:

- ActionRequest::isMobile()
- ActionRequest::isTablet()

You can use those methods in your own controller, Fusion prototypes, ...

No magic everything is configurable
-----------------------------------

[](#no-magic-everything-is-configurable)

### Tweak a Fusion prototype to change the rendering by device type

[](#tweak-a-fusion-prototype-to-change-the-rendering-by-device-type)

```
prototype(Your.Package.CustomElement) < prototype(Neos.Fusion:Case) {
    default {
        condition = ${request.mobile}
        itemRenderer = Your.Package.CustomElementDefault
    }
    default {
        condition = true
        itemRenderer = Your.Package.CustomElementDefault
    }

    @cache {
        mode = 'dynamic'
        entryIdentifier {
          node = ${node}
        }
        entryDiscriminator = ${request.mobile : 'mobile' ? 'default'}
        context {
                1 = 'node'
                2 = 'documentNode'
        }
        entryTags {
                1 = ${'Node_' + node.identifier}
        }
    }
}

```

By using the `dynamic` caching mode you don't need to configure the upper cache segments.

### Completly different markup for Mobile, Tablet &amp; Desktop

[](#completly-different-markup-for-mobile-tablet--desktop)

You can override your `root` Fusion conditions to select different rendering for different type of client:

```
root {
    mobile {
        @position = 'before default'
        condition = ${request.mobile && Configuration.setting('Ttree.Ress.enable.mobile') == true}
        type = 'Your.Package:MobilePage'
    }
    tablet {
        @position = 'before default'
        condition = ${request.tablet && Configuration.setting('Ttree.Ress.enable.tablet') == true}
        type = 'Your.Package:TabletPage'
    }
    @cache {
        entryIdentifier {
            mobile = ${request.mobile && Configuration.setting('Ttree.Ress.enable.mobile') == true ? 'mobile' : ''}
            tablet = ${request.tablet && Configuration.setting('Ttree.Ress.enable.tablet') == true ? 'tablet' : ''}
        }
    }
}

```

In this example the root cache entry identifier are configured correctly for mobile and table cache. Please make sure to configure your other cache segments correctly.

Sponsors &amp; Contributors
---------------------------

[](#sponsors--contributors)

The development of this package is sponsored by ttree () and techniconcept ().

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 96.5% 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 ~230 days

Total

2

Last Release

2889d ago

### Community

Maintainers

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

---

Top Contributors

[![dfeyer](https://avatars.githubusercontent.com/u/221173?v=4)](https://github.com/dfeyer "dfeyer (83 commits)")[![tbrodard](https://avatars.githubusercontent.com/u/1318737?v=4)](https://github.com/tbrodard "tbrodard (2 commits)")[![jonathantechniconcept](https://avatars.githubusercontent.com/u/29302103?v=4)](https://github.com/jonathantechniconcept "jonathantechniconcept (1 commits)")

### Embed Badge

![Health badge](/badges/ttree-ress/health.svg)

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

###  Alternatives

[jenssegers/agent

Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect

4.8k67.8M440](/packages/jenssegers-agent)[shetabit/visitor

Laravel visitor

565578.2k8](/packages/shetabit-visitor)[kaufmanndigital/gdpr-cookieconsent

A ready-to-run package, that integrates an advanced cookie consent banner into your Neos CMS site.

2540.7k](/packages/kaufmanndigital-gdpr-cookieconsent)[shel/neos-colorpicker

A plugin for Neos CMS which provides a colorpicker editor

1494.4k6](/packages/shel-neos-colorpicker)[ziming/laravel-email-sniper-link

Laravel package to generate email sniper links based on given email

1519.9k](/packages/ziming-laravel-email-sniper-link)[shel/neos-commandbar

A commandbar (CMD+K) for Neos CMS

1614.6k1](/packages/shel-neos-commandbar)

PHPackages © 2026

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