PHPackages                             gigadrive/markdown-wiki-bundle - 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. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. gigadrive/markdown-wiki-bundle

AbandonedArchivedSymfony-bundle[Parsing &amp; Serialization](/categories/parsing)

gigadrive/markdown-wiki-bundle
==============================

1.3.1(4y ago)35.9k1[2 PRs](https://github.com/Gigadrive/MarkdownWikiBundle/pulls)MITPHPPHP ^8.0

Since Nov 15Pushed 2y ago2 watchersCompare

[ Source](https://github.com/Gigadrive/MarkdownWikiBundle)[ Packagist](https://packagist.org/packages/gigadrive/markdown-wiki-bundle)[ Docs](https://github.com/Gigadrive/MarkdownWikiBundle)[ RSS](/packages/gigadrive-markdown-wiki-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (5)Dependencies (16)Versions (9)Used By (0)

MarkdownWikiBundle
==================

[](#markdownwikibundle)

This bundle allows you to create rich subpages in a Symfony project using Markdown. Pages are stored in a file cache and sourced from an external directory, for example a Git submodule.

You can use this bundle to create help sections, information wikis or any other type of sub page, that is not supposed to be hardcoded into your Symfony codebase.

Features
--------

[](#features)

- Pages sourced from Markdown files
- Page meta stored in separate YAML files
- Multi-language support without constraints for locale codes
- Custom implementations for parsing, storing and fetching pages

Requirements
------------

[](#requirements)

- Symfony 5.3+
- PHP 8

Installation
------------

[](#installation)

```
composer require gigadrive/markdown-wiki-bundle
```

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

[](#configuration)

This bundle is configured using standard Symfony bundle configuration.

```
# config/packages/markdown_wiki_bundle.yaml
markdown_wiki_bundle:
    source_directory: "%kernel.project_dir%/example-wiki/pages/"
```

- `source_directory` defines a path to the directory holding your source files. These are the files that make up the content and data of your wiki. For best practice, use a Git submodule.

Usage
-----

[](#usage)

Once you have installed and configured the bundle, you need to create a file structure for your Markdown files. You can find an example wiki for help [here](https://github.com/Gigadrive/mcskinhistory-wiki).

The file structure within your wiki directory is held simple.

- Every folder represents a level of your page's path.
- Every folder for a page needs to contain two files, one called `meta.yaml` and one called `content.md`. If you wish to support multiple languages, name these files depending on your language code. For example for an English page, call them `en.md` and `en.yaml`
- `meta.yaml` files need to contain the following keys: `title` The page's title `description` The page's description Any other keys will be passed on as "custom attributes". If you need any other data for a page, save it here.

**Example:** If you want to create a page with the path `/account/creation`, you would need a folder with the path `/account/creation`. In that folder, you would create a file named `meta.yaml` and a file named `content.md`. The first contains meta data about your page, the second contains your actual page content.

### Serving pages

[](#serving-pages)

You can find an example Controller to serve pages [here](https://github.com/Gigadrive/MarkdownWikiBundle/blob/master/src/Controller/MarkdownWikiController.php).

### Customizing the parser

[](#customizing-the-parser)

MarkdownWikiBundle is built using [Parsedown](https://github.com/erusev/parsedown), a free and open-source library to parse Markdown with PHP. This bundle registers Parsedown as a service ([`MarkdownWikiParser`](https://github.com/Gigadrive/MarkdownWikiBundle/blob/master/src/Service/MarkdownWikiParser.php)) and uses it for parsing. To overwrite parsing behavior, do the following:

First, create your own implementation of the parser:

```
namespace App\Service;

use Gigadrive\Bundle\MarkdownWikiBundle\Service\MarkdownWikiParser;

class ExampleParser extends MarkdownWikiParser {
    // TODO: Extend Parsedown
}
```

Now you have a class that extends Parsedown. Refer to [Parsedown's documentation to extend parsing behavior](https://github.com/erusev/parsedown/wiki/Tutorial:-Create-Extensions) in this new service. Once you are done, register your new parser by overwriting it in the Symfony container:

```
# config/services.yaml
services:
    app.parser:
        class: App\Service\ExampleParser

    markdownwiki.parser:
        alias: app.parser
```

### Customizing the storage

[](#customizing-the-storage)

By default, pages are cached in the Symfony file cache. This behavior can be overwritten using the [`MarkdownWikiStorageInterface`](https://github.com/Gigadrive/MarkdownWikiBundle/blob/master/src/Service/Storage/MarkdownWikiStorageInterface.php). With this interface, you can create your own storage behavior and save cached pages in Redis, Doctrine or wherever you need.

To ensure that the bundle uses your storage and not the default one, the `markdownwiki.storage` container key needs to be overwritten:

```
# config/services.yaml
services:
    markdownwiki.storage.example:
        class: App\Service\YourStorageImplementation

    markdownwiki.storage:
        alias: markdownwiki.storage.example
```

### Example Wiki

[](#example-wiki)

This bundle was created for the MCSkinHistory help section. You can find the source of it [here](https://github.com/Gigadrive/mcskinhistory-wiki) to help you understand the intended structure for a wiki like this.

### Rebuilding the caches

[](#rebuilding-the-caches)

Whenever there is an update to the wiki pages, the internal caches of the bundle need to be rebuilt. This can be done by running the following console command, which comes with this bundle:

```
php bin/console wiki:rebuild-storage-cache
```

Caches can also be rebuilt programatically through the `MarkdownWikiStorageService`:

```
use Gigadrive\Bundle\MarkdownWikiBundle\Service\MarkdownWikiStorageService;

class ExampleService {
    public function __construct(
        protected MarkdownWikiStorageService $storageService
    ) {
    }

    public function rebuildCaches() {
        $this->storageService->rebuildStorageCache();
    }
}
```

Testing
-------

[](#testing)

This bundle uses PHPUnit as a testing framework.

When developing for this bundle, use the following commands to test its functionality:

```
git submodule update --init --recursive
composer install
php ./vendor/bin/phpunit

```

Copyright and License
---------------------

[](#copyright-and-license)

This program was developed by [Mehdi Baaboura](https://github.com/Zeryther) and published by [Gigadrive UG](https://gigadrivegroup.com) under the MIT License. For more information click [here](https://github.com/Gigadrive/MarkdownWikiBundle/blob/master/LICENSE).

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 96% 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 ~30 days

Total

5

Last Release

1516d ago

### Community

Maintainers

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

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

---

Top Contributors

[![Zeryther](https://avatars.githubusercontent.com/u/5731334?v=4)](https://github.com/Zeryther "Zeryther (48 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

bundlecmsmarkdownpagephpsymfonysymfony-bundlewiki

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/gigadrive-markdown-wiki-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/gigadrive-markdown-wiki-bundle/health.svg)](https://phpackages.com/packages/gigadrive-markdown-wiki-bundle)
```

###  Alternatives

[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M650](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)

PHPackages © 2026

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