https://github.com/eth8505/zend-mvc-themer
Module for Theming Zend\Mvc apps
https://github.com/eth8505/zend-mvc-themer
theming zendframework zendframework3 zf3-mvc
Last synced: 5 months ago
JSON representation
Module for Theming Zend\Mvc apps
- Host: GitHub
- URL: https://github.com/eth8505/zend-mvc-themer
- Owner: eth8505
- License: mit
- Archived: true
- Created: 2018-03-12T18:53:53.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-09-11T10:04:15.000Z (almost 6 years ago)
- Last Synced: 2025-11-27T14:57:30.982Z (7 months ago)
- Topics: theming, zendframework, zendframework3, zf3-mvc
- Language: PHP
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Eth8505\ZendMvcThemer - Module for Theming Zend\Mvc apps
==================================================================
!!!IMPORTANT!!! This package is no longer maintained, as Zendframework was renamed to laminas. Please use eth85055/laminas-mvc-themer instead.
The **Eth8585\ZendMvcThemer** moduole adds theming support to Zend\Mvc apps.
## How to install
Install `eth8505/zend-mvc-themer` package via composer.
~~~bash
$ composer require eth8505/zend-mvc-themer
~~~
Load the module in your `application.config.php` file like so:
~~~php
[
'Eth8585\ZendMvcThemer\\',
// ...
],
];
~~~
## How to use
### 1 Creating a theme
As described above, themes need to be registered with the theme plugin manager. A theme must implement the
`ThemeInterface`. All methods exept for `getName` may return an empty array. Check the `DefaultTheme` class
for an empty implementation of a theme specifying only a name.
#### 1.1 Specifying custom stylesheets
Implement the `getStylesheet` method in your theme, and return an array. Note that all paths will be pushed through
the `BasePath` view helper and hence must be relative to your `public/` directory.
~~~php
'one',
'heading2' => [
'key1' => 'test'
]
];
}
// ...
}
~~~
Theme variables are not automatically injected into your view models, as this could interfere with whatever you
set in your view models. However, the module provides a `theme()` view helper allowing access to the theme variables.
~~~php
= $this->theme()->var('heading1') ?>
= $this->theme()->var('heading2/key1') ?>
~~~
#### 1.4 Specifying custom meta tags
Meta tags are a little more complicated than scripts, styles or variables, as there are two basic types, `name` and
`http-equiv`. With this module, we use the same basic-syntax for both of them, specifying the `type` as a key in the
definition array.
To implement custom meta tags, implement get `getMetaTags` method in your theme.
~~~php
'name',
'name' => 'robots',
'content' => 'noindex,nofollow'
],
[
'type' => 'http-equiv',
'name' => 'refresh',
'content' => '30'
]
];
}
// ...
}
~~~
### 2. Register with service manager
You can either register your themes with the service manager via the config in your `module.config.php`:
~~~php
[
'invokables' => [
MyTheme::class
]
]
];
~~~
or register it in your module class using the `ThemeProviderInterface`:
~~~php
[
MyTheme::class
]
];
}
}
~~~
### 3. Resolving themes
Per default, theme resolving is done using the `ConfigResolver` class, that simply checks the config
`zend-mvc-themer/resolver` config, and injects the theme as the `theme` service.
#### 3.1 Custom theme resolvers
In addition to the default config-based theme resolver, you can also specify a custom resolver class. This can be any
implementation of `ThemeResolverInterface` of your choosing, reading the theme from the session (if you want to provide
a selection of themes to your users).
Example implementation of a simple hostname-based theme resolver:
~~~php
request = $request;
$this->pluginManager = $pluginManager;
}
public function resolve() : ThemeInterface {
if ($this->request->getUri()->getHost() === 'my.awesome.host') {
$theme = ThemeOne::class;
} else {
$theme = ThemeTwo::class;
}
return $this->pluginManager->get($theme);
}
}
~~~