PHPackages                             mikl/mikl-seo - 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. mikl/mikl-seo

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

mikl/mikl-seo
=============

Seo module for ZF2

8911[1 issues](https://github.com/mickaelCOLLET/MiklSeo/issues)PHP

Since Oct 22Pushed 13y ago1 watchersCompare

[ Source](https://github.com/mickaelCOLLET/MiklSeo)[ Packagist](https://packagist.org/packages/mikl/mikl-seo)[ RSS](/packages/mikl-mikl-seo/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

MiklSeo
=======

[](#miklseo)

This is a simple ZF2 module that optimize your "On-page" *SEO* based on a *Zend\\Navigation\\Navigation* instance.

Configuration
-------------

[](#configuration)

The module use by default the *DefaultNavigationFactory of Zend\\Navigation* but you can use your own Navigation.

To do this, add the *navigation* key in the configuration, and specify your classname.

Also, MiklSeo use strategies to optimize your html for search engine.

MiklSeo\\config\\module.config.php :

```
return array(
    'miklSeo' => array(
        'strategies' => array(
            'title' => array(
                'placement' => 'prepend'
            ),
            'meta' => array(),
        ),
    ),
    'service_manager' => array(
        'factories' => array(
            'MiklSeoNavigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', // feel free to change the factory
        ),
    ),
);

```

Define strategies in module.config.php under *strategies* key :

- key : string, Strategy classname
- value : array, Parameters

By default, 2 strategies are available:

Title :
-------

[](#title-)

Title strategy add title tag of your current html page if active page is found. prepend or append to the root title by specify placement key parameter.

```
return array(
	'miklSeo' => array(
		'strategies' => array(
			'title' => array(
				//'tag'             => 'myCustomTag',
				//'placement'       => 'appendOrPrepend',
				//'ignoreTag'       => 'ignoreSeoTag'
			),
		),
	),
);

```

Default parameters:

- tag : title
- placement : null
- ignoreTag : ignoreTitleSeo

*ignoreTag* ignore strategy on the current node

Meta :
------

[](#meta-)

Meta strategy add meta tag of your current html page if active page is found.

```
return array(
    'miklSeo' => array(
    	'strategies' => array(
	    	'meta' => array(
	    		//'tag'             => 'myCustomTag',
				//'ignoreTag'       => 'ignoreSeoTag'
	    	),

    	),
    ),
);

```

Default parameters:

- tag : meta
- ignoreTag : noMetaSeo

*ignoreTag* bypass strategy on the current node.

Exemple :
---------

[](#exemple-)

From xml navigation file :

```

            	Home
            	Home
            	/
            	index
            	index
            	home
           	 	true

            		i am the description
            		my, keywords, list
					xxxx---x---x---x--xxxxxx-xx

                      	create a disk list
                      	create a disk list/title>
                      	create-disk

                      		another description.
                      		another,keywords, here

```

Form this *module.config.php* file:

```
return array(
    'miklSeo' => array(
        'strategies' => array(
            'title' => array(
                'placement' => 'prepend'
            ),
            'meta' => array(),
        ),
    ),
    'service_manager' => array(
        'factories' => array(
            'MiklSeoNavigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', // feel free to change the factory
        ),
    ),
);

```

Result :

( Title have already defined before and value is : My Beauty Website )

In **home** page :

```
My Beauty Website

	i am the description
    my, keywords, list
	xxxx---x---x---x--xxxxxx-xx

```

In **create** page:

```
create a disk list - My Beauty Website

	another description.
    another,keywords, here

```

Add your custom strategies :
----------------------------

[](#add-your-custom-strategies-)

You can create your custom seo strategy and add it in module.config.php To add a custom strategy your class must implement MiklSeo\\Strategy\\StrategyInterface

```
interface StrategyInterface{

	public function run();

}

```

You can also herit MiklSeo\\Strategy\\AbstractStrategy to use default comportement:

```
public function setTag($tag);
public function getTag();
public function setIgnoreTag($ignoreTag);
public function getIgnoreTag();

```

And add it in module.config.php file, under *strategy\_plugins* key :

```
return array(
    'miklSeo' => array(
        'strategies' => array(
            'title' => array(
                'placement' => 'prepend'
            ),
            'meta' => array(),
        ),
		 'strategy_plugins' => array(
			'My\Custom\Strategy\Implement\StrategyInterface' => array(
			)
		),
    ),
    'service_manager' => array(
        'factories' => array(
            'MiklSeoNavigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', // feel free to change the factory
        ),
    ),
);

```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

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

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10263?v=4)[Mikkel T. Høgh](/maintainers/Mikl)[@mikl](https://github.com/mikl)

---

Top Contributors

[![miklio](https://avatars.githubusercontent.com/u/946614?v=4)](https://github.com/miklio "miklio (17 commits)")[![blanchonvincent](https://avatars.githubusercontent.com/u/1580512?v=4)](https://github.com/blanchonvincent "blanchonvincent (2 commits)")

### Embed Badge

![Health badge](/badges/mikl-mikl-seo/health.svg)

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

###  Alternatives

[jeroennoten/laravel-ckeditor

Laravel CKEditor

5721.0k4](/packages/jeroennoten-laravel-ckeditor)

PHPackages © 2026

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